python - pySerial:如何检查当前波特率

标签 python serial-port pyserial

我有一个设备 ( GT511C3 fingerprint scanner ),我正在连接到 Raspberry Pi 并使用 Python Serial module 对其进行编程。 GT511设备的默认波特率为9600,并且可以更改它。一旦您更改 GT511 波特率,它将保留此设置直到下次重新启动。

问题是我是否有办法检查所连接设备的当前波特率(如果设备已经编程并由不同的主机连接)。我知道可以使用 stty 来做到这一点:

$> stty < /dev/ttyAMA0
speed 57600 bud; line = 0
...

有没有办法使用Python串行或任何其他模块来做到这一点,或者我是否必须编写一个迭代检查程序来找出它?

更新1: 我当前用来查找可接受的波特率的解决方案:

ser = serial.Serial('/dev/ttyAMA0')
ser.timeout = 0.5
for baudrate in ser.BAUDRATES:
    if 9600 <= baudrate <= 115200:
        ser.baudrate = baudrate
        ser.write(packet)
        resp = ser.read()
        if resp != '':
            break
if ser.baudrate > 115200:
    raise RuntimeError("Couldn't find appropriate baud rate!")

更新2: 请停止建议 serial.baudrate - 这不是我要问的。

最佳答案

也许您应该使用stty,直到找到更好的替代方案。 您可以从Python代码中调用它并解析结果以获得您需要的内容。 这是一个基本示例(未经测试):

import subprocess
import shlex

def get_baudrate(device):
    command = 'stty < {0}'.format(device)
    proc_retval = subprocess.check_output(shlex.split(command))
    baudrate = int(proc_retval.split()[1])
    return baudrate

关于python - pySerial:如何检查当前波特率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38937903/

相关文章:

python - 函数 def 中的 True & False

delphi - 串行端口 WriteFile() 卡住

c - 串行端口(AT 命令)不断传输单个字节或 ERROR

python - 重新连接几次后,通过 USB 端口与 Python 的串行通信停止工作

python - 有没有办法在 pandas 数据框中显示分类自变量的回归系数?

python - 用 julia 计算主值积分

python - 在h.264中以低延迟从Python中的opencv流rtsp视频

javascript - 从 NodeJs 串口读取数据

python - Pyserial 非轮询读取

linux - 串行端口未正确刷新