- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在做一个项目,我必须通过串行端口进行通信。我将通过 RS232 从 UART 接收相当“大量”的数据(大约 6KB/10ms),我必须收集并解码。解码后的数据将存储到文件,其中一些将显示在 GUI 中。
我将使用 C++/CLI(在 Visual Studio 2010 中使用 .NET v4.0) 因为托管数据工作和大型库的数量。
我的主要问题是:您推荐我什么:
A) 不使用线程并通过计时器每 5 毫秒查找一次数据...
B) 不使用线程并根据传入数据事件查找数据...
C) 使用线程...
你会推荐我什么?我没有太多经验可以判断什么是最佳解决方案。
感谢您以后的回复...
最佳答案
如果您需要一个图形用户界面,您将需要一个单独的线程来获取数据。没有办法每 x 毫秒可靠地获取数据并在 ui 线程中处理它。
除此之外,您似乎对线程的作用有些困惑:A 和 B 可以与 C 组合。我建议使用单独的线程轮询端口以获取数据或使用事件来检查新数据何时到达。计时器可能不准确,毕竟它是端口决定数据进入的速率所以最好听它而不是使用单独的时基。将处理后的数据存储在队列中(又名生产者),并让另一个线程(又名消费者)从队列中获取大块数据以将它们刷新到文件中(你不想每 5 毫秒写入一个文件,而不是每 100 毫秒左右一次性写入大量数据)。然后,ui 线程还可以从该队列中预览并显示数据片段。
关于c++ - 需要有关在 C++/CLI 中通过串行端口进行通信的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11626532/
由于 Jquery Mobile 在导航时将一些页面保留在 DOM 中,因此在来回时可能会多次访问一个页面。 如果我绑定(bind)到如下所示的页面并在此绑定(bind)内执行我所有的页面逻辑,其中包
我是一名优秀的程序员,十分优秀!