0

我正在尝试通过串行 COM 端口与探头通信。制造商在 PuTTY ec 中发出一些命令。更改测量单位或读取一些值。我在 python 中编写代码,但我什么也没收到,或者我不知道我收到了什么。这是 PuTTY 配置

1

2

3

接下来是制造商为 PuTTY 提供的命令示例。

4

这是 PuTTY 终端中的代码:

5

我在 Python 中的代码:

import serial

ser = serial.Serial()
ser.port = 'COM5'
ser.baudrate = 19200
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.xonxoff = 0
ser.rtscts = 0
ser.dsrdtr = 0
ser.stopbits = 1
ser.timeout = 1
ser.open()

if ser.isOpen():
    print(ser.name + ' is open...')
    while True:
        cmd = input("Enter command or 'exit':")
        if cmd == 'exit':
            ser.close()
            break
        else:
            # ser.write(cmd.encode('ascii'))
            # ser.write(bytes(cmd, 'utf-8'))
            ser.write(str.encode(cmd + '\r\n')) #
            out = ser.readline().decode("utf-8").strip()
            print('Receiving... ' + str(out))

这是我收到的:

Enter command or 'exit':UNIT
Receiving...
Enter command or 'exit':exit
4

1 回答 1

0

编辑:您可以将超时值传递给您的串行实例。尝试增加这个,虽然我不认为这就是问题所在。您与之通信的设备更有可能不会在其消息末尾发送换行符/回车符。在这种情况下,您必须使用read(). 但是您应该能够通过选中一个类似display newline characters或的框来检查设备发送了哪些字符display CR/LF。我不确定腻子是否支持这一点,因为我并没有真正将它用作串行监视器,但它可能支持。

于 2022-03-04T12:16:09.917 回答