C++ 等待串行端口上的数据并合并结果

C++ 等待串行端口上的数据并合并结果,c++,boost,serial-port,asio,C++,Boost,Serial Port,Asio,我有多个Victron Energy设备,它们通过一个串行端口每秒输出信息进行通信。(每个Victron设备通过单独的串行端口进行通信) 我想做的是从每个设备获取数据,并将其组合成一个json字符串(我有一个用于此的库) 我能想到的唯一方法是在类中设置一个变量,表示when finished,然后检查是否所有对象都有finished标志,然后执行某项操作。您可能需要为每个串行端口创建单独的线程,以读取数据,然后: 若您不介意在处理之前,后续从端口读取数据会覆盖此数据,则只需设置有数据的标志即可

我有多个Victron Energy设备,它们通过一个串行端口每秒输出信息进行通信。(每个Victron设备通过单独的串行端口进行通信)

我想做的是从每个设备获取数据,并将其组合成一个json字符串(我有一个用于此的库)


我能想到的唯一方法是在类中设置一个变量,表示when finished,然后检查是否所有对象都有finished标志,然后执行某项操作。

您可能需要为每个串行端口创建单独的线程,以读取数据,然后:

  • 若您不介意在处理之前,后续从端口读取数据会覆盖此数据,则只需设置有数据的标志即可
  • 或将数据添加到此端口队列

在主线程中,您等待设置所有标志或所有队列为非空,然后处理数据。

所有设备的输出都进入同一个串行端口还是有多个串行端口?有多个串行端口,例如/dev/ttyUSB0和/dev/ttyusb1查找Unix-y。我想用一个
select
语句和一个位掩码来显示在当前报告周期中哪些已经完成了消息,哪些还没有完成消息。这就是说,你问这个问题太早了,而且没有提供多少细节。顺便问一下,你打算用JSON字符串做什么?我的计划是还托管一个tcp服务器,并将JSON字符串发送给所有连接的客户端。