如下是Python2的代码,向串口发送数据,请问如何改为Python3?

新手上路,请多包涵
# coding=utf-8
import serial

cmd = [0xa5, 0x00, 0x09, 0x0a, 0xcc, 0x33, 0xc3, 0x3c, 0xa6]

with serial.Serial('/dev/ttyAMA0', 115200, timeout=1) as ser:
    for i in cmd:
        k = chr(i)
        ser.write(k)
    s = ser.read(10)
    print(s)

既然Python2传进去str的是Python3的bytes,为什么我在Python3中将最后要发送的数据转换成bytes后下位机会报错?

阅读 2.3k
1 个回答

chr得到的是整数类型。
我都是把数改成16进制的字符串,然后发送的数据。发送的都是['a5','00'...]这种。。。
不清楚有没有更好的方法。。。

import binascii
cmd = [0xa5, 0x00, 0x09, 0x0a, 0xcc, 0x33, 0xc3, 0x3c, 0xa6]
with serial.Serial('/dev/ttyAMA0', 115200, timeout=1) as ser:
    for i in cmd:
        k = hex(i)[2:]
        if len(k) < 2: 
            k = '0' + k
        ser.write(binascii.a2b_hex(k))
    s = ser.read(10)
    print(s)

推荐问题