如何正确地从端口写入和读取字节?获取空字节或错误字节

How to write and read Bytes from Port correctly? Getting either null or wrong bytes

我试图用我的串行接口控制循环器,在导入 Pyserial 并打开端口后,我尝试写入和读取端口的数据。首先我得到了错误的数据,所以我写了两行来刷新输入和输出。现在我得到空数据或这个字节:b'?\r\n'.

也许我的命令有问题。我不知道我是否必须处理 cr 或 lf。 (马车return)

命令示例:

命令:'R S1',cr 答案:S1+0070.00$

这是我的代码。我尝试在端口上写入 R S1,然后想读取端口。

while(i <= 3):
    ser.write(b'R S1')
    print(i)
    contents = ser.readline()
    print(contents)
    i = i + 1

我期望当前温度的结果是 28.5°C。

根据您发布的命令,如果您的设备手册是 this one,我会假设您在发送命令后缺少 CR(回车 return)字符。

尝试将此行写入端口:

ser.write(b'R S1\r')

您阅读的部分应该没问题,您已经阅读到 <CR><LF>(回车 return + 换行)字符。但考虑到您知道它们,您也可以读取您期望的确切字节数。特别是对于这个命令,它将是 13 个字节:

contents=ser.read(13)