基于AT91RM9200短消息監控系統的設計與實現
3 系統軟件設計
系統軟件的設計主要是基于Linux下C的編程,無線監控程序是依照短消息收發的原理來對于GSM模塊的控制。
3.1 短消息收發的原理
短消息內容的最大長度為140 Byte。它的編碼主要有7位編碼,8位編碼,UC2編碼3種編碼方式。7位編碼是每Byte只使用低7位,每8 By te為一組,去掉最高位,重新編碼為7 Byte,因此,7位編碼實際可以表示到160 Byte。但7位編碼只能發送0x00~0x7F范圍內的字符,一般在發送英文短信時使用。編碼原理是:每8 Byte為一組,分別用A,B,C,D,E,F,G代表8 Byte,An代表每個Byte的位,則8 Byte重新編碼成如表1所示的7 Byte。本文引用地址:http://www.104case.com/article/148048.htm
8位編碼是所見即所得的編碼方式,即無需編碼,只要將二進制串直接發送即可。8位編碼方式適用于制定各種基于短消息的通訊協議。U C2編碼常用于中文或中英文混合內容發送,只能發送70個字符(1個UC2占2 Byte)。由于國內一般的編輯器多以GB編碼,因此,若要發送中文,需先將中文轉換為UC2編碼再發送。在手機上,通常的做法是如果全部為英文及半角字符,則以7位編碼發送,如果含有中文,則全部編碼為UC2發送。
短消息發送方式主要分為文本模式和PDU模式。文本模式其實是針對7位編碼做的一個封裝,它只能用于發送ANSI范圍的字符,發送方式較簡單。而PDU模式中所有短消息數據發送前都必須組織成PDU的格式,在PDU模式下發送短信比較復雜,需要自行組織PDU內容,但發送方式靈活,可以發送各種數據,也可以自行設定各PDU字段的內容。
3.2 常用的短消息AT指令
GSM無線模塊采用標準AT指令集通信,AT命令是用于控制TE(Terminal Equipment)(如PC等用戶終端)和MT(Mobile Terminal)(如移動臺等移動終端)之間的相互規則。AT命令類型主要分為基本命令、S寄存器命令、擴展以及廠商定義命令3類。
3.3 GSM程序的實現
ARM與GSM通信以ttyS1對應的串口為橋梁,與MG323提供的1個UART接口連接,支持短消息、電話本管理、數據業務、嵌入式TCP/UDP等功能。使用ARM發出AT指令集對GSM模塊進行相應的操作,能夠完成發短消息的功能。具體軟件流程如圖3所示。
對串口初始化的工作主要是波特率、校驗位和停止位設置。配置完串口的相關屬性,就可以對串口進行打井、讀寫操作了。在Linux系統中,所有的設備文件都位于“/dev”下,其中串口2對應的設備名為“/dev/ttyS1”,在Linux下對設備和對文件的操作方法是一樣的,因此對串口讀寫可以使用簡單的“read”,“‘write”函數完成。
對GSM模塊進行初始化工作主要是發送“AT”給MT(Mobil Terminal)看起是否有回復以確定ARM與GSM的串口工作正常。在確認串口正常工作后,發送“ATE0”命令關閉MT的回顯。
設置短信的通知方式、短信的格式(PDU)以及短信的編碼(USC2)。如果每個功能的設定都正常,最后按照PDV格式向指定用戶發送“GSM模塊初始化成功”的短信。
解析數據并發送短信主要是首先按PDU格式填充發送個MT的緩沖區的前46 Byte。然后打開數據存儲文件,用lseek函數將文件光標由文件結尾向前移動17 Byte。因為數據幀中的數據是以2 Byte的16進制來表示,所以首先將其合并成一個16位的短整型,然后將合并的數據與檢驗位相加。將數據處理后,最后發送短信并檢查MT回復中是否有+CMGS的指令,若有則代表短信發送成功。
4 結束語
以AT91RM9200處理器搭建嵌入式Linux系統,利用GSM/GPRS無線通信模塊實現短消息的發送。同時嵌入式系統加GSM模塊的系統組成體積小巧,工作穩定,適合偏遠地區或移動數據采集系統,提供了數據采集監控的新手段。隨著無線通信系統的不斷發展和成熟,它必將深入到生活的各個方面。
評論