串口通讯和richtextbox?

时间:2013-07-01 19:22:58

标签: vb.net

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

作为与串口通信相关的vb.net编程方面的一般性问题,使用后台工作人员是否智能?例如,是否应该使用后台工作程序来处理从串行端口读取的内容,然后对后台工作者以外的数据进行算术运算?

我基本上只是试图将我的数据从我的串口存储到一个数组中,但我不知道数据保存数据的大小(即我不知道我会多少次将数据发送到我的串口)

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

所以这就是我如何想象你的互动:

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

关键点在于,如果您使用的是GUI,您应该绝对地将通信与GUI的主要稳定性分开,并创建良好的用户体验。