GSM Communication on EBox4300--(3)

    GSM Communication on EBox4300--(1)主要是关于EBox4300上实现GSM通信的框架;GSM Communication on EBox4300--(2)陈述了硬件的制作;这次就讲讲EBox4300TC35i的通信吧。

   根据TC35i的“TC35i_ATC_V01.03”文档,我们可以使用AT指令来控制它的行为。由于之前的硬件设计中,没有加入耳机和麦克风,所以诸如打电话之类的语音试验这里就不能进行了,发短信是最简单直接的一个试验。短信有关的AT指令如下:

    AT+CMGC发出一条短消息

    AT+CMGD删除SIM卡内存的短消息

    AT+CMGF选择短消息信息格式:0-PDU;1-文本

    AT+CMGL列出SIM卡中的短消息PDU/text: 0/"REC UNREAD"-未读,1/"REC READ"-已读,2/"STO UNSENT"-待发,3/"STO SENT"-已发,

                4/"ALL"-全部的

    AT+CMGR读短消息

    AT+CMGS发送短消息

    AT+CMGW SIM内存中写入待发的短消息

    AT+CMSSSIM卡内存中发送短消息

    AT+CNMI显示新收到的短消息

    AT+CPMS选择短消息内存

    AT+CSCA短消息中心地址

    AT+CSCB 选择蜂窝广播消息

    AT+CSMP设置短消息文本模式参数

    AT+CSMS选择短消息服务

   上述AT指令是通过串口来交互的,根据我之前写的文章Serial Port Debug on EBox4300,就在EBox4300上可以通过串口来和TC35i通信了。

   对串口的操作可以用托管代码来实现,即使用System.IO.Ports中的SerialPort,主要就是OpenCloseReadWrite功能。设计一个简单的界面来显示正在进行的串口操作,如下图1所示:

1:一个简单的UI调试界面

   上图中,12ZigBeeEBox4300的串口1)信号发送和接收的显示窗口;34GSM短信息发送和接收的显示窗口;5是目标用户的手机号码输入框;6是进行简单操作的按钮,包括串口打开、关闭,TC35i模块的初始化,发送、接收显示区的清空等等。

    EBox4300TC35i发送指令,其实就是往串口2写字符,串口2输出可以用m_serialPort2.Write();

   例如,初始化短信模式设置的时候,可以使用:

//set AT+CMGF=1+回车换行

m_serialPort2.Write(new char[] { 'A', 'T', '+', 'C', 'M', 'G', 'F', '=', '1' }, 0, 9);

m_serialPort2.Write(new byte[] { 0x0D }, 0, 1);

m_serialPort2.Write(new byte[] { 0x0A }, 0, 1);

   特别需要注意的是:短信内容发送完毕必须以十六进制数0x1A结束,例如,发送短信时,先发送对方号码,然后发送数据:

//发送text中输入的对方手机号码

stATCommand = "AT+CMGS=+86" + textBoxPhoneNumber.Text;

btATCommand = stATCommand.ToCharArray();

m_serialPort2.Write(btATCommand, 0, 22);

m_serialPort2.Write(new byte[] { 0x0D }, 0, 1);

m_serialPort2.Write(new byte[] { 0x0A }, 0, 1);

Thread.Sleep(15);

m_serialPort2.Write(new char[] { 'H', 'e', 'l', 'l', 'o'}, 0, 5);

//set SMS end symbol

m_serialPort2.Write(new byte[] { 0x1A }, 0, 1);

   至此,在EBox4300上实现GSM网络联网,发送短信的部分已经完成,希望对大家有用,谢谢关注!

   项目的演示,可以观看Youtube上的视频,链接地址:http://www.youtube.com/watch?v=EOiiRbr0q5I

Enjoy!

posted on 2008-12-02 23:50  施炯  阅读(1678)  评论(5编辑  收藏