Ich glaube, das sollte SEHR einfach sein, aber ich habe mir den Kopf zerbrochen, warum es nicht funktioniert. Ich verwende ein Arduino, um ein "O" und ein "C" an die serielle Schnittstelle zu senden. Ich möchte ein Sub durchführen, wenn "O" gesendet wird, und ein anderes Sub, wenn "C" gesendet wird. Ich kann bestätigen, dass „O“ und „C“ gesendet werden, und sind Strings durch diese Verwendung:Vergleichen Sie die serielle Eingabe, um die Aktion auszuführen
Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim data As String = SerialPort1.ReadLine()
MessageBox.Show(data)
MessageBox.Show(data.GetType.ToString)
End Sub
ich erwartet, dass die Zeichenfolge nehmen zu können und führen Sie das Unterprogramm wollte ich basierend darauf, ob Daten = "O" oder "C" sind. aber ich bin das nicht in der Lage zu tun, überhaupt .. Ich kann das nicht an der Arbeit (das Problem etwas mit der select-case-Anweisung ist):
Private Sub SerialPort1_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim data As String = SerialPort1.ReadLine()
Select Case data
Case "O"
open()
Case "C"
close()
End Select
End Sub
Ich verstehe nicht, warum Der einfache String-Vergleich funktioniert nicht. Danke für jede Hilfe mit diesem.
Überprüfen Sie, ob 'data' aus mehr als einem einzelnen Zeichen besteht. Wenn es ein nachstehendes Leerzeichen oder ein nicht druckbares Zeichen hat, würden Sie es nicht bemerken, wenn Sie es in Ihrem Testfall in der "MessageBox" anzeigen. – Blackwood
Ok. Ich habe nicht daran gedacht. Ich habe am Ende dieses Subs einen Halt gemacht und die Einheimischen beobachtet. es hatte "O" & vbCr für Daten. Ich muss jetzt lernen, was & vbCr bedeutet, aber ich habe das mit meinem Code gemacht und jetzt funktioniert es. – Sloan
Private Sub SerialPort1_DataReceived (Absender als Gegenstand, e As IO.Ports.SerialDataReceivedEventArgs) Griffe SerialPort1.DataReceived Dim Daten As String = SerialPort1.ReadLine() Select Case Daten Fall "O" & vbCr open() Fall " C "& vbCr schließen() Ende wählen End Sub – Sloan