激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

基于ARM9工控主板的SMS短信息應(yīng)用

 2011-1-27              

  英創(chuàng)公司的嵌入式工控主板均預(yù)裝WinCE5.0正版操作系統(tǒng),在工業(yè)控制及終端檢測設(shè)備中,具有低成本、低功耗、小尺寸等優(yōu)勢。在現(xiàn)在的工業(yè)應(yīng)用中,利用GSM無線信道進行數(shù)據(jù)通訊的無人值守及無線數(shù)據(jù)傳輸?shù)膽?yīng)用越來越廣泛,其中主要以GPRS數(shù)據(jù)通訊及SMS短信息方式為主。GPRS數(shù)據(jù)通訊是以TCP/IP方式進行通訊,GPRS模塊發(fā)送SMS短信,是通過串口發(fā)送AT指令來實現(xiàn)。

  英創(chuàng)公司基于ARM9工控主板,完善了GPRS模塊發(fā)送短信息的應(yīng)用方案。本文以EM9161+ETA300為例,說明SMS短信息的使用方法。

  英創(chuàng)公司對短信收發(fā)的操作函數(shù)封裝為類SMS,該類是基于串口類CCESerial派生的新類,并在基類中定義了虛函數(shù)PackagePro(),在SMS中重新實現(xiàn)該函數(shù)來處理SMS短信收、發(fā)的相關(guān)AT指令,并對所使用到的變量進行操作,且用戶可以根據(jù)自己不同的需求,重新實現(xiàn)該函數(shù)。該函數(shù)是SMS短信收發(fā)過程中主要的功能函數(shù)。SMS類定義的主要成員及使用到的數(shù)據(jù)結(jié)構(gòu)如下:

  struct SMS_DATA
  {
    unsigned char PhoneNum[16]; // 對端電話號碼
    struct Date d; // 日期:年月日
    struct Time t; // 時間:時分秒
    int DatLen; // 數(shù)據(jù)長度
    unsigned char DBuf[168]; // 短信數(shù)據(jù)內(nèi)容
  };
  // 基類的PackagePro()函數(shù)的重新實現(xiàn)
  // 主要作用是處理短信收發(fā)相關(guān)的AT指令
  int PackagePro( char* Buf, int len );
  // GPRS模塊的SMS工作模式的初始化
  // 主要是發(fā)送AT指令設(shè)置GPRS模塊工作參數(shù)
  int InitSMSModem( );
  // 通過GPRS模塊發(fā)送短信息
  // return = 0: SMS-SUBMIT ok!
  //        < 0: SMS-SUBMIT is rejected
  int SendMessage( struct SMS_DATA* pSMS );

  對于用戶來說,使用SMS類來發(fā)送短信,僅執(zhí)行幾個步驟即可。下面則按次序?qū)κ褂迷擃怱MS來發(fā)送短信息的方法進行說明。(例如:用戶程序中實例化了一個對像:class SMS MySMS;  )

1、對GPRS模塊進行上電

  EM9161管理GPRS模塊的電源,使用的是GPIO8和GPIO9兩條引腳,按照GPRS電源管理要求的時序進行IO操作,即可實現(xiàn)對GPRS模塊的電源進行控制。英創(chuàng)公司寫好了相關(guān)的操作函數(shù)GPRS_PM()在EM9161_ISA_DIO.h中,其描述如下:

  // 功能描述:該函數(shù)通過對EM9161的GPRS_STB和GPRS_AUX兩個管腳信號的操作,實現(xiàn)對GPRS模塊
  //           (MC39i或兼容模塊)的電源管理。
  //
  // 輸入?yún)?shù) OpMode: 電源管理功能索引號,有效索引號包括:
  //                  OpMode = 1: 對GPRS模塊進行上電操作,并把執(zhí)行該操作后電源狀態(tài)返回;
  //                  OpMode = 2: 對GPRS模塊進行強制關(guān)電,并把執(zhí)行該操作后電源狀態(tài)返回;
  //                  OpMode = 3: 讀取GPRS模塊當(dāng)前的電源狀態(tài)。
  //
  // 輸出參數(shù) pResult: 用于存儲讀取的電源狀態(tài)信息。
  //                   *pResult = 0: 表示GPRS模塊的電源已關(guān)閉;
  //                   *pResult = 1: 表示GPRS模塊的電源已加載成功;
  //
  // 返回值 = FALSE:操作失敗。
  //          TRUE: 操作正確。
  BOOL GPRS_PM( int OpMode, int* pResult );

  調(diào)用GPRS_PM()函數(shù)對GPRS模塊進行上電。由于GPRS模塊上電后,還要檢測SIM卡是否在線及信號強度是否可用,所以會占用相當(dāng)長的時間,建議在GPRS模塊上電成功后,延時10秒鐘時間再進行下面的操作。

2、打開GPRS模塊所占用的串口

  MySMS.OpenPort( 2, 57600 , 'n' , 8 , 1 ); //在這里,直接調(diào)用SMS類繼承//過來的成員OpenPort()函數(shù),其實,這里是調(diào)用的基類的成員函數(shù),即CCESerial的OpenPort()。

3、初始化SMS短信模塊

  MySMS.InitSMSModem();

4、填寫要發(fā)送的手機號及數(shù)據(jù)

  如:要發(fā)送信息“英創(chuàng)嵌入式:WinCE!”到13800000000號碼
  struct  SMS_DATA  SendData; // 定義一個發(fā)送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)
  SendData.PhoneNum=”13800000000”; // 填寫接收短信的手機號
  SendData.DBuf=”英創(chuàng)嵌入式:WinCE!”; // 填寫要發(fā)送的數(shù)據(jù)。

5、啟動發(fā)送

  MySMS.SendMessage( &SendData ); // 啟動短信發(fā)送

6、關(guān)閉GPRS模塊連接的串口

  當(dāng)不用GPRS發(fā)送短信時,需要關(guān)閉對應(yīng)的串口。
  MySMS.ClosePort(); // 關(guān)閉GPRS模塊所占用的串口

  在SMS類直接支持中文短信的發(fā)送,所以短信發(fā)送的模式均采用PDU模式。對于中文字符,在短信發(fā)送時還需要轉(zhuǎn)換為unicode碼,程序代碼中已經(jīng)實現(xiàn)了中文內(nèi)碼到unicode 碼的自動轉(zhuǎn)換,客戶在測試該程序時,需要注意的是要將unicode 的相關(guān)的3個轉(zhuǎn)換文件復(fù)制到系統(tǒng)的/nandflash中。

  gsm0338.bin
  gb2312.bin
  unicode.bin

  本文所示的例程僅在英創(chuàng)公司的ARM系列嵌入式主板上可用,如需該方案的源碼,請與英創(chuàng)公司聯(lián)系。

主站蜘蛛池模板: 国产爽片在线观看| 免费在线日韩| 黄色在线免费观看| 国产一区二区三区播放| 午夜精品同性女女| 91热视频在线| 久久久精品视频免费观看| 毛片在线看免费| 成人另类视频| 欧美一级毛片免费观看视频| 国产的一级毛片完整| 高清亚洲精品酒店一区| jul724青木玲中文字幕| 中文字幕在线播| 成人三级影院| 免费看一级欧美毛片视频| 国产理论最新国产精品视频| 国产高清自偷自在线观看| 久久中文网| 日韩欧美毛片| 亚洲国产高清视频在线观看| 99re66精品视频在线观看| 中国xxxx视频播放| 亚洲精品日韩在线一区| 男女全黄做爰视频免费看| 欧美啪| 国产在线一区二区三区| 国产精品第4页| 美国一级毛片片aa成人| 最新免费黄色网址| 精品特级一级毛片免费观看| 欧美日韩一本大道香蕉欧美| 亚洲国产高清视频在线观看| 亚洲人成在线观看一区二区| 最近在线更新中文字幕3| a丫久久久久久一级毛片| 九一在线完整视频免费观看| 日韩一级片免费| 日本特黄特色aaa大片免费欧 | 人与牲动交xxxxbbbb| 久草视频网站|