【发布时间】:2014-09-28 07:01:55
【问题描述】:
我有一个向我的计算机发送传感器数据的设备。我正在用 C++ 编写一个程序来读取数据并处理它。但是假设我的 C++ 程序有很多工作要做,所以当它有时间读取数据时,设备可能已经通过串行端口发送了几十个读数。
如果我只是逐行读取数据,我的程序似乎会得到滞后响应,因为它正在获取未处理的旧数据。我不确定处理这个问题的最佳方法是什么。
我可以继续阅读,直到读到最后一行数据。但是哪个库有返回是否还有数据要读取的函数,这样我就可以判断我是否正在读取最后一个?
或者是否有一些功能可以只清理 FIFO 缓冲区并等待新数据?我可以使用哪个库?
【问题讨论】:
-
ooo 多项选择。 #2!
-
有没有这个功能的库?
-
大部分都应该。它只是冲洗。
-
使用
select或poll或更高级别的库,例如封装它们的libevent。参见例如tldp.org/HOWTO/text/Serial-Programming-HOWTO -
另一种方法(实际上可能更可取)是运行单独的读取器线程并使其仅公开最后读取的记录。
标签: c++ serial-port