我已经编写了一个代码,其中我需要接收3个字节的代码,其中接收2个补码数为24位并且我处理该数字,我试图在列表中接收相同的并尝试初始化它在收到一组数据之后是我为上面写的代码
Received_Data=[] --- initialising the list
while cnt<=18:
input_data = ser.read(3)
Received_Data.append(input_data.encode("hex"))
cnt = cnt+1
cnt=0
在此之后我的代码继续处理收到的2的补码 现在这里的问题是如果没有收到数据,代码就不应该出来了 input_data = ser.read(3) 如果我已经正确地完成了它,或者有任何其他更好的方法来编码
,任何人都可以对它有所了解答案 0 :(得分:0)
您不知道从端口获得多少数据。有时会有数据,但可能多于或少于3个字节。我也不太了解你的问题,但我认为你不想处理任何命令,直到你得到它们,对吗?你想要在列表中存储18个3字节的命令吗?那么我可以建议这样的事情吗?
received_data = [] --- initialising the list
cnt = 0
inbytes = ""
while cnt <= 18:
while len(inbytes) < 3:
inbytes += ser.read(3)
while len(inbytes) >= 3:
received_data.append(inbytes[:3].encode("hex"))
inbytes = inbytes[3:]
cnt += 1
我自己没有运行此代码,但我希望它可以帮助您实现这一概念。