从端口显示数字会出错
Showing numbers from port gets an error
我正在尝试解码来自外部源(Arduino)的 8 位(或 1 字节)数据,并使用 Python 将它们转换为数字。
这是我使用的代码:
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"
使用它,我可以打开端口并读取Arduino发送的数据。
当我构建这个时,我得到这个错误:
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
这行给我这个错误:
string = int(ardString, 2)
ValueError: invalid literal for int() with base 2: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 '
这些二进制文件对吗?正如您在上面看到的,我试图将它们转换为整数,但它给了我那个错误。
ord
就是你所需要的,它会产生一个 int
然后你就完成了。
bytes = map(ord, arduinoString)
for byte in bytes:
print byte
我正在尝试解码来自外部源(Arduino)的 8 位(或 1 字节)数据,并使用 Python 将它们转换为数字。
这是我使用的代码:
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"
使用它,我可以打开端口并读取Arduino发送的数据。
当我构建这个时,我得到这个错误:
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
这行给我这个错误:
string = int(ardString, 2)
ValueError: invalid literal for int() with base 2: '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 '
这些二进制文件对吗?正如您在上面看到的,我试图将它们转换为整数,但它给了我那个错误。
ord
就是你所需要的,它会产生一个 int
然后你就完成了。
bytes = map(ord, arduinoString)
for byte in bytes:
print byte