需要有关通过C ++ / CLI中的串行端口进行通信的建议

时间:2012-07-24 07:58:08

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

我正在开展项目,我必须通过串口进行通信。我将从UART通过RS232(大约6KB / 10ms)接收相当“大量”的数据,我必须收集并解码。解码后的数据将存储到文件,其中一些将显示在GUI 中。

我将使用 C ++ / CLI (在 Visual Studio 2010 中使用 .NET v4.0),因为托管数据工作量大图书馆数量。

我的主要问题是:你会推荐我

A)不使用线程并通过计时器每隔5ms寻找数据......

B)不使用线程并根据传入数据事件查找数据......

C)使用线程......

你会推荐我什么?我没有太多经验告诉什么是最好的解决方案。

感谢您将来的回复......

1 个答案:

答案 0 :(得分:3)

如果你需要一个gui,你需要一个单独的线程来获取数据。没有办法可靠地每个x mSec获取数据并在ui线程中处理它。

除此之外,你似乎对线程的作用感到困惑:A和B可以与C结合使用。我建议使用单独的线程轮询端口数据或使用事件检查新数据何时到达。定时器可能不准确,毕竟它是端口决定数据进入的速率所以最好是听取它而不是使用单独的时基。将已处理的数据存储在队列(也称为生成器)上,并让另一个线程(也称为使用者)从队列中获取大块以将其刷新到文件(您不需要每隔5毫秒写一个文件,而不是每100毫秒左右一次写入大量数据。 然后,ui线程也可以从该队列中预览并显示数据片段。