Arduino und Visual Basic?
Hi,
ich habe folgendes Problem: Also, ich habe es geschafft mit VB, daten an meinen Arduino zu senden und der Arduino dann auf die Daten reagiert und Befehle ausführt. Ich sage einfach in VB Serialport1.write("A") und dann einfach im Arduino if(Serial.read() == 'A') {Irgend ein Befehl}
Das klappt auch Super!
Nur jetzt weiß ich nicht wie das anders herum gehen soll.
Ich habe es probiert indem ich dem Arduino sage: Serial.println("A"); Und in VB: if(Serialport1.readLine = "A") then
msgbox("Hallo")
end if
Doch dann hängt sich mein Programm auf.
Weiß wer von euch wie das gehen könnte?
Danke im Voraus!
3 Antworten
Probiers in VB mal mit
Try
"Code zum auslesen der Schnittstelle"
catch ex as Exception
MsgBox("Tralala")
end try
Dann sollte sich das Programm zumindest nicht mehr aufhängen
Für das Auslesen kannst du aber auch folgenden Code benutzen
'Globale Variable
Delegate Sub SetTextCallBack(ByVal [text] As String)
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
RecievedText(SerialPort1.ReadExisting())
End Sub
Private Sub RecievedText(ByVal [text] As String)
If Me.tb_Empfangen.InvokeRequired Then
Dim x As New SetTextCallBack(AddressOf RecievedText)
Me.Invoke(x, New Object() {(text)})
Else
Me.tb_Empfangen.Text &= [text]
End If
End Sub
Kannst aber auch anstatt in eine TextBox auch eine String-Variable nehmen
Danke für die Antwort ich habe es aber geschafft das aufhängen zu verhindern mit: Windows.Forms.Control.CheckforillegalThreadcalls = false und der Rest funktioniert dann auch gut
Es heißt ReadLine(), weil es eine Methode ist.
bringt aber auch nix. Und was mir aufgefallen ist, ist dass wenn ich in der arduino Software den Serial Monitor starte und wieder schließe und dann mein Programm ausführe funktioniert alles
Doch mache ich und ich schließe ihn auch wieder wenn das Programm geschlossen wird.
Du musst bei einer if Abfrage 2 == Zeichen benutzen.
Also
if(Serial....=="A")
Öffnest du vielleicht den seriellen Port nicht in deinem Programm?