<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x
    查看: 3406|回復: 0
    打印 上一主題 下一主題

    基于CGI的無線路由中短信功能設計

    [復制鏈接]
    跳轉到指定樓層
    樓主
    發表于 2016-10-26 15:42:48 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    關鍵詞: 無線路由 , 動態Web , CGI , 短信 , PDU
    摘要:移動通信中的短消息是人們無線溝通的重要方式,更以其方便、可靠性得到廣泛應用。針對嵌入式無線路由的迅速普及,為實現良好人機交互,提出將短消息功能植入可使用上網卡的無線路由的動態Web中。用C語言進行CGI程序設計,采用PDU短信模式,實現無線路由設備中短信的收發。實驗結果也證實了此方案的正確性、實用性和可擴展性。
    關鍵詞:無線路由;動態Web;CGI;短信;PDU
    為實現良好的人機交互及遠程控制功能,如今大部分嵌入式Linux設備均引入Web服務器技術,無線路由的迅速普及更體現了這一點。Goa head是一款主要面向嵌入式系統的Web服務器,因其支持asp、cgi且兼容性良好備受無線路由等嵌入式設備的青睞。而通用網關接口(CGI)則是Web服務器與為添加功能編寫的外部程序之間的一個接口。市面普及的無線路由器,管理界面鮮有收發短信的功能,這樣用戶可用功能受到限制。通過這個CGI接口實現從Web端編輯短信并發送,及上網卡接收短信并顯示與Web端等功能,實現了無線路由更智能的一面。
    1 嵌入式無線路由中的CGI技術
    1.1 CGI工作原理
    通用網關接口是Web服務器和外部擴展程序之間的一個接口。CGI可以使編寫的程序處理WWW上客戶端送來的表單和數據并對此做出相應反應。而且基于CGI的網頁應用程序可工作于不同的瀏覽器平臺,兼容性良好。
    CGI程序的工作一般分為以下幾個步驟:
    1)客戶端發出請求;
    2)Web服務器激活相應的CGI程序;
    3)CGI程序對客戶端的請求做出反應;
    4)Web服務器將CGI程序的處理結果傳送給客戶端;
    5)Web服務器中斷和客戶端瀏覽器的連接;
    6)Web服務器將CGI程序的輸出顯示在瀏覽器的窗體上。
    1.2 CGIC函數庫
    CGIC是用來生成基于CGI的WWW應用程序的C語言函數庫,C語言編程是一項復雜且容易出錯的工作,選擇合適的庫CGIC成為必要。一般的Linux系統都支持ANSIC,增加相應的庫函數和相應的h文件就可以實現CGI;而CGIC是一個完全符合ANSIC標準的程序庫,在任何支持ANSIC標準的系統平臺上都可以使用。
    它有以下功能:
    1)對數據進行語法分析;
    2)接收以GET和POST兩種方式發送的數據;
    3)把FORM中的不同域連接成連續的串;
    4)為檢索FORM數據而提供字符串,整數,浮點以及單項和多項選擇功能;
    5)為數字字段提供邊界檢測;
    6)把CGI環境變量加載到非空的C串中;
    7)為調試而捕捉CGI狀態;
    8)提供相對安全的系統調用功能。
    CGIC本身提供了一個main()函數,CGIC的用戶編寫的程序代碼應該放在函數cgiMain()中。CGIC的main()函數主要用來完成CGI程序的初始化工作、獲取客戶端用戶的輸入以及相應的解碼工作,最后main()函數會調用cgiMain()以執行用戶編寫的程序代碼。
    2 短信功能設計
    短信息服務作為目前最方便快捷的交流方式,工作原理也變得越來越標準化。通常對短消息的控制有3種實現途徑:Block模式,基于AT命令的Text模式和基于AT命令的PDU模式。使用Text模式收發短信代碼簡單,但最大的缺點是不能收發中文短信;而PDU模式不僅支持中文短信,也能發送英文短信。本文主要使用的是在Linux下用C語言來實現PDU模式的SMS收發。
    2.1 PDU模式下短信發送原理
    一個完整的SMS消息所包含的所有報頭信息被以二進制字符串格式傳送。這個二進制由十六進制格式的IA5字符組合而成。一般的PDU碼由13項組成:1)短信息中心地址長度,2位十六進制數(1字節);2)短信息中心號碼類型,2位十六進制數;3)短信息中心號碼,2)和3)的長度由1)中數據決定;4)文件頭字節,2位十六進制數;5)信息類型,2位十六進制數;6)被叫號碼長度,2位十六進制數;7)被叫號碼類型,2位十六進制數,取值同短信息中心號碼類型;8)被叫號碼,長度由被叫號碼長度中的數據決定;9)協議標識,2位十六進制數;10)數據編碼方案,2位十六進制數;11)有效期,2位十六進制數;12)用戶數據長度,2位十六進制數。13)用戶數據,其長度由用戶數據長度中的數據決定。數據編碼方案中設定采用UCS2編碼,這里是中英文的Unicode字符。
    常用AT命令如下表所示:

    2.2 PDU模式編碼
    用PDU模式收發短消息可以使用3種編碼:7-bit編碼、8-bit編碼和USC2編碼。7-bit編碼用于發送普通的ASCII字符;8-bit編碼通常用于發送數據消息,如圖片或鈴聲等;USC2編碼用于發送Unicode字符。由于短信需實現中文短信的發送,所以選擇用UCS2編碼,即中文Unico de碼。這些編碼均有標準算法。
    3 軟件設計
    3.1 串口通信
    嵌入式無線路由是通過串口發送一系列AT命令實現與無線路由的各種通信,短消息的收發也是通過這種方式。串口通信是計算機與其他設備通信的常用方法,本系統采用libcsms這個基于Linux的串行通信函數庫,來實現串行接口的異步事件驅動并發。采用該方法,只需要在cgi中編寫數據處理函數,大大提高了工作效率。
    3.2 短信發送頁面設計
    Html代碼發送短信部分,為簡化cgi程序工作,在web端通過腳本函數ucs2_code()將短信內容先做處理。ucs2_code()函數具體功能為:讀取短信內容,循環獲取短信的每一位并通過charCodeAt()和toString()方法結合轉換為單獨的Unicode碼,再根據長度補齊;如此得到整個短信內容的Unicode碼及此編碼的長度。
    再通過form提交表單,提交內容有:手機號碼,手機內存寫入狀態,處理后的短信Unicode碼和長度。部分代碼如下:

    3.3 CGI發送短消息
    Cgi發送短信主函數處理消息部分通過環境變量,讀取form表單提交的值;先讀取手機號碼,若成功則處理手機號碼后繼續讀取短信內容的Unicode碼,若成功則讀取短信長度,若成功則將短消息參數結構中的SMSC地址的變量賦相應值。再讀取短信是發送還是保存的狀態。如此完成整個web頁面短消息的處理過程。
    發送短信主函數部分代碼如下所示:



    發送短消息在gsmSendMessage中實現,先根據PDU參數,編碼PDU串;再通過PDU串和其中SMSC信息的長度,生成發送命令。向串口輸入命令,根據返回值ans判斷模塊是否準備就緒,是則繼續輸入PDU串,返回TRUE,則發送成功;否則返回FALSE。
    發送短信流程圖如圖1所示。


    4 結束語
    設計的創新之處在于提供了基于CGI的嵌入式無線路由中上網卡模塊的短信收發功能的設計方法。短信收發采用PDU模式處理中文、英文短信;功能是通過用C語言編寫的CGI實現。在web端與iavascript結合,實現動態web的高效運行。對于基于Linux的無線路由設備已慢慢滲透人們日用的各個角落成為必需品,如果將短信收發功能添加其中,更能增加此設備智能的功能,為用戶提供更便利的服務。   
                                   
                                                                   
                                   
                   
    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷