2

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

由于托管数据工作和大量库,我将使用C++/CLI(在Visual Studio 2010中使用.NET v4.0) 。

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

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

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

C) 使用线程...

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

感谢您以后的回复...

4

1 回答 1

3

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

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

于 2012-07-24T08:07:30.980 回答