检测调制解调器的响应?

时间:2012-11-02 16:58:09

标签: vb.net sms modem

我正在使用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))

1 个答案:

答案 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
相关问题