【问题标题】:Trouble with reading Serial Port using VB.net 2008使用 VB.net 2008 读取串行端口时出现问题
【发布时间】:2011-10-02 21:27:23
【问题描述】:

让我先告诉你我一直面临的问题。我的微控制器与我的计算机的串行端口连接。在我的微控制器中,我有 2000 个样本数据,我的主要目标是读取这些数据。现在我可以在超级终端中读取这些数据,但是当涉及到我的应用程序时,它没有显示任何内容。现在我对 VB.net 很陌生,所以一定缺少一些东西。

Private Sub sp1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) 处理 sp1.DataReceived

    sp1.Open()
    MsgBox(sp1.ReadExisting())

结束子

这个简单的代码块应该显示数据。但它没有。

来自微控制器的数据格式如下:

初始化成功!,1023
开始采样过程... 1023,1023 1023,1023

0,2 1023,1023 1023,1023 1023,1023 212,686 1023,1023 1023,1023
1,5 1023,1023 1023,1023 1023,1023,659 213,689 1023,1023 1023,1023

现在,我不明白为什么它什么都不读:(请帮帮我。谢谢

注意:SP1 的波特率为 19200,数据位 8,无奇偶校验,COM1 端口。我不确定是否需要缓冲区

【问题讨论】:

  • SP1 的数据类型是什么?您需要在某处设置串行端口设置,例如波特率、数据位、停止位、com 端口。是否缺少代码片段?
  • SP1 的波特率为 19200,数据位 8 且无奇偶校验,COM1 端口。我不确定是否需要缓冲区
  • 端口是否在其他地方打开?我认为在打开端口之前不会触发任何事件,因此在事件处理程序中打开端口可能无法正常工作。
  • 好吧,我把打开命令放在表单加载事件中,但还是一样,没有响应
  • 在 DataReceived 事件中打开串口时杀死了一只小猫。如果不先打开端口,您将无法获取事件。当您使用 MessageBox 而不是调试器时,另一只小猫会咬灰尘。它不起作用,因为您没有设置 Handshake 属性。如果不这样做,则必须将端口的 DtrEnable 和 RtsEnable 属性设置为 true。

标签: vb.net serial-port


【解决方案1】:

您需要检查是否需要打开流量控制。

大多数情况下,串行端口将使用 RTS 硬件流控制。设置 RtsEnable = True 将允许数据流向您的应用程序。

正如另一条评论中提到的,您不应尝试在数据接收事件处理程序中打开串行端口对象。触发数据接收事件时,串行端口对象应该已经打开。这可能是您在执行 ReadExisting 方法时没有获取数据的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多