短信后使用GPRS和VB.Net的短信挂起 [英] SMS using GPRS and VB.Net Hanging after Message

查看:80
本文介绍了短信后使用GPRS和VB.Net的短信挂起的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

帮助我使用USB GPRS调制解调器和vb.net发送消息

让我描述一下代码


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()<br />
OpenPort("COM5",11520,8,1,300,300)<br />
End Sub</pre><br />
<br />
<pre><br />
private sub SendMessage()<br />
Dim X As String = ClsMSg.ExecuteATCommand(Port, "AT", 300)<br />
If X.Contains("OK") Then<br />
    X = ClsMSg.ExecuteATCommand(Port, "AT+CMGF=1", 300)<br />
    If X.Contains("OK") Then<br />
        Dim PhoneNo As String = "0559963424"<br />
        Dim command As [String] = "AT+CMGS=""" & PhoneNo & """"<br />
        X = ClsMSg.ExecuteATCommand(Port, command, 300)<br />
        If X.Contains(">") Then<br />
            Dim Cmd As String = "this is a test message " + Char.ConvertFromUtf32(26) & vbCr<br />
            X = ClsMSg.ExecuteATCommand(Port, Cmd & vbCr, 300)<br />
        End If<br />
    End If<br />
End If<br />
<br />
end sub<br />
<br />
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<br />
        Try<br />
            With Port<br />
                .PortName = StrPortName<br />
                .BaudRate = p_baudRate<br />
                .DataBits = p_Databits<br />
                .StopBits = StopBits.One<br />
                .Parity = Parity.None<br />
                .ReadTimeout = p_ReadTimeOut<br />
                .WriteTimeout = p_WriteTimeout<br />
                .Encoding = Encoding.GetEncoding("iso-8859-1")<br />
                AddHandler Port.DataReceived, AddressOf Port_DataReceived<br />
                .Open()<br />
                .DtrEnable = True<br />
                .RtsEnable = True<br />
<br />
                ConnStatus = "Y"<br />
                Return Port<br />
            End With<br />
        Catch ex As Exception<br />
            ConnStatus = ex.Message<br />
        End Try<br />
        Return Port<br />
    End Function<br />
<br />
''this codes for stop connection<br />
    Public Sub ClosePort(ByVal port As SerialPort)<br />
        Try<br />
            port.Close()<br />
            RemoveHandler port.DataReceived, AddressOf port_DataReceived<br />
            port = Nothing<br />
            ClsComm.ShowNotification("SMS CENTER", "SMS Service Stopped", ToolTipIcon.Info)<br />
        Catch ex As Exception<br />
            ClsComm.ShowNotification("SMS CENTER", "Failed to Stopp SMS Service ", ToolTipIcon.Error)<br />
        End Try<br />
    End Sub<br />
<br />
<pre lang="vb">Public Sub Port_DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs)<br />
    Try<br />
        If e.EventType = SerialData.Chars Then<br />
            ReceiveNow.[Set]()<br />
        End If<br />
    Catch ex As Exception<br />
        Throw ex<br />
    End Try<br />
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 />
</pre>




在我使用此代码发送消息后,x有时会返回错误,有时它会挂在消息部分,并带有>"如果我停止端口并重新启动,则消息正在发送.我在超级终端中尝试了其发送消息,但最后一行没有得到响应

AT
OK
AT + CMGF = 1
OK
AT + CMGW ="+ 85291234567"
> SMS短信的简单演示.
+ CMGW:1

OK
AT + CMSS = 1

此部分挂起后,消息正在发送

以及Iam使用IMPULSE USB GPRS MODEM.
请帮助我




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

AT
OK
AT+CMGF=1
OK
AT+CMGW="+85291234567"
> A simple demo of SMS text messaging.
+CMGW: 1

OK
AT+CMSS=1

after this portion hanging but message is sending

And also Iam Using IMPULSE USB GPRS MODEM.
please help me

推荐答案

您是否在调试器下运行它以尝试找出问题所在?
Did you run it under the debugger to try to find out what''s wrong?


Rajmin ,
Rajmin,
Rajmin写道:

确定
AT + CMSS = 1

在该部分挂起但消息正在发送之后

OK
AT+CMSS=1

after this portion hanging but message is sending



如果发送消息不是问题,我建议您将代码的SendMessage()部分放在



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.


这篇关于短信后使用GPRS和VB.Net的短信挂起的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆