在 Python3.8 中通过串行 (USB-RS232) 端口发送 ASCII 命令时是否需要一些特殊编码?

Is there some special encoding required when sending ASCII commands over Serial (USB-RS232) port in Python3.8?

首先,我也研究了很多地方都回答了这个问题,但答案对我不起作用。

我正在尝试通过串行端口向 PCBA 发送 ASCII 命令,然后尝试接收响应。

硬件设置:

  1. 计算机
  2. USB-RS232 数据线
  3. PCBA

软件: Python3.8

我已经通过 RS232 终端 (realterm) 发送了命令,它们运行良好(LED 亮起),但无法使用 python 实现相同的功能。有问题的命令是“led_r_on”。 是的,我收到“COM5 is open”提示,这意味着 COM5 处于活动状态。

感谢您的帮助!

代码如下: 导入序列号 导入时间

from time import sleep
from serial import Serial

port = 'COM5'
baud = 115200

ser = serial.Serial(port, baud, timeout=2)
if ser.isOpen():
  print(ser.name + ' is open...')

sleep(1)

ser.write(b'led_r_on')
print(ser.readline(1000))

因为你没有提供任何关于你使用的pcba的信息。我只是假设,您在字节序列中缺少某种结束定界符。现在有很多方法可以结束 t运行smission over serial。我 运行 遇到的最频繁的是这两个:b'led_r_on\r\n' 或只是 b'led_r_on\n'。尝试将 ser.write() 函数中的字节更改为此。如果这不起作用,您可能需要使用这个:b'led_r_on\x04' 这将发送 EOT(T运行smission 结束)ASCII 字符。但我认为不需要这个。