0

我有一个关于串行端口通信和数据存储的一般性问题。当与串行端口通信(在这种情况下严格从端口读取)时,如何在 vb.net 中存储和操作数据?对于我正在做的项目,我需要从串行端口获取字符串,然后从这些字符串中提取数字并对它们进行排序(数字上,即在顶部找到的最高数字和在底部找到的最低数字)出于某种原因在我的代码中当我尝试将数据从字符串移动到字符串数组时出现内部异常错误,但我决心解决这个问题。

作为与串行端口通信相关的 vb.net 编程方面的一个普遍问题,使用后台工作程序是否明智?例如,我可以/应该使用后台工作程序来处理从串行端口读取的数据,然后在后台工作程序之外对我的数据进行算术运算吗?

我基本上只是想将我的串行端口中的数据存储到一个数组中,但我不知道保存数据的数组有多大(即我不知道我将发送多少次数据到我的串口)

任何提示/信息将不胜感激!谢谢

4

1 回答 1

0

作为一般规则,如果有任何长时间运行的任务,您应该在单独的线程中运行它。这样做是为了不影响用户体验并且 GUI 保持响应。

在串行通信的情况下,通常有一个轮询响应架构,需要不断的事件处理。

在我的经验中,我在一个单独的线程中处理与串行端口的交互取得了巨大的成功,该线程将事件冒泡到 GUI。这样我就可以处理要显示或存储在另一个单独线程中的数据,并保持轮询几乎实时运行。

当我使用寄存器时,我会以多种不同的方式存储它们,但根据您的描述,听起来您使用的数据最好存储在List(of String).

这种结构几乎可以无限地添加,并且可以通过使用谓词进行排序。.net 中的 List 结构也有一个方法可以在必要时将自身转换为数组。

所以我可以想象你的互动:

  • GUI 线程已启动,您将启动与设备的连接。
  • 然后,您设置一个线程来接收来自设备的传入通信
  • 在这个线程中,当数据被捕获时,它会在 GUI 中触发一个事件。
  • 在 GUI 事件处理程序中,数据存储在一个列表中,如果需要对其进行操作,它们将在另一个具有回调处理程序的处理线程中完成。
  • 在回调中,您可以将数据显示或推送到其最终目的地。

关键点是,如果您使用的是 GUI,则绝对应该在单独的线程中进行通信,以保持 GUI 的稳定性并创造良好的用户体验。

于 2013-07-02T19:17:03.240 回答