好库网 好库网首页 | 我的好库
好饱的专栏

在VB.NET中用AT命令发送手机短信(SMS)

发布者:好饱
发布日期:2011/2/26 10:37:03   更新日期:2011/3/1 16:46:42
阅读次数:4840
评分:4.80
介绍:介绍如何实现从PC通过带GSM modem的GSM手机发送短信。
正文:
介绍
代码实现了从PC通过带GSM modem的GSM手机发送短消息。
背景
我们所使用的AT命令被用于电脑和MODEM间的通讯。
Microsoft windows提供了超级终端软件可以实现这一通讯过程。
开始->程序->附件->通讯->超级终端
可以在里面输入AT命令,超级终端与MODEM/手机直接通讯来控制它们。
它返回OK或错误信息的回应。如果我们需要在应用程序中发送SMS,需要手工键入命令的超级终端就用不上了。
你需要选择MODEM/手机所连接的COM端口(对于MODEM端口可以是串口,对于手机可以是USB端口)
请参考下面的代码:

收件,连接MODEM或手机。到设备管理器查看MODEM/手机连接到了哪个COM口(如COM3,COM4)

下载源代码

介绍

代码实现了从PC通过带GSM modem的GSM手机发送短信。

背景

我们所使用的AT命令被用于电脑和MODEM间的通讯。

Microsoft windows提供了超级终端软件可以实现这一通讯过程。

开始->程序->附件->通讯->超级终端

可以在里面输入AT命令,超级终端与MODEM/手机直接通讯来控制它们。

它返回OK或错误信息的回应。如果我们需要在应用程序中发送SMS,需要手工键入命令的超级终端就用不上了。

你需要选择MODEM/手机所连接的COM端口(对于MODEM端口可以是串口,对于手机可以是USB端口)

请参考下面的代码:

首先,连接MODEM或手机。到设备管理器查看MODEM/手机连接到了哪个COM口(如COM3,COM4)

//
// 如果设备管理器中显示是 COM3,请把COM4改为COM3
//

Dim SMSEngine As New SMSCOMMS("COM4")

'端口需要初始化

SMSPort = New SerialPort
        With SMSPort
            .PortName = COMMPORT
            .BaudRate = 19200
            .Parity = Parity.None
            .DataBits = 8
            .StopBits = StopBits.One
            .Handshake = Handshake.RequestToSend
            .DtrEnable = True
            .RtsEnable = True
            .NewLine = vbCrLf
        End With 

'将AT命令写入串口
SMSPort.WriteLine("AT")

'命令信息格式为文本模式:1
SMSPort.WriteLine("AT+CMGF=1" & vbCrLf) 

'设置服务中心号码
SMSPort.WriteLine("AT+CSCA=""+919822078000""" & vbCrLf)             
' 短信接收者的手机号码
SMSPort.WriteLine("AT+CMGS=  + TextBox1.text + " & vbCrLf) 
_ContSMS = False
SMSPort.WriteLine("+ TextBox1.text +" & vbCrLf & Chr(26)) '发送短信

Dim i As Integer
Private Sub Button1_Click(ByVal sender As System.Object,
       ByVal e As System.EventArgs) Handles Button1.Click

        SMSEngine.Open() '打开端口
        SMSEngine.SendSMS() '发送短信

End Sub
代码中定义了一个SMSCOMMS类,代码很简单,查看注释便能理解。

关于服务中心号码(service center number)
移动公司通常已经将正确的服务中心号码预设在SIM卡的配置文件中。许多手机都提供给用户查看或更改服务中心号码的方法。例如,Nokia 6021手机可以通过菜单->消息->消息设置->文字消息->发送配置->默认配置->消息中心号码 查看。
一些GSM/GPRS modem和手机(例如Nokia 6021,Sony Ericsson T68i, Philips 598等)会将配置文件中的服务中心号码作为+CSCA AT命令的默认值,对于这些机子,如果默认的服务中心号码是正确的,你不需要用+CSCA AT命令来设置。
代码我在NOKIA 5310,NOKIA 3500上测试过了,都能正常工作。

评论 [发表评论]
账号 密码 还没帐号呢,现在注册一个?

免责声明:好库网所展示的信息由买卖双方自行提供,其真实性、准确性和合法性由信息发布人负责。好库网不提供任何保证,并不承担任何法律责任。