程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 深入淺出VC++串口編程之短信應用開發

深入淺出VC++串口編程之短信應用開發

編輯:vc教程

前面數次連載我們以較長的篇幅講解了串口通信的硬件原理、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] 下一頁

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved