如何正确地从端口写入和读取字节?获取空字节或错误字节
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)
我试图用我的串行接口控制循环器,在导入 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)