-1

我正在使用 Teltonika G10 GSM 调制解调器并编写了一个基本程序来发送 SMS。我在每个 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))
4

1 回答 1

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
于 2012-11-23T17:43:50.800 回答