我正在开发一个项目,我必须通过串行端口进行通信。我将通过 RS232 从 UART 接收相当“大量”的数据(大约 6KB/10ms),并且我必须收集并解码它。解码后的数据将存储到文件,其中一些将在 GUI 中显示。
由于托管数据工作和大量数据,我将使用 C++/CLI(在 Visual Studio 2010 中使用 .NET v4.0)图书馆的数量。
我的主要问题是:您会推荐我什么:
A) 不使用线程并通过计时器每 5 毫秒查找一次数据...
B) 不使用线程并根据传入数据的事件查找数据...
C) 使用线程...
你会推荐我什么?我没有太多经验来判断什么是最好的解决方案。
感谢您今后的回复...
最佳答案
如果您需要 GUI,则需要一个单独的线程来获取数据。没有办法可靠地每 x 毫秒获取数据并在 ui 线程中处理它。
除此之外,您似乎对线程的作用有些困惑:A 和 B 可以与 C 组合。我建议使用单独的线程轮询端口数据或使用事件来检查新数据何时到达。计时器可能不准确,毕竟它是端口决定数据进入的速率,因此最好听它而不是使用单独的时基。将处理后的数据存储在队列(又名生产者)上,并让另一个线程(又名消费者)从队列中获取大块以将它们刷新到文件(您不希望每 5 毫秒写入一个文件,而不是每 100 毫秒左右一次性写入大量数据)。 然后,ui 线程还可以从该队列进行预览并显示数据片段。关于c++ - 需要有关 C++/CLI 中串行端口通信的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11626532/