为什么我没有在视觉工作室收到连续数据,但我在腻子?

时间:2014-11-23 00:20:59

标签: vb.net serial-port arduino

假设我有这个简单的arduino程序:

int i=0;

void setup(void){
  Serial.begin(9600);
}

void loop() {
  i++;
  Serial.print(i);
  delay(500);
}

它可以工作,在arduino监视器中打印数据,一切都很好。我甚至尝试使用putty(与我的vb应用程序中的波特和COM相同)并且所有数据都显示正常。

然后让我说我有这个简单的vb控制台应用程序:

Module Module1
    Private WithEvents objSerial As New System.IO.Ports.SerialPort("COM3")


    Sub Main()

        objSerial.BaudRate = 9600
        objSerial.Open()
        Console.ReadKey()
        objSerial.Close()
    End Sub

    Private Sub objSerial_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles objSerial.DataReceived
        Console.Write(objSerial.ReadExisting)
    End Sub
End Module

我从youtube上发现了这个简单的vb程序,而且这个人正在做一个非常相似的事情。除了它适合他,不适合我。我选择了合适的波特率和COM端口。我不认为我需要握手,因为YouTube上的人使用了这个确切的代码并且工作正常。我被困住了,真的不知道这里有什么问题。 感谢您提供的任何帮助!

我对这些东西也很陌生,所以如果我遗漏了任何信息,如果你让我知道我会很快发表评论。

另外,我真的怀疑这是它,但我使用的是免费的VS express,这是不是因为某种原因不允许你使用串口数据?


JimmyD得到了问题的答案。 最终工作代码:

Module Module1
    Private WithEvents objSerial As New System.IO.Ports.SerialPort("COM3")
    Sub Main()

        objSerial.BaudRate = 9600
        objSerial.Handshake = IO.Ports.Handshake.RequestToSend
        objSerial.ReadTimeout = 500
        objSerial.Open()
        Console.ReadKey()
        objSerial.Close()
    End Sub

    Private Sub objSerial_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles objSerial.DataReceived
        Console.Write(objSerial.ReadExisting)
    End Sub
End Module

1 个答案:

答案 0 :(得分:1)

您提到您不需要使用握手。我有一次类似的问题,握手就是这个伎俩。尝试在Sub Main()

中添加以下代码
objSerial.ReadTimeout = 500
objSerial.Handshake = IO.Ports.Handshake.RequestToSend

express express也能从端口读取串行数据。

此处还有我在网上找到的教程,请查看它是否有帮助: Reading Arduino data with VB.NET