Я считаю, что это должно быть ОЧЕНЬ просто, но у меня возникло ощущение, что он не работает. Я использую Arduino для отправки «O» и «C» в последовательный порт. Я хочу выполнить sub, когда отправляется «O», а другой - при отправке «C». Я могу подтвердить, что «O» и «C» посылаются, и строки с помощью этого:Сравните серийный ввод для выполнения действия
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
я ожидал, чтобы быть в состоянии взять эту строку и запустить подпрограмму я хотел , основанный на том, являются ли данные = «O» или «C». но я не в состоянии сделать это на всех .. Я не могу получить эту работу (проблема что-то с выбором-сазом):
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
Я не понять, почему простое сравнение строк не работает. Спасибо за любую помощь в этом.
Проверьте, содержит ли 'data' более одного символа. Если он имеет завершающий пробел или непечатаемый символ, вы не заметите его, когда будете отображать его в «MessageBox» в тестовом примере. – Blackwood
Хорошо. Я не думал об этом. Я добавил остановку в конце этого Суб и наблюдал за местными жителями. у него были данные «O» и vbCr. Мне нужно узнать, что теперь означает vbCr, но я сделал это для своего кода, и теперь он работает. – Sloan
Private Sub SerialPort1_DataReceived (отправитель As Object, е Как IO.Ports.SerialDataReceivedEventArgs) Ручки данные SerialPort1.DataReceived Dim As String = SerialPort1.ReadLine() Select Case данных Case "O" и vbCr открытым() Case " C "& vbCr close() End Select End Sub – Sloan