【发布时间】:2015-05-07 14:55:56
【问题描述】:
在嵌入式系统上,我想解析通过串行接口 (RS232) 到达的数据。数据从专有来源一次到达一行(行以\r 字符分隔,并且有一段时间)。请参阅下面的示例数据。
我想做的是解析整个消息(由多行组成)。我怎么能那样做?因为我可以 hook 每个接收到的字符(它们是通过 ISR 接收的),我想我可以将接收到的数据写入 std::stringstream 并在收到完整消息后对其进行解析。但是如何才能检测到这样一条消息的结束呢?
示例数据:
...
X20\r
R46 P20 A231 \r
R45 P20 A287 \r
R44 P20 A347 \r
X21\r
R46 P21 A284 \r
R45 P21 A341 \r
R44 P21 A436 \r
X22\r
R46 P22 A319 \r
R45 P22 A386 \r
R44 P22 A455 \r
...
在哪里
X22\r
R46 P22 A319 \r
R45 P22 A386 \r
R44 P22 A455 \r
是一条消息的示例。我在乎
例如X = 22,R46 = 319,R45 = 386,R44 = 455
如何以优雅的方式区分消息?
【问题讨论】:
标签: c++ string serial-port communication string-parsing