西门子GPRS模块开发详解
来源:互联网 发布:天龙八部暗器炼毒数据 编辑:程序博客网 时间:2024/05/01 18:07
以模块MC55为例,MC55是SIEMENS(西门子)公司推出的GSM/GPRS三频模块,主要为语音传输、短消息和GPRS数据业务提供无线接口。MC55集成了完整的RF射频电路和GSM的基带处理器,十分适合开发一些基于GSM/GPRS的无线应用产品,如监控、调度、车载、遥控、远程测量、定位和导航等领域的系统和产品,应用范围十分广泛。用户只需投入少量的研发费用,就可以在较短的研发周期内集成自己的应用系统。
常用的AT命令如下表所示:
功能名称
AT命令
解释
厂家认证
AT+CGMI
获得厂家的标识
模式认证
AT+CGMM
查询支持频段
修订认证
AT+CGMR
查询软件版本
生产序号
AT+CGSN
查询IMEI序号
查询IMSI
AT+CIMI
查询国际移动电话支持认证
卡的认证
AT+CCID
查询SIM的序列号
关闭电源
AT+CPOE
暂停模块的运行
报告错误
AT+CMEE
报告模块设备错误
拨号命令
ATD
拨打电话号码
挂机命令
ATH
挂机
回应呼叫
ATA
当模块被呼叫时回应呼叫
关机命令
AT+CPOF
停止GSM软件堆栈和硬件层
声音控制
AT+CRSL
设定电话铃声的声音级别
时钟管理
AT+CCLK
设置或获得真实时钟
警报管理
AT+CALA
设定警报日期
设定电话机能
AT+CFUN
选择移动站点的机能水平
网络连接设置
AT^SICS
创建Internet连接到GPRS
网络服务设置
AT^SISS
指定服务器类型
开启网络服务
AT^SISO
启动GPRS连接
关闭网络服务
AT^SISC
关闭GPRS连接
读网络数据
AT^SISR
读取GPRS接收数据
写网络数据
AT^SISW
通过GPRS发送数据
接着是与GPRS有关的AT指令详解
- (1)AT^SICS(Internet Connection Setup Profile)
命令格式:AT^SICS: <conProfileId>, <conParmTag>, <conParmValue>
conProfileId指连接平台,可以建立0-5共6个不同的连接。conParmTag指连接参数,包括user、passwd、apn等,conParmValue指提供的连接类型,包括GPRS0、CSD(电路交换数据业务)、none(清空)三种方式。
举例说明如下:
AT^SICS: 0,"conType","GPRS0" //连接平台0,连接方式是GPRS
AT^SICS: 0,"user","nd" //连接平台0,设置用户名
AT^SICS: 0,"passwd","nd" //连接平台0,设置密码
AT^SICS: 0,"apn","cmnet" //连接平台0,设置APN
AT^SICS: 1,"conType","" //连接平台1,空
AT^SICS: 2,"conType","" //连接平台2,空
AT^SICS: 3,"conType","" //连接平台3,空
AT^SICS: 4,"conType","" //连接平台4,空
AT^SICS: 5,"conType","" //平连接台5,空
- (2)AT^SISS(Internet Service Setup Profile)
命令格式:AT^SISS=<srvProfileId>, <srvParmTag>, <srvParmValue>
Srvprofield是服务配置ID,可以建立0-9共10个配置ID,如说可以用AT^SISS将配置0作socket,配置1作HTTP,配置2作FTP等,然后要启用哪个服务,就用AT^SISO=0或1或2打开哪个服务,要关掉哪个服务就用AT^SISC=0或1或2关闭哪个服务。一般的数据传输用的都是socket服务, SISS指令里的ConID是指当前服务调用哪个连接配置ID,连接配置ID可以设定6个,可以用AT^SICS=0,apn,cmnet或者AT^SICS=1,apn,cmwap设定不同的APN,根据不同的应用,调用不同的连接配置。
举例说明如下:
AT^SISS: 0,"srvType","Socket" //第0个服务平台,服务类型为socket
AT^SISS: 0,"conId","0" //第0个服务平台,使用的连接平台为0
AT^SISS: 0,"address","" //第0个服务平台,目前设备的地址为空
AT^SISS: 1,"srvType","" //第1个服务平台
AT^SISS: 2,"srvType","" //第2个服务平台
AT^SISS: 3,"srvType","" //第3个服务平台
AT^SISS: 4,"srvType","" //第4个服务平台
AT^SISS: 5,"srvType","" //第5个服务平台
AT^SISS: 6,"srvType","" //第6个服务平台
AT^SISS: 7,"srvType","" //第7个服务平台
AT^SISS: 8,"srvType","" //第8个服务平台
AT^SISS: 9,"srvType","" //第9个服务平台
GPRS通讯模块MC55在使用时,需要进行通讯模块的初始化设置,校验用户名和密码,设置TCP/IP的地址与端口等。初始化时,需要MCU通过串行口按顺序给模块发送以下AT指令,设置模块及网络工作参数。
at^sics=0,conType,GPRS0 //设置GPRS工作模式
at^sics=0,user,cm //用户名称
at^sics=0,passwd,gprs //密码
at^sics=0,apn,cmnet //网络接入点名称
at^siss=1,srvType,socket // 设置服务类型为socket
at^siss=1,conId,0 //I.D.
at^siss=1,address,"socktcp://219.238.229.74:3000" //设置服务器地址及端口
at^siso=1 //打开端口,开始工作
- (3)AT^SISO(Interner Service Open)
命令格式:AT^SISO=<srvProfileId>
启动GPRS连接。
- (4)AT^SISC(Internet Service Close)
命令格式:AT^SISC=<srvProfileId>
关闭GPRS连接。
- (5)AT^SISR(Internet Service Read Data)
命令格式:AT^SISR=<srvProfileId>, <reqReadLength>
通过GPRS发送数据,实际上是通过串行口把数据写入到GPRS通讯模块,然后由GPRS模块发送到指定的IP端口。发送时需要按照以下顺序进行操作。
写串口:at^sisw=0,10 // 使用通道0, 发送10字节的数字
读串口:^SISW: 0, 10 // 网络响应
写串口:12312312342342342345 // 发送数据
读串口:OK // 接收响应 OK
读串口:^SISW: 0, 1 //接收网络响应,收到则已经发送成功
- (6)AT^SISW(Internet Service Write Data)
命令格式:AT^SISW=<srvProfileId>, <reqWriteLength>
接收GPRS的数据,即接收已经连接上的服务器发来的数据,可以通过串行口从GPRS模块中读取,按以下顺序进行操作:
读串口:^SISR: 0, 1 //接收到该信息则准备接收数据
写串口:at^sisr=0,20 //发送需要接收的数据长度
读串口:^SISR: 0, 20 //返回实际的数据长度
读串口:12312312342342342345 //所接收的数据
读串口:OK //接收成功
最后是案例分析
进行GPRS通信首先需要与服务器建立GPRS连接,即实现GPRS登陆。在登陆前需要使用AT指令对无线通信模块MC55进行初始化设置,设置内容包括连接方式、服务类型、接入点名称、服务器地址及端口。初始化完成后即可开启网络服务,模块会自动登录到服务器的相应端口上,登陆完成后就可以进行数据通信了。
具体实现程序如下所示:
(1)OutPut("at^sics=1,contype,gprs0/r/0"); //连接平台1,设置网络连接类型为gprs方式
// void OutPut(char *strings)函数的功能是通过串口向MC55输出数据
检测到通信模块返回“OK”则设置成功。
(2)OutPut("at^sics=1,apn,cmnet"); //设置apn为cmnet
检测到通信模块返回“OK”则设置成功。
(3)OutPut("at^siss=2,srvtype,socket/r/0"); //第2个服务平台,设置服务类型为socket
检测到通信模块返回“OK”则设置成功。
(4)OutPut("at^siss=2,conid,1/r/0"); //第2个服务平台,使用的连接平台为1
检测到通信模块返回“OK”则设置成功。
(5)OutPut("at^siss=2,address,socktcp://219.238.229.74:1200");//设置服务器地址及端口
检测到通信模块返回“OK”则设置成功。
(6)OutPut("at^siso=2/r/0"); //打开网络服务,MC55登陆到服务器相应的端口上
检测到通信模块返回“OK”则设置成功。
(7)OutPut("at^sisw=2,10/r/0"); //使用平台2向服务器发送10字节的数据包
if(strstr(buffer,"^SISW:")!=0) //检测到模块返回数据“^SISW:”后通过模块将需要发送的数据发送到服务器相应端口上
OutPut("1234567890/r/0"); //发送数据包
通过GPRS发送数据,实际上是通过串行口把数据写入到GPRS通讯模块,然后由GPRS模块发送到指定的IP端口。
(8)写串口:at^sisr=0,20 //发送需要接收的数据长度
读串口:^SISR: 0, 20 //返回实际的数据长度
读串口:12312312342342342345 //接收的数据
接收GPRS的数据,即接收已经连接上的服务器发来的数据,可以通过串行口从GPRS模块中读取。
(9)OutPut("at^sisc=2/r/0"); //关闭网络服务,MC55从服务器断开
转自http://blog.csdn.net/sdwuyulunbi/archive/2009/10/29/4743075.aspx
- 西门子GPRS模块开发详解
- 西门子MC55 GPRS模块的怪事
- 西门子GPRS模块控制变频器代码
- 全球最小的GPRS模块-西门子BGS2模块
- 西门子TC35模块开发知识
- Real2410-GPRS模块开发笔记
- GPRS模块开发初步(软件)
- GPRS模块与单片机开发的注意事项
- GPRS模块开发初步(硬件)
- GPRS模块开发初步(软件)
- 飞凌2440开发板的GPRS模块
- Cinterion(原西门子)于2011年2月14日情人节发布全球最小的GPRS模块---BGS2
- 西门子模块一级代理
- 西门子243模块通信
- lua—GPRS模块开发之I2C OLED模块驱动
- 2410和gprs模块的通信源代码及详解
- [详解] GPRS
- 使用AT命令和GPRS无线模块开发(软件)
- 关于program patterns的一些思考
- 竞赛模式
- 创建和删除win7/vista下的启动引导项 - BCD编辑器简介
- [转载]在Visual C++中调用Matlab的其他方法
- php 截取字符串
- 西门子GPRS模块开发详解
- SQL Server查询表结构的实现(转自:http://database.51cto.com/art/201010/230895.htm)
- 二分查找
- 软件加密狗简单实现
- Linux备份与压缩命令
- 一句话解释SEO
- Chrome浏览器支持Native Client,应该也是一种插件技术
- 英文已如此搞笑,翻译却更加残暴
- 对话框ICON设定