多个短信发送AT命令VB.NET

时间:2016-03-31 13:51:24

标签: vb.net at-command bulksms

我尝试使用AT命令发送许多或批量短信。我尝试在datagrid中发送所有数字,但只发送第一个数字。

这是我的代码

    Dim sql As New MySqlDataAdapter("select StudentID, StudentName,StudentContact, DueDate  FROM issue inner join student on student.StudentID = issue.Student  ", conn)
     Dim ds As New DataSet
    sql.Fill(ds, 0)
    For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
        Dim wholenum As String
        Dim wholesms As String
        wholenum = ds.Tables(0).Rows(i).Item(2).ToString
        wholesms = "Hello " & ds.Tables(0).Rows(i).Item(1).ToString & ",  this is your Due Date  " & ds.Tables(0).Rows(i).Item(3).ToString & " pls return it on your due date"

        If SerialPort1.IsOpen Then
            Try
                With SerialPort1
                    .Write("AT" & vbCrLf)
                    .Write("AT+CMGF=1" & vbCrLf)
                    .Write("AT+CMGS=" & Chr(34) & wholenum & Chr(34) & vbCrLf)
                    .Write(wholesms & Chr(26))



                    MsgBox("Success sa SEND")


                    'update one 

                    'Call ConnectDatabase()
                    'com = New MySqlCommand("UPDATE issue SET Sent='1' ", conn)
                    'com.ExecuteNonQuery()
                    'Call DisconnectDatabase()

                End With

            Catch ex As Exception
                MsgBox("Bad Signal or No load")
            End Try

        Else
            MsgBox("Pls insert a modem")
        End If

我认为循环正在工作,因为它在数据网格视图中包含了多少内部的成功消息。但它只发送第一个数字。

1 个答案:

答案 0 :(得分:0)

您需要显着修复AT命令处理。首先,您需要读取并解析调制解调器在发送AT命令行后发送给您的所有内容(顺便说一句,应该只使用"\r"而不是vbCrLf终止)。 / p>

在收到最终结果代码之前,您永远不应该开始发送新的命令行。对AT+CMGS而言,您应该在收到"\r\n >"前缀之前永远不要发送短信有效负载。

thisthis回答涵盖了这些问题。但您应该首先阅读V.250 specification第5章中的所有文本。使用AT命令时,它是really important document