【发布时间】:2018-03-16 13:53:26
【问题描述】:
我正在尝试使用 pySerial 将二进制数据从一个串行端口重定向到数据库。
问题在于 pySerial 只允许读取带有 serial.read() 的单个字符和一整行直到带有 serial.readline 的 EOL 字符。但是,使用的协议 (RTCMv3) 是二进制的,并且消息的长度各不相同,这意味着 readline 将不起作用并且 read 只会给我一个字节序列。我想要实现的是区分各个消息。
我在 socat 上也试过同样的方法。 Socat 能够以某种方式在不了解协议结构本身的情况下找出单个消息的长度:
socat -u -x /dev/ttyUSB2,raw -
> 2018/03/15 21:04:24.394224 length=171 from=9 to=179 d3 00 a5 3e c0 00 72
7d b1 40 a0 3c 26 c5 91 fc fc 9f d3 30 f0 07 7f 82 27 fd 82 [...] 9f f0 f8
有没有类似的方式用 Python/pySerial 实现这个?
【问题讨论】: