2024年3月17日發(fā)(作者:朱自清代表作)

電腦編程技巧與維護
CDMA應用系統(tǒng)設計
苗建廣
(中國電信菏澤分公司,菏澤274000)
摘要:從計算機串口通信入手,結合CDMA短信內(nèi)容編碼,最后給出基于CDMA網(wǎng)絡的應用系統(tǒng)關鍵
流程解決方案。
關鍵詞:CDMA;SMS;計算機串口通信;無線Modem;AT指令
CDMAShortMessageApplicationSystemDesign
MIAOJianguang
(ChinaTelecomHezeBranch,Heze274000)
Abstract:Inthispaper,startingfromthecomputerrialportcommunication,combinedwithCDMAencodingmessagecon-
tent,andfinallygivetheShortmessagebadontheCDMAnetworkcriticalmassflowapplicationsystemsolutions.
Keywords:CDMA;SMS;Computerrialportcommunication;Wirelessmodem;ATcommand
CDMASMS(CDMAShortMessageService)是通過CDMA
網(wǎng)絡傳輸?shù)囊环N限長文本信息的服務,從而實現(xiàn)移動用戶間信
息傳遞。通過CDMASMS平臺,可以實現(xiàn)諸如信息定制、信
息點播、監(jiān)控報警、抄報電表度數(shù)、天氣預報、Email通知等
信息服務。隨著短信業(yè)務拓展和其應用范圍擴大,短信作為一
種廉價而快捷的無線通信方式,在許多行業(yè)內(nèi)得到廣泛應用。
本系統(tǒng)主要是為解決**電信公司客戶經(jīng)理和維系人員,
向所維系的用戶群發(fā)短信的困難,而提出的一個課題。
使用重疊I/O方式時,要用到OVERLAPPED結構,該結
構最重要的成員是hEvent事件句柄。它將作為線程的同步對
象使用,讀寫函數(shù)完成時hEvent處于有信號狀態(tài),表示可進
行讀寫操作;讀寫函數(shù)未完成時,hEvent被系統(tǒng)置為無信號。
下面以重疊操作為例,給出串口通信的關鍵代碼:
HANDLEhComm;
hComm=CreateFile("COM3",//使用COM3
GENERIC_READ|GENERIC_WRITE,
//打開類型為可讀寫
0,//以獨占模式打開串口
NULL,//不設置安全屬性
OPEN_EXISTING,
//串口通信中必須設置為OPEN_EXISTING
FILE_FLAG_OVERLAPPED,//重疊I/O方式
0);
if(hComm==INVALID_HANDLE_VALUE)
//不能成功打開串口
returnFALSE;
在成功打開串口3后,要進行一些必要的設置,諸如串
口波特率、讀/寫超時設置、流控等,在此略。
串口監(jiān)視線程:
UINTCommWatchThread(LPVOIDlp)
//工作者線程,用于監(jiān)視串口
{
BOOLbRes=FALSE;
DWORDdwEvtMask=0;
DWORDdwError;
unsignedcharrxchar;
COMSTATcomstat;
OVERLAPPEDos;
memt(&os,0,sizeof(OVERLAPPED));
HANDLEm_hEventArray[2];
m_hEventArray[0]=CreateEvent(NULL,TRUE,FALSE,
NULL);
//退出線程事件句柄
m_hEventArray[2]==CreateEvent(NULL,
1串口通信
計算機串口通信在各行各業(yè)中得到廣泛的應用,如各通
信運營商,中心機房為實時監(jiān)控機房(包括基站機房)內(nèi)電
源電流、電池電壓、溫/濕度以及門磁等數(shù)據(jù)信息,各監(jiān)測點
模塊間的接口基本全部采用串口通信?,F(xiàn)基于Win32系統(tǒng),
簡單介紹計算機串口通信的兩種實現(xiàn)方式。
1.1基于控件的串口通信
微軟公司在其Windows操作系統(tǒng)中提供了一個串口通信
控件(MSComm),使用該控件,可以簡單快捷的開發(fā)出串口
通信軟件。本系統(tǒng)不采用該控件。
在Win32中,對各種通信資源的函數(shù)(CreateFile、Clo-
Handle、ReadFile、ReadFileEx、WriteFile和WriteFileEx)做了
很大改進和標準化,使得它們的操作就如同文件的操作一樣。
串口設備的打開、讀/寫、關閉等操作與文件的操作也一樣。
從對串口的操作上來講,可分為兩種模式:同步操作模
式和重疊/異步操作模式。
(1)同步操作
采用該操作模式,API函數(shù)會阻塞直到操作完成以后,才
能返回,因本系統(tǒng)不采取該操作模式,不再詳述。
(2)串口重疊操作
重疊操作使得線程從費時的I/O操作中解脫出來,讓I/O
操作在后臺執(zhí)行,而線程可以自由執(zhí)行其他任務,提供充分
利用CPU的處理能力,使得各操作得以并行運行。
本文收稿日期:2009-4-29
-84-
NETWORKANDCOMMUNICATION
TRUE,FALSE,NULL);
//有數(shù)據(jù)到達的事件句柄
if(!SetCommMask(hComm,EV_RXCHAR)
//設置檢測事件
return0;
if(hComm)//查看串口是否打開
PurgeComm(hComm,PURGE_RXCLEAR|PURGE_TX-
CLEAR|PURGE_RXABORT|PURGE_TXABORT);
//清空緩沖區(qū)
el
return0;//串口沒打開,則退出線程
while(1)
//該線程成功創(chuàng)建后,即處于監(jiān)視串口事件的無限循環(huán)
{
bRes=WaitCommEvent(hComm,&dwEvtMask,&os);
//等待串口事件EV_RXCHAR
if(bRes)
{
ClearCommError(hComm,&dwError,&comstat);
if(e==0)
continue;
Event=WaitForMultipleObjects(2,m_hEventArray,
FALSE,INFINITE)-
WAIT_OBJECT_0;
switch(Event)
{
ca0://退出線程
{
gotoend0;
break;
}
ca1://EV_RXCHAR事件發(fā)生
{
if(dwEvtMask&&EV_RXCHAR==EV_RXCHAR)
{
RecvChar(&rxchar,e);
//RecvChar為已定義的接收數(shù)據(jù)函數(shù)
PostThreadMessage(idThread,WM_RECVCHAR,(WPARAM)
rxchar);
//將接收到的數(shù)據(jù)傳遞到線程ID為idThread的線
//程(3.1描述的線程)中去//WM_RECVCHAR為
//自定義消息
}
break;
}
}//endswitch
}//endif(bRes)
}//endwhile(1)
end0:
if()
{
CloHandle();
=NULL;
}
if(hComm)
{
CloHandle(hComm);
hComm=NULL;
}
AfxEndThread(0);
return0;
}
網(wǎng)絡與通信
2CDMA無線ModemAT指令
要利用CDMA無線Modem發(fā)送短信或完成其他工作,關
鍵在于要向其發(fā)送相應的AT指令。AT指令集是由一個特定
的“命令前綴”開始,由一個“命令結束標志”結束。指令
前綴通常由AT兩個字符組合,它是Attention的縮寫。命令結
束標志是一個單字符,通常為回車符
AT指令集是由ETSI發(fā)布的,其中包含了對短消息的控制
指令。PC通過無線Modem的串行通信接口,向其發(fā)送一定的
AT指令,就能達到控制無線Modem發(fā)送短消息的目的。
在發(fā)送中文短信時,CDMAModem與GSMModem有3點
不同:(1)前者工作在TEXT模式,而后者工作在PDU模
式;(2)前者不用設置短信中心號碼,而后者必須正確設置
3)對要發(fā)送短信的目標號碼,前者需要目短信中心號碼;(
標號碼加上引號,而后者不需要。
2.1控制短信功能的AT指令
AT+CMGF
AT+WSCL
AT+CNMI
AT+CMGS
選擇短消息支持格式(TEXTorPDU)
設置短消息組成的語言和編碼方式
設置新短消信指示
發(fā)送短消息
2.2CDMA無線Modem設置
在用CDMAModem發(fā)送中文短信前,要先作一些設置工作。
(1)將CDMA無線Modem設為TEXT模式:
AT+CMGF=1
(2)設置短信的語言及編碼方式:
利用CDMA無線Modem發(fā)送中文短信,需要作如下設置:
AT+WSCL=6,4
(3)因本系統(tǒng)僅用于,不處理新接收到的短信,
因此,在系統(tǒng)中做如下設置:
AT+CNMI=2,0,0,1,0
(4)由于CDMA無線Modem發(fā)送中文短信,短信內(nèi)容的
編碼必須是Unicode格式,因此,需要將中文內(nèi)容由ANSI編
碼轉(zhuǎn)換成Unicode編碼后,才能發(fā)送出去,否則,目標號碼接
到的短信內(nèi)容為亂碼。
編碼轉(zhuǎn)化例程代碼:
intwlen=0;
wlen=MultiByteToWideChar(CP_ACP,0,smsconten,-1,
NULL,0);
//返回smsconten轉(zhuǎn)換成寬字符后所需的寬字符存儲空間
//大小
if(wszTxt){
deletewszTxt;
wszTxt=NULL;
}
wszTxt=newWCHAR[wlen];//創(chuàng)建寬字符緩沖區(qū)
len=MultiByteToWideChar(CP_ACP,0,smsconten,(int)
strlen(smsconten),wszTxt,wlen);
//將smsconten的ASCII碼轉(zhuǎn)換成寬字符,放入wszTxt中,同
-85-
電腦編程技巧與維護
//時返回寫入到wszTxt中的寬字符個數(shù)。
for(inti=0;i wszTxt[i]=MAKEWORD(HIBYTE(wszTxt[i]), LOBYTE(wszTxt[i])); 至此完成ASCII編碼到Unicode編碼的轉(zhuǎn)化。 (5)經(jīng)(4)編碼處理后,再通過執(zhí)行以下幾行代碼,就 可成功實現(xiàn)短信發(fā)送。 charphone[50]; memt(phone,0,50); sprintf(phone,"AT+CMGS="%s",%dr",phone, len*2); Write(phone,strlen(phone)); //Write()函數(shù)擁有某一串口句柄 //將目標號碼及短信內(nèi)容的長度寫入串口 Sleep(400);//延時 Write(wszTxt,len*2);//將短信內(nèi)容輸出到串口 Write("x00x1ar",3);//發(fā)送短信 Y 3.2短信發(fā)送 如圖2所示。 短信發(fā)送線程(發(fā)送泵線程 ) smsstat=SMSSENDOK N ① 發(fā)送下一條短信 smsstat=SMSBUSY ② 重發(fā) smsstat=SMSBUSY 圖2短信發(fā)送流程 一旦啟動該系統(tǒng)的功能,本流程則根據(jù)3.1描述的 smsstat的值及錯誤重發(fā)機制,判斷是發(fā)送下一條,還是重發(fā)。 3 下面給出本系統(tǒng)兩個主要工作線程的流程圖。 4結語 目前,**電信***分公司正在試用CDMA系 3.1判斷CDMA網(wǎng)絡反饋的已發(fā)送短信的狀態(tài) 如圖1所示。 判斷短信發(fā)送狀態(tài)線程 ①smsstat=SMSSENDOK,發(fā)送一下條短信 ②smsstat=SMSSENDFAIL,錯誤重發(fā)發(fā) ③rept:為設定的重發(fā)次數(shù) i:為重發(fā)次數(shù)計數(shù)器 錯誤重發(fā)機制 發(fā)送正確 統(tǒng),已經(jīng)過3萬條左右的測試,運行正常,現(xiàn)已可 以在有CDMA需求的行業(yè)推廣應用。 接收數(shù)據(jù) } i++ 短信發(fā)送線程依據(jù)smsstat的值, 選擇發(fā)送機制 參考文獻 [1]法國WAVECOM公司.CDMAATCommandsInterface Specification.英文手冊. [2]中興通訊股份有限公司.中興通訊MG815+模塊AT指令手 冊.2006. [3]陳堅,孫志月.Modem通信編程技術.西安:西安電子科 技大學出版社,1998. 作者簡介 苗建廣,男(1975-)通信工程師/學士,移動網(wǎng)絡增值應用。 N Y N i=0 i=0 ① smsstat=SMSSEND i ② smsstat=SMSSENDF Y 發(fā)送失敗 圖1判斷短信發(fā)送結果 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (上接第74頁) 5結語 本文對于現(xiàn)有的網(wǎng)格資源搜索模型進行了改進,提出了 [3]張曉東,LightFlood:AnOptimalFloodingSchemeforFile SearchinUnstructuredP2PSystems2008-12-1www. /#_課程資料. [4],"TheGrid:ANewInfrastructurefor21stCen- tury",ScienceToday,2002. [5]IanFoster,CarlKeslman,ThePhysiologyoftheGrid:An OpenGridServicesArchitectureforDistributedSystemsInte- gration[EB/OL].June2. [6]meier,Adefinitionofp2pnetworkingoftheclassifica- tionofp2parchitecturesandapplications,IEEE,July2002. 基金項目 長沙學院科研基金資助項目(CDJJ-08010203)。 作者簡介 王鑫,(1964-),長沙學院信息與計算科學系,實驗師。 李彬,男,講師,長沙學院。 基于對等網(wǎng)絡的資源搜索系統(tǒng),沒有將資源的使用者和資源 的提供者進行嚴格的區(qū)分,采用的平板結構中的各個資源完 全平等,相互可直接通信,不需要中介,適合于對等網(wǎng)絡。 同時提出了動態(tài)資源搜索機制,達到了使資源使用者可利用 狀態(tài)不斷變化的異質(zhì)資源的功能。然后提出了匹配機制和應 答協(xié)議模式,與現(xiàn)有網(wǎng)格搜索方法相結合,可以極大地提高 它們的網(wǎng)格資源搜索效率。 參考文獻 [1]SongJiangandXiaodongZhang,FloodTrail-anefficientfile archtechniqueinunstructuredpeer-to-peersystems2009- 1-11/hpcs/WWW/HTML/internet-P2P. html. [2],Peer-to-peerNetworks,IEEE,ComputinginScience andEngineering,May/June2001. -86-
本文發(fā)布于:2024-03-17 09:19:28,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1710638369163618.html
版權聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。
本文word下載地址:CDMA應用系統(tǒng)設計.doc
本文 PDF 下載地址:CDMA應用系統(tǒng)設計.pdf
| 留言與評論(共有 0 條評論) |