2024年3月17日发(作者:朱自清代表作)
电脑编程技巧与维护
CDMA应用系统设计
苗建广
(中国电信菏泽分公司,菏泽274000)
摘要:从计算机串口通信入手,结合CDMA短信内容编码,最后给出基于CDMA网络的应用系统关键
流程解决方案。
关键词:CDMA;SMS;计算机串口通信;无线Modem;AT指令
CDMAShortMessageApplicationSystemDesign
MIAOJianguang
(ChinaTelecomHezeBranch,Heze274000)
Abstract:Inthispaper,startingfromthecomputerrialportcommunication,combinedwithCDMAencodingmessagecon-
tent,andfinallygivetheShortmessagebadontheCDMAnetworkcriticalmassflowapplicationsystemsolutions.
Keywords:CDMA;SMS;Computerrialportcommunication;Wirelessmodem;ATcommand
CDMASMS(CDMAShortMessageService)是通过CDMA
网络传输的一种限长文本信息的服务,从而实现移动用户间信
息传递。通过CDMASMS平台,可以实现诸如信息定制、信
息点播、监控报警、抄报电表度数、天气预报、Email通知等
信息服务。随着短信业务拓展和其应用范围扩大,短信作为一
种廉价而快捷的无线通信方式,在许多行业内得到广泛应用。
本系统主要是为解决**电信公司客户经理和维系人员,
向所维系的用户群发短信的困难,而提出的一个课题。
使用重叠I/O方式时,要用到OVERLAPPED结构,该结
构最重要的成员是hEvent事件句柄。它将作为线程的同步对
象使用,读写函数完成时hEvent处于有信号状态,表示可进
行读写操作;读写函数未完成时,hEvent被系统置为无信号。
下面以重叠操作为例,给出串口通信的关键代码:
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后,要进行一些必要的设置,诸如串
口波特率、读/写超时设置、流控等,在此略。
串口监视线程:
UINTCommWatchThread(LPVOIDlp)
//工作者线程,用于监视串口
{
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串口通信
计算机串口通信在各行各业中得到广泛的应用,如各通
信运营商,中心机房为实时监控机房(包括基站机房)内电
源电流、电池电压、温/湿度以及门磁等数据信息,各监测点
模块间的接口基本全部采用串口通信。现基于Win32系统,
简单介绍计算机串口通信的两种实现方式。
1.1基于控件的串口通信
微软公司在其Windows操作系统中提供了一个串口通信
控件(MSComm),使用该控件,可以简单快捷的开发出串口
通信软件。本系统不采用该控件。
在Win32中,对各种通信资源的函数(CreateFile、Clo-
Handle、ReadFile、ReadFileEx、WriteFile和WriteFileEx)做了
很大改进和标准化,使得它们的操作就如同文件的操作一样。
串口设备的打开、读/写、关闭等操作与文件的操作也一样。
从对串口的操作上来讲,可分为两种模式:同步操作模
式和重叠/异步操作模式。
(1)同步操作
采用该操作模式,API函数会阻塞直到操作完成以后,才
能返回,因本系统不采取该操作模式,不再详述。
(2)串口重叠操作
重叠操作使得线程从费时的I/O操作中解脱出来,让I/O
操作在后台执行,而线程可以自由执行其他任务,提供充分
利用CPU的处理能力,使得各操作得以并行运行。
本文收稿日期:2009-4-29
-84-
NETWORKANDCOMMUNICATION
TRUE,FALSE,NULL);
//有数据到达的事件句柄
if(!SetCommMask(hComm,EV_RXCHAR)
//设置检测事件
return0;
if(hComm)//查看串口是否打开
PurgeComm(hComm,PURGE_RXCLEAR|PURGE_TX-
CLEAR|PURGE_RXABORT|PURGE_TXABORT);
//清空缓冲区
el
return0;//串口没打开,则退出线程
while(1)
//该线程成功创建后,即处于监视串口事件的无限循环
{
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事件发生
{
if(dwEvtMask&&EV_RXCHAR==EV_RXCHAR)
{
RecvChar(&rxchar,e);
//RecvChar为已定义的接收数据函数
PostThreadMessage(idThread,WM_RECVCHAR,(WPARAM)
rxchar);
//将接收到的数据传递到线程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;
}
网络与通信
2CDMA无线ModemAT指令
要利用CDMA无线Modem发送短信或完成其他工作,关
键在于要向其发送相应的AT指令。AT指令集是由一个特定
的“命令前缀”开始,由一个“命令结束标志”结束。指令
前缀通常由AT两个字符组合,它是Attention的缩写。命令结
束标志是一个单字符,通常为回车符
AT指令集是由ETSI发布的,其中包含了对短消息的控制
指令。PC通过无线Modem的串行通信接口,向其发送一定的
AT指令,就能达到控制无线Modem发送短消息的目的。
在发送中文短信时,CDMAModem与GSMModem有3点
不同:(1)前者工作在TEXT模式,而后者工作在PDU模
式;(2)前者不用设置短信中心号码,而后者必须正确设置
3)对要发送短信的目标号码,前者需要目短信中心号码;(
标号码加上引号,而后者不需要。
2.1控制短信功能的AT指令
AT+CMGF
AT+WSCL
AT+CNMI
AT+CMGS
选择短消息支持格式(TEXTorPDU)
设置短消息组成的语言和编码方式
设置新短消信指示
发送短消息
2.2CDMA无线Modem设置
在用CDMAModem发送中文短信前,要先作一些设置工作。
(1)将CDMA无线Modem设为TEXT模式:
AT+CMGF=1
(2)设置短信的语言及编码方式:
利用CDMA无线Modem发送中文短信,需要作如下设置:
AT+WSCL=6,4
(3)因本系统仅用于,不处理新接收到的短信,
因此,在系统中做如下设置:
AT+CNMI=2,0,0,1,0
(4)由于CDMA无线Modem发送中文短信,短信内容的
编码必须是Unicode格式,因此,需要将中文内容由ANSI编
码转换成Unicode编码后,才能发送出去,否则,目标号码接
到的短信内容为乱码。
编码转化例程代码:
intwlen=0;
wlen=MultiByteToWideChar(CP_ACP,0,smsconten,-1,
NULL,0);
//返回smsconten转换成宽字符后所需的宽字符存储空间
//大小
if(wszTxt){
deletewszTxt;
wszTxt=NULL;
}
wszTxt=newWCHAR[wlen];//创建宽字符缓冲区
len=MultiByteToWideChar(CP_ACP,0,smsconten,(int)
strlen(smsconten),wszTxt,wlen);
//将smsconten的ASCII码转换成宽字符,放入wszTxt中,同
-85-
电脑编程技巧与维护
//时返回写入到wszTxt中的宽字符个数。
for(inti=0;i wszTxt[i]=MAKEWORD(HIBYTE(wszTxt[i]), LOBYTE(wszTxt[i])); 至此完成ASCII编码到Unicode编码的转化。 (5)经(4)编码处理后,再通过执行以下几行代码,就 可成功实现短信发送。 charphone[50]; memt(phone,0,50); sprintf(phone,"AT+CMGS="%s",%dr",phone, len*2); Write(phone,strlen(phone)); //Write()函数拥有某一串口句柄 //将目标号码及短信内容的长度写入串口 Sleep(400);//延时 Write(wszTxt,len*2);//将短信内容输出到串口 Write("x00x1ar",3);//发送短信 Y 3.2短信发送 如图2所示。 短信发送线程(发送泵线程 ) smsstat=SMSSENDOK N ① 发送下一条短信 smsstat=SMSBUSY ② 重发 smsstat=SMSBUSY 图2短信发送流程 一旦启动该系统的功能,本流程则根据3.1描述的 smsstat的值及错误重发机制,判断是发送下一条,还是重发。 3 下面给出本系统两个主要工作线程的流程图。 4结语 目前,**电信***分公司正在试用CDMA系 3.1判断CDMA网络反馈的已发送短信的状态 如图1所示。 判断短信发送状态线程 ①smsstat=SMSSENDOK,发送一下条短信 ②smsstat=SMSSENDFAIL,错误重发发 ③rept:为设定的重发次数 i:为重发次数计数器 错误重发机制 发送正确 统,已经过3万条左右的测试,运行正常,现已可 以在有CDMA需求的行业推广应用。 接收数据 } i++ 短信发送线程依据smsstat的值, 选择发送机制 参考文献 [1]法国WAVECOM公司.CDMAATCommandsInterface Specification.英文手册. [2]中兴通讯股份有限公司.中兴通讯MG815+模块AT指令手 册.2006. [3]陈坚,孙志月.Modem通信编程技术.西安:西安电子科 技大学出版社,1998. 作者简介 苗建广,男(1975-)通信工程师/学士,移动网络增值应用。 N Y N i=0 i=0 ① smsstat=SMSSEND i ② smsstat=SMSSENDF Y 发送失败 图1判断短信发送结果 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! (上接第74页) 5结语 本文对于现有的网格资源搜索模型进行了改进,提出了 [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-),长沙学院信息与计算科学系,实验师。 李彬,男,讲师,长沙学院。 基于对等网络的资源搜索系统,没有将资源的使用者和资源 的提供者进行严格的区分,采用的平板结构中的各个资源完 全平等,相互可直接通信,不需要中介,适合于对等网络。 同时提出了动态资源搜索机制,达到了使资源使用者可利用 状态不断变化的异质资源的功能。然后提出了匹配机制和应 答协议模式,与现有网格搜索方法相结合,可以极大地提高 它们的网格资源搜索效率。 参考文献 [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-
本文发布于:2024-03-17 09:19:28,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1710638369163618.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:CDMA应用系统设计.doc
本文 PDF 下载地址:CDMA应用系统设计.pdf
留言与评论(共有 0 条评论) |