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