Работаю с GSM модемом. Я получаю данные о порте с особым синтаксисом для RING и сообщения, как для кольца
RING+CLIP: "+919860939518",145,"",,"",0
и для сообщения
+CMT: "BP-bytwoo",,"14/08/02,13:16:41+22 9860939518:hello6
Я создал гипертерминал в Textbox1, получая данные text1 в text3. Затем Сохранение данных в переменной с именем str
. Затем ищем строки RING
и +CMT
в данных, извлеченных из text3 с помощью str_1 = Mid(Text3, 1, 6)
, и отображаем в text4.
Я могу извлечь слова RING
и +CMT
. Затем я проверяю, что если извлеченные данные равны RING
, то извлеките число и отобразите его в текстовом поле2, или если извлеченные данные равны +CMT
, то отобразите данные в текстовом поле 5.
Но даже если строки RING
и +CMT
извлечены успешно, я не могу получить номера телефонов, которые должны отображаться в textbox2 и textbox5. Эти текстовые поля абсолютно ничего не показывают. Я не понимаю, почему это происходит. Пожалуйста, помогите мне. Вот мой код.
Dim str As String
Dim val As Integer
Dim str_1 As String
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Form_Load()
'On Error GoTo errx:
Dim strValue As String ' define Buffer value from Modem
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.CommPort = 6 'comm port no.
MSComm1.Settings = "9600,n,8,1"
MSComm1.RThreshold = 1 'no. of chr to receive
MSComm1.SThreshold = 1
MSComm1.InputLen = 0 ' no. of chr on which oncomm event fires
'MSComm1.RTSEnable = True
'MSComm1.InputMode = comInputModeText
MSComm1.PortOpen = True 'open comm port
MSComm1.Output = "AT + CLIP = 1" + Chr(13)
Sleep 1000
'MSComm1.Output = "AT+CMGF=1" + Chr(13) '& Chr(10)
'Sleep 500
MSComm1.Output = "AT+CNMI=1,2,0,0,0" + Chr(13) '1,2,0,0,0
Sleep 1000
End If
'errx:
' MsgBox "error"
End Sub
Private Sub MSComm1_OnComm()
Static Buffer As String
t = Now() + timeout / 86400000#
If MSComm1.CommEvent = comEvReceive Then
Do
Text1 = Text1 + MSComm1.Input
If Now() > t Then Exit Do
Loop
Text3 = Text1
Text1 = ""
End If
str = Text3
str_1 = Mid(Text3, 1, 6)
Text4 = str_1
If (str_1 = "RING") Then
Text2.Text = Mid(str_1, 19, 13) 'Left$(str_1, 15)
ElseIf (str_1 = "+CMT") Then
Text5.Text = Mid(str_1, 19, 13) '19,13
Else
Exit Sub
End If
MSComm1.InBufferCount = 0
End Sub
Компилятор даже не заходит в цикл If(str_1="RING") Then
. Почему это так.