我想记录设备的串行输出。为此,我需要1.发送1秒DTR脉冲,重置器械1.使用输出到stdout的非交互式串行监视器到目前为止,我还没有发现任何shell工具可以在非交互模式下执行这两个操作,我们的想法是从systemd用户服务启动它,这样程序就可以在用户会话停止后持续运行。
$ pulse-dtr /dev/ttyUSB0 $ serial-read /dev/ttyUSB0 | multilog s10000000 n5 ~/logs/
PS:我也欢迎简单的Python脚本
sg24os4d1#
你可以用Python pyserial来操作DTR信号,你的发行版中可能有一个类似名称的包,但是有些usb串行设备可能没有实现它,你可以用这个包来设置波特率并从端口读取:
#!/usr/bin/python3 # https://stackoverflow.com/a/75688106/5008284 import sys, time import serial tty = serial.Serial("/dev/ttyS0", baudrate=9600) tty.dtr = True time.sleep(1) tty.dtr = False sys.stdout = open(sys.stdout.fileno(), mode='wb', buffering=0) while True: ch = tty.read() sys.stdout.write(ch)
您可能需要将dtr设置为False then True,而不是True then False。此程序读取单个字符,并将其无缓冲地写入stdout,以便您可以将其通过管道传输到另一个程序。
1条答案
按热度按时间sg24os4d1#
你可以用Python pyserial来操作DTR信号,你的发行版中可能有一个类似名称的包,但是有些usb串行设备可能没有实现它,你可以用这个包来设置波特率并从端口读取:
您可能需要将dtr设置为False then True,而不是True then False。此程序读取单个字符,并将其无缓冲地写入stdout,以便您可以将其通过管道传输到另一个程序。