我正在尝试从外部源(Arduino)解码8位(或1个字节)的数据,并使用Python将它们转换为数字。
这是我正在使用的代码:
clean
使用它,我可以打开端口并读取Arduino发送的数据。
当我构建它时,我收到此错误:
arduinoData = serial.Serial("com4", 9600)
while True:
if arduinoData.inWaiting()>0:
print "Reading data"
arduinoString = arduinoData.read(arduinoData.inWaiting())
ardString= int(arduinoString, 2)
for string in ardString:
print string
else:
print "There is no data"
我试图用很多变化解码数据,但我无法得到我需要的数字。我该如何转换这些数据?
希望你能帮助我。
我设法使用以下行获得二进制数字(我希望):
ValueError: invalid literal for int() with base 2: '\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\
这一行给了我这个错误:
while True:
if arduinoData.inWaiting()>0:
print "Leyendo datos"
arduinoString = arduinoData.read(arduinoData.inWaiting())
ardString = ' '.join(format(ord(x), 'b') for x in arduinoString)
for string in ardString:
string = int(ardString, 10)
print string
这些二进制文件是对的吗?我试图将它们转换为整数,如上所示,但它给我带来了错误。
答案 0 :(得分:1)
ord
就是你所需要的,它会产生一个int
,然后你就完成了。
bytes = map(ord, arduinoString)
for byte in bytes:
print byte