GSM Communication on EBox4300--(3)

2018-01-11 14:36:02 浏览数 (1)

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

   根据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 CMSS:从SIM卡内存中发送短消息

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

    AT CPMS:选择短消息内存

    AT CSCA:短消息中心地址

    AT CSCB :选择蜂窝广播消息

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

    AT CSMS:选择短消息服务

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

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

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

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

    EBox4300给TC35i发送指令,其实就是往串口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!

0 人点赞