我正在使用Teltonika G10 GSM调制解调器并编写了一个发送短信的基本程序。我在每个AT命令之间放置一个1.5秒的定时器,以允许调制解调器模拟等待调制解调器的“OK”。这现在适用,但我宁愿使用分支语句等待实际响应,例如“OK”或“ERROR”而不是使用计时器。
SerialPort1.Write("AT+CMGD=1,4" & vbCrLf)
Thread.Sleep(1250)
SerialPort1.Write("AT+CMGF=1" & vbCrLf)
Thread.Sleep(1250)
SerialPort1.Write("AT+CMGS=" & Chr(34) & "3475558223" & Chr(34) & vbCrLf)
Thread.Sleep(1250)
SerialPort1.Write(":|" & Chr(26))
答案 0 :(得分:0)
我不熟悉使用AT命令进行编程,并花了很多时间与Putty一起了解它。 Hans Passant建议使用.ReadLine()并且效果很好。
下面是一个效果很好的代码示例。它基本上向调制解调器提交一个命令,并且只有在调制解调器以“OK”响应时才会继续。
If modem.IsOpen() Then
modem.Write("AT+CMGD=" & Chr(34) & "ALL" & Chr(34) & vbCrLf) 'deletes last received message
'Sets Modem to Text
While (modem.ReadLine().ToString <> "OK")
modem.Write("AT+CMGF=1" & vbCrLf)
End While
While (modem.ReadLine().ToString <> "OK")
modem.Write("AT+CSMP=17,167,0,0" & vbCrLf)
End While
While (modem.ReadLine().ToString <> "OK")
modem.Write("AT+CNMI=1,1,0,0,0" & vbCrLf)
End While
End If