如何检查PySerial port.write()是否写了什么?

时间:2017-05-29 03:43:25

标签: python-3.x pyserial

我已经针对类似问题herehere发布了几个问题,但经过周末的思考和排查,我想探索更多可能的原因,但缺乏知识。

我应该如何检查我当前的代码是否正在通过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:数据流7F7FD30000000030C6A87F9978B9302 ....始终存在,并在超时时显示。因此,我不确定这是否是实际阅读的开始?或者只是一个随机读数。

0 个答案:

没有答案