基于ARM-Linux與GPRS技術的家庭智能控制終端(2)
2012年02月02日 17:05 來源:本站整理 作者:秩名 我要評論(0)
4.2.1接收和發送SMS短信
(1)編碼轉換:要發送中文短信就需要使用PDU模式的16-bit編碼。在Linux系統中默認用GB2312保存中文字符。發送短信前,要先進行編碼轉換,要將GB2312轉換為Unicode編碼,再將Unicode編碼轉換為 PDU 的16-bit 編碼。這里使用Linux中的iconv () 函數,該函數可以實現Linux支持的任意的兩種編碼之間的轉換。實現的方法:首先用iconv_open(),打開一個轉換句柄,指定兩種轉換前的編碼和轉換后的編碼。然后用 icnov() 作轉換。最后用 iconv_close()關閉句柄,釋放資源。完成轉換后,即可以正確的發送。(2)發送:向MC35模塊發送一條AT指令,得到OK響應,則表示控制器與GPRS模塊通訊正常,通過“AT+CSCA=“***”及AT+CSCA=0命令設置設置短信中心號碼及短信格式(PDU)。然后發送 AT+CMGS = "電話號碼",得到提示符號“>”,此時可以向MC35模塊發送編輯好的PDU編碼并以“CTRL+Z”結束。得到響應OK,則發送成功;如果收到 ERROR則表示發送失敗,重新初始化MC35模塊,發送信息[4]。(3)接收:當收到短信時,發送”“AT+CMGR=X”從SIM卡讀取短消息并調用短信處理程序作相應轉換。
4.2.2 GPRS聯網在Linux下的實現
GPRS聯網是Linux的PPP協議實現的。因此在編譯內核時需要增加Linux內核的PPP支持[5]。然后根據程序中提供的配置信息,包括移動的APN*/為“CMNET”,通訊協議IP,撥號號碼 “*99***1#”,串口設備號/dev/ttyS2,波特率9600,用戶名,密碼等信息配置PPP協議需要的5個腳本和配置文件:ppp-on、 ppp-off、options.gprs、dialer.gprs、pap-secrets。完成設置后,運行ppp-on,就可以進行GPRS撥號;運行ppp-off斷開連接。
GPRS聯網流程(控制器作為客戶端):(a)當用戶希望通過網絡訪問GPRS模塊時可以通過短信方式向主機 GPRS模塊發送聯網命令,包括用戶的IP地址和相關配置信息。(b)主機根據用戶短信獲得GPRS上網連接的配置信息,并生成對應的撥號腳本文和配置文件。調用ppp-on腳本進行PPP撥號。(c)判斷PPPD是否撥號成功,標志是能否生成ppp0網絡設備。(d)在數據傳輸過程中通過看門狗實時觀測網絡連接狀態,網絡掉線時,主機保存當前數據狀態,重新啟動GPRS模塊并恢復連接。(e)結束本次任務時,用戶在網上發送命令,讓控制器調用ppp- off,斷開連接。
4.3系統軟件流程
軟件流程如圖2所示,系統上電啟動后,首先對包括串口,LCD,鍵盤, GPRS模塊以及網絡配置文件等做相應的初始化。并檢測GPRS模塊和主機是否通訊正常。然后開始對從機進行輪詢,發現警情時,讀取并存儲報警信息,啟動報警器并將相應的報警信息通過撥號和短信的方式通知用戶。當收到用戶命令時,先判斷用戶的控制方式,再做出做出回應。
5 總結與展望
整套方案對家庭智能控制器系統實現中存在的主要問題提出詳細的解決方案,并且在實踐中證明了其可實施性。此外,由于該控制器具備GPRS控制器的基本功能,只需在應用程序部分做相應修改,可用作其它無線遠程控制設備,具有通用性和可擴展性。
本文導航
- 第 1 頁:基于ARM-Linux與GPRS技術的家庭智能控制終端(1)
- 第 2 頁:GPRS的無線數據傳輸