c ++ - 多线程串口

时间:2017-08-09 20:13:22

标签: c++ multithreading visual-c++ serial-port

我目前需要编写一个Windows 10应用程序,它通过串行从四个不同的传感器(编码器和IMU)收集数据。我是用c ++在Visual Studio中编写的。

每个传感器都要求我写入一次以初始化它然后只读取值。我想为每个传感器(即串口)和一个主线程收集一个线程来收集所有数据并将其保存在文件中。

然而,在其他Stack Overflow问题中,人们建议让一个线程写入,另一个读取,或者单线程重叠方法。

这与多线程有什么优缺点?如果我确实选择了多线程路径,我是否需要使用重叠I / O,还是可以进行非重叠?

Windows文档说明了非重叠:

  

如果一个线程被阻塞等待其I / O操作完成,则随后调用通信API的所有其他线程将被阻塞,直到原始操作完成。例如,如果一个线程正在等待ReadFile函数返回,则发出WriteFile函数的任何其他线程都将被阻止。

如果我为每个传感器使用不同的串行端口,这仍然是真的吗?因为我需要尽快读取这些值,所以我无法承受阻塞。

任何帮助表示赞赏!这是我第一次设计系统......

0 个答案:

没有答案