从端口显示数字会出错

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