gpt4 book ai didi

python - 在Python中接收UDP时处理空字符

转载 作者:行者123 更新时间:2023-12-03 11:55:52 26 4
gpt4 key购买 nike

我有一个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()进行了查看,但是没有找到我理解的任何示例,任何帮助或指针都将不胜感激。
谢谢
史蒂夫

最佳答案

您不能将二进制数据视为以空字符结尾的字符串,特别是不能使用字符串函数来确定其长度。数据报包含接收到的数据的长度。当然,Python提供了一种从数据报中获取数据的方法吗?

关于python - 在Python中接收UDP时处理空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18801513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com