Отправка нескольких смс в AT-командах VB.NET

Я пытаюсь отправить много или много смс с помощью AT-команды. Я пытаюсь отправить все номера внутри сетки данных, но отправляется только первый номер.

это мой код

    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

Я думаю, что цикл работает, потому что появляется успешное сообщение о том, сколько внутри в представлении сетки данных. Но он отправляет только первый номер.


person Denki Fujiwara -ShinjixRina-    schedule 31.03.2016    source источник


Ответы (1)


Вам необходимо значительно исправить обработку AT-команд. Прежде всего вам нужно читать и анализировать все, что модем отправляет вам после отправки командной строки AT (которая, кстати, должна завершаться только "\r", а не vbCrLf).

Вы никогда не должны начинать отправку новой командной строки, пока не получите окончательный код результата. И конкретно для AT+CMGS вы никогда не должны отправлять полезную нагрузку sms, пока вы не получили префикс "\r\n >".

Эти проблемы рассматриваются в этом и этот ответ. Но самое первое, что вы должны сделать, это прочитать весь текст в главе 5 в спецификация V.250. Это действительно важный документ при работе с AT-командами.

person hlovdal    schedule 05.04.2016