我通过wifi接收UDP数据包,在PC上运行简单的python脚本。服务器和PC位于同一子网中。
服务器每20 ms左右发送15 uint_8(每个4字节)。收到的数据似乎已损坏(非十六进制值)。任何反馈为什么会发生这种情况非常感谢。 例如,我得到这样的东西,
'\xb3}fC\xb7v\t>\xc8X\xd2=g\x8e1\xbf\xe6D3\xbf\x00\x00\x13\xc3\xc8g\x1b@\xc2\x12\xb2B\x01\x000=\x02\xc0~?\x01\x00\x94<\x00\x00\x00\x00\x00\x00\x00\x00\x00
@\x9c\xbe\xac\xc9V@', ('192.168.4.1', 4097))
from socket import *
import time
HOST = '192.168.4.10'
PORT = 9048
address = (HOST, PORT)
client_socket = socket(AF_INET, SOCK_DGRAM) #Set Up the Socket
client_socket.bind((HOST, PORT))
client_socket.settimeout(5) #only wait 5 second for a response, otherwise timeout
while(1): #Main Loop
single_var = client_socket.recvfrom(1024)
print single_var #Print the response from Arduino
time.sleep(10/1000000) # sleep 10 microseconds
答案 0 :(得分:1)
print语句不知道您想要十六进制输出,因此它将具有有效字符表示形式的十六进制值解释为字符。如果要将其打印为十六进制字节,请参阅Print a string as hex bytes中的解决方案。
即。做:
print ":".join("{:02x}".format(ord(c)) for c in single_var)