前面數次連載我們以較長的篇幅講解了串口通信的硬件原理、DOS平台控制以及基於WIN32 API、控件和第三方類的串口編程。作為本系列文章的最後一次連載,本章將給出一個典型的應用實例:西門子短信服務模塊TC35的串口控制。
1.短信控制終端
作為短信 (Short Message Service,SMS)一族,想必你有這樣的體會:用手機編輯短信息十分不便、容易出錯,而且修改費時,若能用計算機來收發短信則方便許多。注意,本文所說的用計算機收發短信並不是說通過"網易短信王"等方式在Internet上收發短信,而是直接用計算機控制運行了GSM通信系統的短信終端進行收發,因而其收發短信的原理與手機是本質相同的。
實際上,一大堆的垃圾短信也是采用這種短信終端發出來的!
我們來介紹一款GSM模塊,它就是西門子公司的TC35,它由GSM基帶處理器、電源專用集成電路、射頻電路和閃速存儲器等部分組成,負責處理GSM蜂窩設備中的音頻、數據和信號,內嵌的軟件部分執行應用接口和所有GSM協議棧的功能。TC35支持中文短信息,工作在EGSM900和GSM1800雙頻段,電源范圍為3.3~5.5V,可傳輸語音和數據信號,消耗功率在EGSM900(4類)和GSM1800(1類)分別為2W和1W,通過接口連接器和天線連接器分別連接SIM卡讀卡器和天線。TC35的數據接口(CMOS電平)通過AT命令可雙向傳輸指令和數據,可選波特率為300bit/s~115kbit/s,自動波特率為1.2k~115kbit/s。它支持文本和PDU格式的,可通過AT命令或關斷信號實現重啟和故障恢復。
我們需要利用以TC35模塊為主的硬件組成一個TC35終端設備,並與電腦通過RS-232C串口相連,並自行編制在PC上運行的短信息收發軟件,就可以組成一個短信收發系統。
TC35的控制主要包含如下幾類指令:
(1)初始化指令
設置短消息發送格式AT+CMGF=1,設置1代表PDU模式,是回車符號,也就是0x0d,指令正確則模塊返回OK,是回車換行符號。
(2)設置/讀取短消息中心
短消息中心號碼由移動運營商提供。
設置短消息中心的指令格式為:
AT+CSCA=″+8613800531500″(短消息中心)
設置正確則模塊返回OK。
讀取短消息服務中心則使用命令:
AT+CSCA=?
TC35模塊應該返回:
+CSCA:″8613800531500″。
(3)設置短消息到達自動提示
設置短消息到達自動提示的指令格式為:
AT+CNMI=1,1,0,0,1
設置正確則TC35模塊返回:
OK。
設置此命令可使模塊在短消息到達後向串口發送指令:
+CMTI:″SM″,INDEX(信息存儲位置)。
通過TC35發送短消息的方法為:
PC上的控制軟件按照PDU的格式發送和接收數據,短消息的內容可以是中文或者其他字符。在PDU模式,如果發送短消息,則首先發送短消息數據的長度:
AT+CMGS=
等待TC35模塊返回ASCII字符">",則可以將PDU數據輸入,PDU數據以(也就是0x1a)作為結束符。短消息發送成功,模塊返回:
OK
通過TC35接收短消息的方法為:
短消息到來後,串口上會接收到指令
+CMTI:″SM″,INDEX(信息存儲位置)
PC上的控制軟件通過讀取PDU數據的AT命令
AT+CMGR=INDEX
將TC35模塊中PDU格式的短消息內容讀出。如果用+CMGL代替+CMGR,則可一次性讀出全部短消息。
通過TC35刪除短消息的方法為:
PC上的控制軟件收到一條短消息並處理後,需要將其在SIM卡上刪除,以防止SIM卡飽和。刪除短消息的指令為:
AT+CMGD=INDEX
刪除後模塊返回
OK
2.程序實例
由於本文的宗旨在於講解串口通信,因此,我們屏蔽圖形用戶界面的細節,制作一個簡單的短信收發軟件,它包含了控制短信終端的所有串口通信內容。實際上,一個理想的短信收發軟件的界面應類似於Outlook或Foxmail,包含收件箱、發件箱、已發送短信箱等內容,但是這些東西都與我們要介紹的串口通信無關,因此,下面的軟件界面雖"敗絮其外",但仍可稱得上"金玉其中":
關於界面上控件的描述如下:
BEGIN
EDITTEXT IDC_SMSCONTENT_EDIT,39,61,242,38,ES_AUTOHSCROLL
PUSHBUTTON "發送",IDC_SEND_BUTTON,316,80,45,18
GROUPBOX "接收短消息",IDC_STATIC,28,124,361,167
LTEXT "對方手機號",IDC_STATIC,41,35,42,11
EDITTEXT IDC_PHONENUM_EDIT,88,30,192,17,ES_AUTOHSCROLL
PUSHBUTTON "清除",IDC_CLEAR_BU
[1] [2] [3] [4] 下一頁