【问题标题】:Is there some special encoding required when sending ASCII commands over Serial (USB-RS232) port in Python3.8?在 Python3.8 中通过串行(USB-RS232)端口发送 ASCII 命令时是否需要一些特殊编码?
【发布时间】:2023-03-15 09:07:01
【问题描述】:

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

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

硬件设置:

  1. 电脑
  2. USB-RS232 电缆
  3. PCBA

软件: Python 3.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))

【问题讨论】:

  • 数据末尾不是缺少回车码吗?

标签: python visual-studio-code serial-port


【解决方案1】:

由于您没有提供有关您正在使用的 pcba 的任何信息。我只是假设,您的字节序列中缺少某种结束分隔符。现在有很多方法可以结束串行传输。我遇到的最常见的是这两个:b'led_r_on\r\n' 或只是b'led_r_on\n'。尝试将 ser.write() 函数中的字节更改为此。如果这不起作用,您可能需要使用:b'led_r_on\x04' 这将发送 EOT(传输结束)ASCII 字符。但我认为这不是必需的。

【讨论】:

  • b'led_r_on\r\n' 有效!!非常感谢 - 非常头疼。
猜你喜欢
  • 2017-01-19
  • 2021-11-26
  • 1970-01-01
  • 2014-09-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多