西门子GPRS模块开发详解
以模塊MC55為例,MC55是SIEMENS(西門子)公司推出的GSM/GPRS三頻模塊,主要為語音傳輸、短消息和GPRS數(shù)據(jù)業(yè)務(wù)提供無線接口。MC55集成了完整的RF射頻電路和GSM的基帶處理器,十分適合開發(fā)一些基于GSM/GPRS的無線應(yīng)用產(chǎn)品,如監(jiān)控、調(diào)度、車載、遙控、遠(yuǎn)程測量、定位和導(dǎo)航等領(lǐng)域的系統(tǒng)和產(chǎn)品,應(yīng)用范圍十分廣泛。用戶只需投入少量的研發(fā)費(fèi)用,就可以在較短的研發(fā)周期內(nèi)集成自己的應(yīng)用系統(tǒng)。
常用的AT命令如下表所示:
| 功能名稱 | AT命令 | 解釋 |
| 廠家認(rèn)證 | AT+CGMI | 獲得廠家的標(biāo)識 |
| 模式認(rèn)證 | AT+CGMM | 查詢支持頻段 |
| 修訂認(rèn)證 | AT+CGMR | 查詢軟件版本 |
| 生產(chǎn)序號 | AT+CGSN | 查詢IMEI序號 |
| 查詢IMSI | AT+CIMI | 查詢國際移動(dòng)電話支持認(rèn)證 |
| 卡的認(rèn)證 | AT+CCID | 查詢SIM的序列號 |
| 關(guān)閉電源 | AT+CPOE | 暫停模塊的運(yùn)行 |
| 報(bào)告錯(cuò)誤 | AT+CMEE | 報(bào)告模塊設(shè)備錯(cuò)誤 |
| 撥號命令 | ATD | 撥打電話號碼 |
| 掛機(jī)命令 | ATH | 掛機(jī) |
| 回應(yīng)呼叫 | ATA | 當(dāng)模塊被呼叫時(shí)回應(yīng)呼叫 |
| 關(guān)機(jī)命令 | AT+CPOF | 停止GSM軟件堆棧和硬件層 |
| 聲音控制 | AT+CRSL | ????設(shè)定電話鈴聲的聲音級別 |
| 時(shí)鐘管理 | AT+CCLK | ????設(shè)置或獲得真實(shí)時(shí)鐘 |
| 警報(bào)管理 | AT+CALA | 設(shè)定警報(bào)日期 |
| 設(shè)定電話機(jī)能 | AT+CFUN | 選擇移動(dòng)站點(diǎn)的機(jī)能水平 |
| ??網(wǎng)絡(luò)連接設(shè)置 | AT^SICS | 創(chuàng)建Internet連接到GPRS |
| 網(wǎng)絡(luò)服務(wù)設(shè)置 | AT^SISS | ????指定服務(wù)器類型 |
| 開啟網(wǎng)絡(luò)服務(wù) | AT^SISO | ????啟動(dòng)GPRS連接 |
| 關(guān)閉網(wǎng)絡(luò)服務(wù) | AT^SISC | ????關(guān)閉GPRS連接 |
| 讀網(wǎng)絡(luò)數(shù)據(jù) | AT^SISR | ????讀取GPRS接收數(shù)據(jù) |
| 寫網(wǎng)絡(luò)數(shù)據(jù) | AT^SISW | ????通過GPRS發(fā)送數(shù)據(jù) |
接著是與GPRS有關(guān)的AT指令詳解
- (1)AT^SICS(Internet Connection Setup Profile)
命令格式:AT^SICS: <conProfileId>, <conParmTag>, <conParmValue>
conProfileId指連接平臺,可以建立0-5共6個(gè)不同的連接。conParmTag指連接參數(shù),包括user、passwd、apn等,conParmValue指提供的連接類型,包括GPRS0、CSD(電路交換數(shù)據(jù)業(yè)務(wù))、none(清空)三種方式。
舉例說明如下:
AT^SICS: 0,"conType","GPRS0"??????//連接平臺0,連接方式是GPRS
AT^SICS: 0,"user","nd"????????????//連接平臺0,設(shè)置用戶名?
AT^SICS: 0,"passwd","nd"??????????//連接平臺0,設(shè)置密碼???????
AT^SICS: 0,"apn","cmnet"??????????//連接平臺0,設(shè)置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是服務(wù)配置ID,可以建立0-9共10個(gè)配置ID,如說可以用AT^SISS將配置0作socket,配置1作HTTP,配置2作FTP等,然后要啟用哪個(gè)服務(wù),就用AT^SISO=0或1或2打開哪個(gè)服務(wù),要關(guān)掉哪個(gè)服務(wù)就用AT^SISC=0或1或2關(guān)閉哪個(gè)服務(wù)。一般的數(shù)據(jù)傳輸用的都是socket服務(wù),?SISS指令里的ConID是指當(dāng)前服務(wù)調(diào)用哪個(gè)連接配置ID,連接配置ID可以設(shè)定6個(gè),可以用AT^SICS=0,apn,cmnet或者AT^SICS=1,apn,cmwap設(shè)定不同的APN,根據(jù)不同的應(yīng)用,調(diào)用不同的連接配置。
舉例說明如下:
AT^SISS: 0,"srvType","Socket"???//第0個(gè)服務(wù)平臺,服務(wù)類型為socket
AT^SISS: 0,"conId","0"??????????//第0個(gè)服務(wù)平臺,使用的連接平臺為0
AT^SISS: 0,"address",""?????????//第0個(gè)服務(wù)平臺,目前設(shè)備的地址為空
AT^SISS: 1,"srvType",""???????????//第1個(gè)服務(wù)平臺
AT^SISS: 2,"srvType",""???????????//第2個(gè)服務(wù)平臺
AT^SISS: 3,"srvType",""???????????//第3個(gè)服務(wù)平臺
AT^SISS: 4,"srvType",""???????????//第4個(gè)服務(wù)平臺
AT^SISS: 5,"srvType",""???????????//第5個(gè)服務(wù)平臺
AT^SISS: 6,"srvType",""???????????//第6個(gè)服務(wù)平臺
AT^SISS: 7,"srvType",""???????????//第7個(gè)服務(wù)平臺
AT^SISS: 8,"srvType",""???????????//第8個(gè)服務(wù)平臺
AT^SISS: 9,"srvType",""???????????//第9個(gè)服務(wù)平臺
GPRS通訊模塊MC55在使用時(shí),需要進(jìn)行通訊模塊的初始化設(shè)置,校驗(yàn)用戶名和密碼,設(shè)置TCP/IP的地址與端口等。初始化時(shí),需要MCU通過串行口按順序給模塊發(fā)送以下AT指令,設(shè)置模塊及網(wǎng)絡(luò)工作參數(shù)。
at^sics=0,conType,GPRS0?????//設(shè)置GPRS工作模式
at^sics=0,user,cm???????????//用戶名稱
????at^sics=0,passwd,gprs???????//密碼
????at^sics=0,apn,cmnet?????????//網(wǎng)絡(luò)接入點(diǎn)名稱
at^siss=1,srvType,socket????//?設(shè)置服務(wù)類型為socket
????at^siss=1,conId,0???????????//I.D.
????at^siss=1,address,"socktcp://219.238.229.74:3000" //設(shè)置服務(wù)器地址及端口
????at^siso=1 //打開端口,開始工作
- (3)AT^SISO(Interner Service Open)
命令格式:AT^SISO=<srvProfileId>
啟動(dòng)GPRS連接。
- (4)AT^SISC(Internet Service Close)?
命令格式:AT^SISC=<srvProfileId>
關(guān)閉GPRS連接。
- ?(5)AT^SISR(Internet Service Read Data)
命令格式:AT^SISR=<srvProfileId>, <reqReadLength>
通過GPRS發(fā)送數(shù)據(jù),實(shí)際上是通過串行口把數(shù)據(jù)寫入到GPRS通訊模塊,然后由GPRS模塊發(fā)送到指定的IP端口。發(fā)送時(shí)需要按照以下順序進(jìn)行操作。
????寫串口:at^sisw=0,10???????????// 使用通道0, 發(fā)送10字節(jié)的數(shù)字
????讀串口:^SISW: 0, 10???????????// 網(wǎng)絡(luò)響應(yīng)
????寫串口:12312312342342342345???//?發(fā)送數(shù)據(jù)
????讀串口:OK?????????????????????// 接收響應(yīng) OK
????讀串口:^SISW: 0, 1????????????//接收網(wǎng)絡(luò)響應(yīng),收到則已經(jīng)發(fā)送成功
- (6)AT^SISW(Internet Service Write Data)
命令格式:AT^SISW=<srvProfileId>, <reqWriteLength>
接收GPRS的數(shù)據(jù),即接收已經(jīng)連接上的服務(wù)器發(fā)來的數(shù)據(jù),可以通過串行口從GPRS模塊中讀取,按以下順序進(jìn)行操作:
?????讀串口:^SISR: 0, 1????????//接收到該信息則準(zhǔn)備接收數(shù)據(jù)
?????寫串口:at^sisr=0,20???????//發(fā)送需要接收的數(shù)據(jù)長度
?????讀串口:^SISR: 0, 20???????//返回實(shí)際的數(shù)據(jù)長度
?????讀串口:12312312342342342345 //所接收的數(shù)據(jù)
?????讀串口:OK ?????????//接收成功
?
?
?
最后是案例分析
進(jìn)行GPRS通信首先需要與服務(wù)器建立GPRS連接,即實(shí)現(xiàn)GPRS登陸。在登陸前需要使用AT指令對無線通信模塊MC55進(jìn)行初始化設(shè)置,設(shè)置內(nèi)容包括連接方式、服務(wù)類型、接入點(diǎn)名稱、服務(wù)器地址及端口。初始化完成后即可開啟網(wǎng)絡(luò)服務(wù),模塊會(huì)自動(dòng)登錄到服務(wù)器的相應(yīng)端口上,登陸完成后就可以進(jìn)行數(shù)據(jù)通信了。
具體實(shí)現(xiàn)程序如下所示:
??? (1)OutPut("at^sics=1,contype,gprs0/r/0");???//連接平臺1,設(shè)置網(wǎng)絡(luò)連接類型為gprs方式
????????????????????????// void OutPut(char *strings)函數(shù)的功能是通過串口向MC55輸出數(shù)據(jù)
????檢測到通信模塊返回“OK”則設(shè)置成功。
??? (2)OutPut("at^sics=1,apn,cmnet");?????????? //設(shè)置apn為cmnet
檢測到通信模塊返回“OK”則設(shè)置成功。
(3)OutPut("at^siss=2,srvtype,socket/r/0");??//第2個(gè)服務(wù)平臺,設(shè)置服務(wù)類型為socket
檢測到通信模塊返回“OK”則設(shè)置成功。
(4)OutPut("at^siss=2,conid,1/r/0");?????????//第2個(gè)服務(wù)平臺,使用的連接平臺為1
檢測到通信模塊返回“OK”則設(shè)置成功。
(5)OutPut("at^siss=2,address,socktcp://219.238.229.74:1200");//設(shè)置服務(wù)器地址及端口
檢測到通信模塊返回“OK”則設(shè)置成功。??
(6)OutPut("at^siso=2/r/0");?????????//打開網(wǎng)絡(luò)服務(wù),MC55登陸到服務(wù)器相應(yīng)的端口上
檢測到通信模塊返回“OK”則設(shè)置成功。
(7)OutPut("at^sisw=2,10/r/0");??????//使用平臺2向服務(wù)器發(fā)送10字節(jié)的數(shù)據(jù)包
if(strstr(buffer,"^SISW:")!=0) //檢測到模塊返回?cái)?shù)據(jù)“^SISW:”后通過模塊將需要發(fā)送的數(shù)據(jù)發(fā)送到服務(wù)器相應(yīng)端口上
???? OutPut("1234567890/r/0");????????//發(fā)送數(shù)據(jù)包
通過GPRS發(fā)送數(shù)據(jù),實(shí)際上是通過串行口把數(shù)據(jù)寫入到GPRS通訊模塊,然后由GPRS模塊發(fā)送到指定的IP端口。
(8)寫串口:at^sisr=0,20????????? //發(fā)送需要接收的數(shù)據(jù)長度?
?????????讀串口:^SISR: 0, 20????????? //返回實(shí)際的數(shù)據(jù)長度?
?????????讀串口:12312312342342342345? //接收的數(shù)據(jù)
接收GPRS的數(shù)據(jù),即接收已經(jīng)連接上的服務(wù)器發(fā)來的數(shù)據(jù),可以通過串行口從GPRS模塊中讀取。
(9)OutPut("at^sisc=2/r/0");??????//關(guān)閉網(wǎng)絡(luò)服務(wù),MC55從服務(wù)器斷開
?
?
轉(zhuǎn)自http://blog.csdn.net/sdwuyulunbi/archive/2009/10/29/4743075.aspx
總結(jié)
以上是生活随笔為你收集整理的西门子GPRS模块开发详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 以太坊2.0区块链代码将于下个月最终确定
- 下一篇: python链表_python数据结构之