Python中UDP套接字上的串行数据

2024-04-28 10:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我也许走错了路,但这就是我为什么要问这个问题。在

我有一个连接到SOC的串行数据源,然后通过UDP将串行数据流传输到服务器上的套接字。原始数据的波特率是57600,我尝试使用Python来接收和解析数据。我通过下面的脚本测试了我在端口上成功地接收到数据(可以在这里找到:https://wiki.python.org/moin/UdpCommunication

import socket

UDP_IP = "MY IP"
UDP_PORT = My PORT

sock = socket.socket(socket.AF_INET, # Internet
                     socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))

while True:
   data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
   print "received message:", data

因为我没有用Python中的.serial lib读取数据,也没有设置波特率来读取数据,这一切都是乱码,正如预期的那样。我的最终目标是能够接收和解析数据以进行服务器端处理,并让另一个客户机连接到从服务器(代理)返回的原始数据流,这就是为什么我不直接从设备上的串行端口处理数据。在

所以我的问题是,如何让Python把套接字当作一个串行端口来处理,我可以设置波特率,并导入serial and.read from?我似乎在网上找不到任何让我觉得我忽略了一些简单的事情或是试图做一些愚蠢的事情的例子。在

阴暗面


Tags: 数据端口ip服务器data原始数据portserial
2条回答

以事实为基础

首先要从系统芯片(SOC)一路向上总结事实:

  1. 始发者串行位流参数:=57600Bd,X-<;dataBIT>;Y-<;stopBIT>;,Z-<;parityBIT>
  2. 从原始比特流接收数据去帧处理的中介器
  3. 中介上游发送到服务器的过程集成需要规范(多方握手的FSA模型、故障检测、故障状态恢复、日志记录…)在
  4. T、 不列颠哥伦比亚省。。。在

按有效要求清单设计

有一些东西只是一堆SLOC的一行程序。根据已确认的需求清单进行仔细设计。它既可以拯救你的一方,也可以拯救合作的团队。在

模型试验

在从简单的部分发展到更复杂的多方场景的过程中,值得花一点时间进行动态测试。在

集成到更智能的框架上

完全是浪费时间来重新发明轮子。使用一个智能框架进行服务器端集成将在问题域特定任务上释放大量时间和精力,而不是浪费前者和后者来编写另一个socket框架(在大多数情况下注定会失败…)在

尝试ZeroMQnanomsg可缩放的正式通信模式框架,以便智能服务从串行位流源发送去帧数据,您就快到了。在

你不能把插座当作串行线。套接字只能发送和接收数据(TCP的数据流,UDP的数据包)。如果您需要一个设备来控制SOC上的串行线,那么您需要在该套接字上构建一个适当的控制协议,即使用另一个套接字(如FTP)进行控制,或者使用带内控制(in-band control)并区分控制和数据(如HTTP)。当然,连接的双方都必须理解这个协议。在

相关问题 更多 >