假设我有这个简单的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
答案 0 :(得分:1)
您提到您不需要使用握手。我有一次类似的问题,握手就是这个伎俩。尝试在Sub Main()
中添加以下代码objSerial.ReadTimeout = 500
objSerial.Handshake = IO.Ports.Handshake.RequestToSend
express express也能从端口读取串行数据。
此处还有我在网上找到的教程,请查看它是否有帮助: Reading Arduino data with VB.NET