<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • 基于ARM9工控主板的SMS短信息應用

     2011-1-27              

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

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

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

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

      對于用戶來說,使用SMS類來發送短信,僅執行幾個步驟即可。下面則按次序對使用該類SMS來發送短信息的方法進行說明。(例如:用戶程序中實例化了一個對像:class SMS MySMS;  )

    1、對GPRS模塊進行上電

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

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

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

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

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

    3、初始化SMS短信模塊

      MySMS.InitSMSModem();

    4、填寫要發送的手機號及數據

      如:要發送信息“英創嵌入式:WinCE!”到13800000000號碼
      struct  SMS_DATA  SendData; // 定義一個發送數據的數據結構
      SendData.PhoneNum=”13800000000”; // 填寫接收短信的手機號
      SendData.DBuf=”英創嵌入式:WinCE!”; // 填寫要發送的數據。

    5、啟動發送

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

    6、關閉GPRS模塊連接的串口

      當不用GPRS發送短信時,需要關閉對應的串口。
      MySMS.ClosePort(); // 關閉GPRS模塊所占用的串口

      在SMS類直接支持中文短信的發送,所以短信發送的模式均采用PDU模式。對于中文字符,在短信發送時還需要轉換為unicode碼,程序代碼中已經實現了中文內碼到unicode 碼的自動轉換,客戶在測試該程序時,需要注意的是要將unicode 的相關的3個轉換文件復制到系統的/nandflash中。

      gsm0338.bin
      gb2312.bin
      unicode.bin

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

    国产精品免费看久久久| 国产69精品久久久久999三级| 尤物精品视频一区二区三区| 久久精品一区二区三区日韩| 高清在线亚洲精品国产二区| 亚洲国产成人精品无码区在线网站| 亚洲精品人成无码中文毛片| 国产亚洲精品AAAA片APP| 91精品国产91久久久久青草| 国产精品亚洲片在线观看不卡| 久热国产精品视频一区二区三区| 亚洲精品中文字幕无码蜜桃| 第一福利永久视频精品| 成人h动漫精品一区二区无码| 亚洲综合精品香蕉久久网97| 国产在线精品福利大全| 精品人妻一区二区三区四区| 精品国产乱码欠欠欠欠精品| 精品无码免费专区毛片| 99久久国产综合精品女图图等你 | 亚洲精品国产综合久久久久紧| 国内精品综合久久久40p| 国产精品JIZZ在线观看老狼| 国产精品午夜电影| 好吊操这里只有精品| 午夜国产精品免费观看| 国产精品视频网站你懂得| 中文字幕精品视频| 久久精品无码专区免费东京热| 国产精品久线观看视频| 麻豆麻豆必出精品入口| 亚洲精品免费在线| 亚洲精品成人图区| 精品久久久无码21p发布| 久久久久se色偷偷亚洲精品av| 国产精品无码A∨精品影院| 国产在线国偷精品免费看| 99精品免费视品| 在线精品亚洲一区二区小说| 精品久久久久久综合日本| 久久精品国产精品青草app|