Python 3.x 如何检查PySerial port.write()是否写入了任何内容?

Python 3.x 如何检查PySerial port.write()是否写入了任何内容?,python-3.x,pyserial,Python 3.x,Pyserial,我已经发布了几个关于类似问题的问题,但在周末思考和排除故障后,我想探索更多可能的原因,但缺乏知识 如何检查ion我的当前代码是否正在向通过USB-RS232连接的传感器写入任何内容。这是我的密码 port = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=20, bytesize=8, rtscts =1,dsrdtr=1) f_w = open('/home/ryan/python_serial_output.txt','r+') f

我已经发布了几个关于类似问题的问题,但在周末思考和排除故障后,我想探索更多可能的原因,但缺乏知识

如何检查ion我的当前代码是否正在向通过USB-RS232连接的传感器写入任何内容。这是我的密码

port = serial.Serial("/dev/ttyUSB0", baudrate=9600, timeout=20, bytesize=8, rtscts =1,dsrdtr=1)
f_w = open('/home/ryan/python_serial_output.txt','r+')
f_o = open('/home/ryan/python_serial_parse.txt','w')

port.send_break()
sys_reply = port.read(100000)
sys_reply_str = sys_reply.decode('cp437')
print(sys_reply_str)
sys_reply_str_haha = sys_reply_str.replace("\r","")
sys_reply_str_haha = sys_reply_str_haha.replace("\n","")
i = list(sys_reply_str_haha)
if str(i[-1]) == '>':
    port.reset_input_buffer()
    print("ip_b_reset")
    port.reset_output_buffer()
    print("op_b_reset")
    print(port.writable())      

    ip = 'CR1'
    ip_en = ip.encode('cp437')
    port.write(ip_en)
    read_syscheck = port.read(1000)
    read_syscheck_str = read_syscheck.decode('cp437')
    print(read_syscheck_str)
使用相同的解码格式,我尝试写入端口,应该会收到回复

 >CR1
 *[Parameters set to FACTORY defaults]*
相反,我得到了

Sensor 2009
All rights reserved.
Firmware Version: 34.11     

>
ip_b_reset
op_b_reset
True    
CR1
7F7FD30000000030C6A87F9978B9302....
这就是为什么我断定我可能没有给传感器写信


PS:数据流7F7FD300000030C6A87F9978B9302。。。。始终存在,并在超时时显示。因此,我不确定这是否是实际阅读的开始?或者只是一个随机读数。

传感器返回的数据不太可能使用utf-8编码。@jasonharper嗨!在port.send_break之后,我对控制台进行了读取,所有内容都以清晰的文本显示出来。使用“utf-8”编码的。然而,就在代码下面几行,utf-8导致了问题,这非常奇怪。这就是为什么我怀疑写端口(或者超时配置可能会发送未编码为utf-8的垃圾数据,从而触发错误)是否有类似编码的建议?我倾向于使用UTF-8,因为它在读数的第一个实例中工作。@jasonharper我听从了你的建议,很高兴说你是对的!UTF不是正确的编码方法,尽管在发送中断后给了我结果。解码bia CP437提供可理解的数据流和来自传感器的清晰输入。但是,在发送CR1命令后,我仍然无法从传感器获得所需的响应。我是否错误地执行了.write()函数?您确定
CR1
命令不需要回车符和/或换行符来终止它吗?@jasonharper感谢您的提示。在将输入编码为“CP437”标准之前,我已将其更改为“CR1\r\n”。然而,我仍然无法得到我期待的答复。