Micropython逐字节循环通过UART发送数据触发buffer协议报错如何解决?
MicroPython UART逐字节发送报错解决
报错原因
遍历bytes类型对象时,每次迭代取出的元素是整数类型,而非单字节的bytes对象。而MicroPython的UART.write()接口要求传入实现了缓冲区协议的对象(比如bytes、bytearray),直接传入整数不符合参数要求,因此触发类型错误。
解决方案
可根据实际使用场景二选一:
- 无严格逐字节发送要求的场景,直接传入完整
bytes对象即可,运行效率更高:
c = b'\x00\x00\x0c\x00' uart_gps.write(c)
- 必须逐字节发送的场景,每次将取出的整数转为单字节
bytes对象再发送即可:
c = b'\x00\x00\x0c\x00' for b in c: uart_gps.write(bytes([b]))
内容的提问来源于stack exchange,提问作者andtompoi
相关产品推荐
相关产品推荐

