我有一个设备 ( 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/