В настоящее время я работаю над проектом, который включает в себя отправку и получение данных из serialport и tcp/ip.Выполнение последовательности команд из Ritchtextbox через цикл
Всякий раз, когда я получал сообщение с устройств, я выводил его в конец richtextbox, затем обрабатываю полученное сообщение соответственно, все это работает нормально, за исключением случаев, когда устройство отправляет несколько команд всего за 1 строку.
Например, устройство программно назначен отправить 1 команду в то время, что-то вроде этого:
MSTAT01P0K0S0^
MSTAT02P1K1S1^
MSTAT03P0K0S0^
MSTAT04P1K1S1^
Поскольку я получаю 1 команду за один раз, я могу добавить ее в мой последний конец richtextbox и легко обработать ее. Но иногда бывают случаи, что не позволяет устройству отправлять его 1 команду в то время, это будет рассматриваться как это
MSTAT01P0K0S0^ MSTAT02P1K1S1^ MSTAT03P0K0S0^ MSTAT04P1K1S1^
Вместо того, 4 строки кода в моем richtextbox У меня теперь есть 1 ссылка с 4 командами. Это моя проблема.
Вопрос: Как мне изменить код для обработки команд из последней строки richtextbox?
Note:
Я могу определить начало и конец команд, которые я получил от устройства, указав M
как начало и ^
в качестве конца.
У меня есть этот код:
Dim Sched_Num As String = String.Empty
Dim KS_Status As String = String.Empty
Dim SSR_Status As String = String.Empty
Dim Photocell_Status As String = String.Empty
Dim matches As MatchCollection = Regex.Matches(events_process, "(M[^\^]+\^)")
For Each m As Match In matches
For Each c As Capture In m.Captures
Dim CSTAT_Cmd As Boolean = events_process Like "MSTAT??P?K?S?^*"
If CSTAT_Cmd = True Then
Sched_Num = events_process.Substring(5, 2)
Photocell_Status = events_process.Substring(8, 1)
KS_Status = events_process.Substring(10, 1)
SSR_Status = events_process.Substring(12, 1)
End If
Next
Console.WriteLine(Sched_Num & " " & Photocell_Status & " " & KS_Status & " " & SSR_Status)
Next
И это работает прекрасно, когда дело доходит до 1 команды в то время, проблема в том, когда устройство отправки ломтей команды.
Если я получил сообщение: MSTAT01P0K0S0^
. Он выводит 01 0 0 0
, что верно!
Если я получил сообщение: MSTAT01P0K0S0^MSTAT10P1K1S1
. Он снова выводит 01 0 0 0
.:(
Ты велик, это то, что я ищу. Спасибо огромное! Вы только что спасли мой день :) –