版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
僅供個人參考深入淺串口編之短信用開發(fā)前面數(shù)次連載我們以較長的篇幅講解了串口通信的硬件原理平臺控制以及基于WIN32API控件和第三方類的串口編程。作為本系列文章的最后一次連載,本章將給出一個典型的應用實例:西門子短信服務模塊TC35的串口控制。短信控制終端作為短信(ShortMessageSMS)一族,想必你有這樣的體會:用手機編輯短信息十分不便、容易出錯,而且修改費時,若能用計算機來收發(fā)短信則方便許多。注意,本文所說的用計算機收發(fā)短信并不是說通過"網易短信王"方式在Internet上收發(fā)短信,而是直接用計算機控制運行了GSM通信系統(tǒng)的短信終端進行收發(fā),因而其收發(fā)短信的原理與手機是本質相同的。實際上,一大堆的垃圾短信也是采用這種短信終端發(fā)出來的!我們來介紹一款GSM塊,它就是西門子公司的,它基帶處理器、電源專用集成電路、射頻電路和閃速存儲器等部分組成,負責處理GSM蜂窩設備中的音頻、數(shù)據(jù)和信號,內嵌的軟件部分執(zhí)行應用接口和所有GSM協(xié)議棧的能TC35持中文短信息工作在GSM1800雙頻段電源范圍為,傳輸語音和數(shù)據(jù)信號,消耗功率在EGSM900(4類)和GSM1800(1類)分別為2W1W通過接口連接器和天線連接器分別連接卡讀卡器和天線TC35的數(shù)據(jù)接口(CMOS電平)通過AT命令可雙向傳輸指令和數(shù)據(jù),可選波特率為,自動波特率為1.2k~115kbit/s它支持文本和格式的,可通過AT命令或關斷信號實現(xiàn)重啟和故障恢復。我們需要利用以TC35模塊為主的硬件組成一個TC35終端設備,并與電腦通過串口相連,并自行編制在PC運行的短信息收發(fā)軟件,就可以組成一個短信收發(fā)系統(tǒng)。端電路如下圖所示:控制主要包含如下幾類指令:(1)初始化指令不得用于商業(yè)用途
僅供個人參考設置短消息發(fā)送格式AT+CMGF=1<CR>設置代表PDU模式是回車符號,也就0x0d指令正確則模塊返回CRLF>OK<CRLF>,<CRLF>回車換行符號。(2)設置讀取短消息中心短消息中心號碼由移動運營商提供。設置短消息中心的指令格式為:AT+CSCA=″+86短消息中心)設置正確則模塊返回<。讀取短消息服務中心則使用命令:AT+CSCA=?<CR>塊應該返回:<CRLF>+CSCA:″86″<CRLF>。(3)設置短消息到自動提示設置短消息到達自動提示的指令格式為:設置正確則塊返回:。設置此命令可使模塊在短消息到達后向串口發(fā)送指令:<CRLF>+CMTI:″SM″,INDEX(息存儲位置)<CRLF>。通過送短消息的方法為:PC上的控制軟件按照的格式發(fā)送和接收數(shù)據(jù),短消息的內容可以是中文或者其他字符。PDU模式,如果發(fā)送短消息,則首先發(fā)送短消息數(shù)據(jù)的長度:等待塊返回字符"則以將數(shù)據(jù)輸入PDU數(shù)據(jù)以<Z>(也就0x1a)作為結束符。短消息發(fā)送成功,模塊返回:不得用于商業(yè)用途
僅供個人參考<CRLF>OK<CRLF>通過收短消息的方法為:短消息到來后,串口上會接收到指令<CRLF>+CMTI:″SM″,INDEX(信息存儲位置)<CRLF>PC上的控制軟件通過讀取數(shù)據(jù)的AT命令將塊中PDU格式的短消息內容讀出如果用+CMGL代替+CMGR則可一次性讀出全部短消息。通過除短消息的方法為:PC上的控制軟件收到一條短消息并處理后,需要將其在SIM卡上刪除,以防止SIM卡和。刪除短消息的指令為:AT+CMGD=INDEX<CR>刪除后模塊返回<CRLF>OK<CRLF>useonlyinstudyandresearch;notcommercialuse程序實例由于本文的宗旨在于講解串口通信,因此,我們屏蔽圖形用戶界面的細節(jié),制作一個簡單的短信收發(fā)軟件,它包含了控制短信終端的所有串口通信內容。實際上,一個理想的短信收發(fā)軟件的界面應類似于OutlookFoxmail,包含收件箱、發(fā)件箱已發(fā)送短信箱等內容,但是這些東西都與我們要介紹的串口通信無關,因此,下面的軟件界面雖"敗絮外",但仍可稱得"金玉其中:不得用于商業(yè)用途
僅供個人參考關于界面上控件的描述如下:BEGINEDITTEXTIDC_SMSCONTENT_EDIT,39,61,242,38,ES_AUTOHSCROLLPUSHBUTTON"發(fā)送"GROUPBOX"接短消息",IDC_STATIC,28,124,361,167LTEXT"對方手機號,IDC_STATIC,41,35,42,11EDITTEXTIDC_PHONENUM_EDIT,88,30,192,17,ES_AUTOHSCROLLPUSHBUTTON"清除",IDC_CLEAR_BUTTON,316,30,45,18GROUPBOX"發(fā)短消息"LISTBOXLBS_NOINTEGRALHEIGHT|PUSHBUTTON"接收"PUSHBUTTON"清空"對話框類的消息映射為:BEGIN_MESSAGE_MAP(CSMSControlDlg,//{{AFX_MSG_MAP(CSMSControlDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_SEND_BUTTON,OnSendButton)不得用于商業(yè)用途
僅供個人參考ON_BN_CLICKED(IDC_DELETEALL_BUTTON,OnDeleteallButton)感《通過串口收發(fā)短消息一文的作者bhw98他為我們編寫了數(shù)個獨立于操作系統(tǒng)平臺的C數(shù),使得我們可以在應用程序中直接對這些函數(shù)進行調用。在本控制軟件中,也對這些函數(shù)進行了充分利用。下面是對本例程軟件的主要數(shù)據(jù)結構和核心函數(shù)的介紹:數(shù)據(jù)結構//用戶信息編碼方式04GSM_UCS28//短消息參數(shù)結構,編碼/碼共用//其中,字符串以結尾struct{SCA[16];//短消息服務中心號碼地址)TPA[16];目標號碼或回復號碼(TP-DATP-RA)TP_PID;//用戶信息協(xié)議標識(TP_DCS;//用戶信息編碼方式(TP_SCTS[16];//服務時間戳字符串接收時用到TP_UD[161];//原始用戶信息編碼前或解碼后的TP-UD)//短消息序號,在讀取時用到}SM_PARAM;發(fā)送短消息發(fā)送按鈕對應的函數(shù)為CSMSControlDlg::OnSendButton,讀取用戶輸出并根據(jù)目標電話號碼和短信息內容形成SM_PARAM(源PDU參)的內容,接著進行發(fā)送:voidCSMSControlDlg::OnSendButton(){//TODO:notificationcode//得用戶輸入desPhoneNum;GetDlgItemText(IDC_PHONENUM_EDIT,desPhoneNum);//充SM_PARAM結構體內容SM_PARAMsmParam;smParam=不得用于商業(yè)用途
僅供個人參考//送短信息gsmSendMessage(smParam);}其中調用的函數(shù)體現(xiàn)了串口通信的核心內容它按照第節(jié)闡述的模塊發(fā)送短消息的串口控制流程進行短信的發(fā)送:SM_PARAM*pSrc源PDU參數(shù)指針){int//PDU串長度unsignednSmscLength;串長度intnLength;//串口收到的數(shù)據(jù)長度cmd[16];命令串pdu[512];//PDU串ans[128];//應答串gsmEncodePdu(pSrc,//根據(jù)PDU參數(shù),編碼PDU"\x01a");以Ctrl-Z結束&nSmscLength,2);取PDU串中的信息長度nSmscLength++;//加上長度字節(jié)本身//命令中的長度,不包括SMSC信息長度,以數(shù)據(jù)字節(jié)計sprintf(cmd,"AT+CMGS=%d\r",/2-nSmscLength);//生成命令//先輸出命令串=ReadComm(ans,//讀應答數(shù)據(jù)//根據(jù)能否找到"\r\n>"決定成功與if==&&strncmp(ans,"\r\n>=={WriteComm(pdu,//得到肯定回答,繼續(xù)輸出PDU串=ReadComm(ans,//讀應答數(shù)據(jù)//根據(jù)能否找到"決定成功與否if0&&strncmp(ans,"+CMS!={TRUE;}}FALSE;不得用于商業(yè)用途
僅供個人參考}讀取短消息點擊"收"鈕會通過函數(shù)的調用獲得所有短消息,最后在列表控件中顯示所有短信:voidCSMSControlDlg::OnRecvButton(){//TODO:notificationcodeSM_PARAMsmParam[100];//短緩沖區(qū)int短信條數(shù)=讀取短信//示短信for(int{m_recvlist.AddString(CString(smsNum[i].TPA)+smsNum[i].TP_UD);}}其中調用的函數(shù)完成最核心的短信接收功能它照第闡述的GSM模塊接收短消息的串口控制流程進行短信的接收://參數(shù):短消息緩沖區(qū),必須足夠大//返回:短消息條數(shù)int{intnLength;//串口收到的數(shù)據(jù)長度int//短消息計數(shù)值char*ptr;//內部用的數(shù)據(jù)指針cmd[16];命令串ans[1024];應答串==sprintf(cmd,"AT+CMGL\r");生成命令,用+CMGL一次性讀出全部短消息//輸出命令串=ReadComm(ans,//讀應答數(shù)據(jù)//根據(jù)能否找到"+CMSERROR"決成功與否>0&&strncmp(ans,"+CMS10)!=不得用于商業(yè)用途
僅供個人參考{//循環(huán)讀取每一條短消息以"+CMGL:"開=strstr(ptr,"+CMGL:"))!=NULL){+=6;//跳過"+CMGL:"sscanf(ptr,"%d",&pMsg->index);讀取序號=strstr(ptr,//找下一行+=2;//跳過"http://串解碼//準備讀下一條短消息//短消息計數(shù)加}}nMsg;}刪除短消息我們可以在讀取完所有短信息后調用函數(shù)模塊上刪除那些已經被接收到PC上的短信息,它按照第節(jié)闡述的GSM模塊刪除短消息的串口控制流程進行短信的刪除://短消息序號,從1始gs
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公樓安全保衛(wèi)管理規(guī)定(4篇)
- 瑜伽體驗課程設計教案
- 直線式灌裝機課程設計
- 2024年職業(yè)素養(yǎng)培訓考試題庫(附答案)
- 自動線plc課程設計
- 線上教學課程設計大賽
- 餐飲行業(yè)后勤管理工作總結
- 室內設計師工作總結
- 餐飲行業(yè)的衛(wèi)生管理要點
- 客戶服務行業(yè)美工工作總結
- 甘肅蘭州生物制品研究所筆試題庫
- 醫(yī)院改擴建工程可行性研究報告(論證后)
- 雙方共同招工協(xié)議書(2篇)
- 2021-2022學年第二學期《大學生職業(yè)發(fā)展與就業(yè)指導2》學習通超星期末考試答案章節(jié)答案2024年
- 期末檢測試卷(試題)-2024-2025學年四年級上冊數(shù)學青島版
- 國家開放大學電大本科《工程經濟與管理》2023-2024期末試題及答案(試卷代號:1141)
- 客車交通安全培訓課件
- 醫(yī)院勞務外包服務方案(技術方案)
- 水工-建筑物課件
- 張克非《公共關系學》(修訂版)筆記和課后習題詳解
- 2012雷克薩斯lx570lx460原廠中文維修手冊
評論
0/150
提交評論