在 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 命令,然后尝试接收响应。
硬件设置:
- 计算机
- USB-RS232 数据线
- 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 字符。但我认为不需要这个。
首先,我也研究了很多地方都回答了这个问题,但答案对我不起作用。
我正在尝试通过串行端口向 PCBA 发送 ASCII 命令,然后尝试接收响应。
硬件设置:
- 计算机
- USB-RS232 数据线
- 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 字符。但我认为不需要这个。