Click here to Skip to main content
16,006,480 members
Please Sign up or sign in to vote.
2.50/5 (2 votes)
See more:
Help me to send message using USB GPRS modem and with vb.net

Let me Describe the code


<br />
'This is for Connecting Port<br />
<pre lang="vb">private sub OpenPort()
OpenPort("COM5",11520,8,1,300,300)
End Sub</pre><br />
<br />
<pre>
private sub SendMessage()
Dim X As String = ClsMSg.ExecuteATCommand(Port, "AT", 300)
If X.Contains("OK") Then
    X = ClsMSg.ExecuteATCommand(Port, "AT+CMGF=1", 300)
    If X.Contains("OK") Then
        Dim PhoneNo As String = "0559963424"
        Dim command As [String] = "AT+CMGS=""" & PhoneNo & """"
        X = ClsMSg.ExecuteATCommand(Port, command, 300)
        If X.Contains(">") Then
            Dim Cmd As String = "this is a test message " + Char.ConvertFromUtf32(26) & vbCr
            X = ClsMSg.ExecuteATCommand(Port, Cmd & vbCr, 300)
        End If
    End If
End If

end sub

Public Function OpenPort(ByVal StrPortName As String, ByVal p_baudRate As Integer, ByVal p_Databits As Int16, ByVal p_ReadTimeOut As Integer, ByVal p_WriteTimeout As Integer, ByRef ConnStatus As String) As SerialPort
        Try
            With Port
                .PortName = StrPortName
                .BaudRate = p_baudRate
                .DataBits = p_Databits
                .StopBits = StopBits.One
                .Parity = Parity.None
                .ReadTimeout = p_ReadTimeOut
                .WriteTimeout = p_WriteTimeout
                .Encoding = Encoding.GetEncoding("iso-8859-1")
                AddHandler Port.DataReceived, AddressOf Port_DataReceived
                .Open()
                .DtrEnable = True
                .RtsEnable = True

                ConnStatus = "Y"
                Return Port
            End With
        Catch ex As Exception
            ConnStatus = ex.Message
        End Try
        Return Port
    End Function

'this codes for stop connection
    Public Sub ClosePort(ByVal port As SerialPort)
        Try
            port.Close()
            RemoveHandler port.DataReceived, AddressOf port_DataReceived
            port = Nothing
            ClsComm.ShowNotification("SMS CENTER", "SMS Service Stopped", ToolTipIcon.Info)
        Catch ex As Exception
            ClsComm.ShowNotification("SMS CENTER", "Failed to Stopp SMS Service ", ToolTipIcon.Error)
        End Try
    End Sub

<pre lang="vb">Public Sub Port_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)
    Try
        If e.EventType = SerialData.Chars Then
            ReceiveNow.[Set]()
        End If
    Catch ex As Exception
        Throw ex
    End Try
End Sub</pre><br />
<br />
    Public Function ExecuteATCommand(ByVal Port As SerialPort, ByVal Scommand As String, Optional ByVal ResponseTimeOut As Integer = 300) As String<br />
        Try<br />
<br />
            Port.DiscardOutBuffer()<br />
            Port.DiscardInBuffer()<br />
            ReceiveNow.Reset()<br />
<br />
            Port.Write(Scommand & vbCr)<br />
            Threading.Thread.Sleep(300)<br />
            Dim Input As String = ReadResponse(Port, ResponseTimeOut)<br />
<br />
            If (Input.Length = 0) OrElse ((Not Input.EndsWith(vbCr & vbLf & "> ")) AndAlso (Not Input.EndsWith(vbCr & vbLf & "OK" & vbCr & vbLf))) Then<br />
                Return "ERROR"<br />
            Else<br />
                Return Input<br />
            End If<br />
        Catch ex As Exception<br />
            Return "ERROR"<br />
        End Try<br />
    End Function<br />
    Public Function ReadResponse(ByVal Port As SerialPort, ByVal TimeOut As Integer) As String<br />
        Dim Buffer As String = String.Empty<br />
        Dim ErrMsg As String = ""<br />
        Try<br />
            Do<br />
                If ReceiveNow.WaitOne(TimeOut, False) Then<br />
                    Dim T As String = Port.ReadExisting<br />
                    Buffer += T<br />
                Else<br />
                    If Buffer.Length > 0 Then<br />
                        ErrMsg = "Incompleted Response."<br />
                    Else<br />
                        ErrMsg = "No Data Received."<br />
                    End If<br />
                    Exit Do<br />
                End If<br />
            Loop While Not Buffer.EndsWith(vbCr & vbLf & "OK" & vbCr & vbLf) AndAlso Not Buffer.EndsWith(vbCr & vbLf & "> ") AndAlso Not Buffer.EndsWith(vbCr & vbLf & "ERROR" & vbCr & vbLf)<br />
<br />
            If ErrMsg.Length > 0 Then<br />
                Buffer = "ERROR"<br />
            End If<br />
<br />
        Catch ex As Exception<br />
            Return "ERROR"<br />
        End Try<br />
        Return Buffer<br />
    End Function<br />
<br />
<br />
<br />
<br />
after i sending message using this code its the x returns sometimes error and some times its hang in the message portion with ">" if i stop port and start again the message is sending. i tried in the hyper terminal its Sending Message but the last line not getting response<br />
<br />
AT<br />
OK<br />
AT+CMGF=1<br />
OK<br />
AT+CMGW="+85291234567"<br />
> A simple demo of SMS text messaging.<br />
+CMGW: 1<br />
<br />
OK<br />
AT+CMSS=1<br />
<br />
after this portion hanging but message is sending<br />
<br />
And also Iam Using IMPULSE USB GPRS MODEM. <br />
please help me
Posted
Updated 9-May-10 2:49am
v2

Did you run it under the debugger to try to find out what's wrong?
 
Share this answer
 
Comments
Rajmin 9-May-10 15:54pm    
YES I TRIED THE UNDER THE DEBUGGER WHEN IAM SENDING THE SECOND LAST COMMAND WHICH ONE WITH THE MOBILE NUMBER THERE IS NO RESPONSE ITS TIME OUT. NOW I CHANGED THE GPRS MODEM AND I USED A NOKIA E72 MOBILE NOW IT IS SENDING MESSAGES. BUT TAKING TIME TO GET RESPONSE AFTER SENDING MESSAGE. I THINK MAY BE I CAN USE A 3G OR HSDPA MODEM. THANKS FOR UR REPLAY
Rajmin,
Rajmin wrote:
OK
AT+CMSS=1

after this portion hanging but message is sending


If sending the msg is not the problem, I'll suggest you put the SendMessage() portion of your code in a background worker. This will help run your code on a separate thread and avoid hanging. However, be careful not to make changes to any UI components.

Best regards.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900