IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> python upd接收数据+动态折线图+线程间通信+字节计算 -> 正文阅读

[网络协议]python upd接收数据+动态折线图+线程间通信+字节计算

功能需求
1.发送方通过UDP发送到我这原始数据(十六进制),将原始数据按照n个字节拆分并计算成int数组。
2.将得到的数据通过动态折线图显示出来。
3.线程间通信(队列),因为动态计算函数也是一个死循环。
代码如下:

import queue
import socket
import threading

from matplotlib import pyplot as plt, animation
from matplotlib.animation import FuncAnimation
import numpy as np
import  time
#本机IP和用来接收UDP消息的端口号
ip="10.10.10.103"
port=775
data=[]
#创建一个队列
q=queue.Queue()
class thread(threading.Thread):
    def __init__(self,q):
        threading.Thread.__init__(self)
        self.q=q
    def run(self):
        # 1创建套接字
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 2.绑定一个本地信息
        localaddr = (ip, port)  # 必须绑定自己电脑IP和port
        udp_socket.bind(localaddr)
        #获取UDP数据
        while True:
            recv_data = udp_socket.recvfrom(20000)
            recv_msg = recv_data[0]  # 信息内容
            send_addr = recv_data[1]  # 信息地址
            print("dat:",recv_msg)
            self.q.put(recv_msg)
         #5.退出套接字
        udp_socket.close()
def main():
    lock = threading.Lock()
    t1 = thread(q)
    t1.start()
    # 初始化画布
    fig = plt.figure()
    plt.grid(ls='--')
    plt.xlim(0, 8192)
    plt.ylim(0, 65535)
    # x = np.linspace(0, 2 * np.pi, 40)
    # print("x",x)
    # y=np.random.randint(0,50,size = 40)
    # print("y",y)
    x = [1, 2]
    y = [1, 2]
    # 绘制起始图
    myplot = plt.plot(x, y)[0]
    print(type(myplot))
    def updata(n):
        if not q.empty():
            b=q.get()
            #按照字节转换为字节数组
            #one=bytesToArrary(b,2)
            two=bytesToArrary(b,2)
            # three=bytesToArrary(b,3)
            print("data123",b,type(b))
            print("two:",two)
            xs = indexToList(two)
            ys = two
            # xs=[n+1,n+2,n+3]
            # ys=[n+3,n+4,n+3]
            print("xs",xs)
            print("ys",ys)
            myplot.set_data(xs, ys)
            return myplot
    ani = animation.FuncAnimation(fig=fig, func=updata, frames=np.arange(0, 100), interval=10)
    plt.show()
#字节数组转化
def bytesToArrary(bytes,n):
    data = []
    ls = [bytes[i:i + n] for i in range(len(bytes)) if i % n== 0]  # 每3个字节分隔组成list
    #将字节数组转换为int数组
    for item in ls:
        data.append(int.from_bytes(item, byteorder='big', signed=False))
    return data
#将列表的索引转化为列表
def indexToList(list):
    a=[]
    b = range(1, len(list) + 1)
    for i in b:
        a.append(i)
    return a
if __name__ == "__main__":
   main()


  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-17 13:06:20  更:2021-11-17 13:07:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:31:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码