【问题标题】:Arduino 'Error communicating...unicode strings are not supported, please encode to bytes' PySerialArduino '错误通信...不支持 unicode 字符串,请编码为字节' PySerial
【发布时间】:2016-09-25 22:05:30
【问题描述】:

我正在尝试通过 PySerial 连接到我的 MultiWii,但是我不断收到此错误。

Error communicating...unicode strings are not supported, please encode to bytes: '$M<\x00ll'

这是失败的代码部分:

BASIC="\x24\x4d\x3c\x00"
MSP_ATTITUDE=BASIC+"\x6C\x6C"
ser.write(MSP_ATTITUDE)

我尝试使用 .encode() 对字符串进行编码,但出现此错误:

Error communicating...'bytes' object has no attribute 'encode'

我试过 bytearray(MSP_ATTITUDE,'ascii') 并得到了之前的错误。

我只是问这个问题,因为这个错误圈实际上没有意义。任何人都可以帮忙吗?如果有帮助,我可以提供有关代码的更多信息。

提前致谢

【问题讨论】:

    标签: python-3.x arduino pyserial


    【解决方案1】:

    不要创建字符串。

    字符串用于 unicode 文本,\x24\x4d\x3c\x00 不是。

    对于任意字节,使用字节串。您可以使用b'' 直接构建它们。

    >>> type('foo')
    <class 'str'>
    
    >>> type(b'foo')
    <class 'bytes'>
    

    【讨论】:

      【解决方案2】:

      你应该试试:

      BASIC = b"\x24\x4d\x3c\x00"
      MSP_ATTITUDE = BASIC + b"\x6C\x6C"
      

      因此它们被视为 bytes 对象而不是 unicode 字符串。

      【讨论】:

        猜你喜欢
        • 2016-06-09
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        • 2014-10-18
        • 1970-01-01
        • 2013-10-29
        • 1970-01-01
        相关资源
        最近更新 更多