我有一个 python 脚本,我正在运行通过 UDP 从 Arduino 的模拟输入接收数据。
import socket
UDP_IP = "10.0.0.222"
UDP_PORT = 50000
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))
while True:
data, addr = sock.recvfrom(12) # buffer size is 32 bytes
print len(data) #check length of data recived
sensors = struct.unpack('>hhhhhh', data)
print sensors
Arduino 以 12 字节的数据包发送包含 6 个模拟读数的数据包。每个读数都是一个 2 字节的 16 位整数,首先是 LSB,然后是 MSB。我的脚本工作正常,直到 Arduino 上的读数之一降至 255 以下。此时,Arduino 发送一个空字符 \x00。发生这种情况时,脚本将不再读取任何数据并停止运行。我认为我遇到的问题是将 UDP 数据读入字符串,我已经研究过使用 sock.recv_into() 但没有找到任何我理解的示例,任何帮助或指针将不胜感激。谢谢史蒂夫