WinCE系统下GSMModem的测控应用
WinCE系统下GSMModem的测控应用
WinCE系统下GSMModem的测控应用
■安徽省淮北704台 武斌李建军
摘 要
在嵌入式WinCE系统下,利用GSMModem和现有的,,实现用普通
电话(包括手机)嵌入式Modem 按键识别 语音合成
关键词
嵌入式系统构成上、下位采集与控制体系。嵌入式系统发
引 言
许多时候,我们需要了解远距离的某个工作现场的某些工作参数,或者对某些工作指标进行控制(开、关控制)。例如,需要了解远距离无人职守的发射机的功率情况,需要开启或关闭高山上电视塔的灯光,等等。这些一般都是通过基于C/S或者B/S等的网络手段来实现的,需要专门的网络线路和监控端软硬件的支持,构筑这样的应用系统投资一般都比较大,监控方位置的灵活度也被局限于有监控端软硬件的环境中。这里介绍一种在嵌入式WinCE系统下利用GSMModem,用普通电话(包括手机,下同)就可以实现远程监控的方法。不需要有专用的监控端软
硬件的支持和其他专用的网络线路,借助GSM的无线通信网络,投资大大缩小;监控方的位置可以处在任何有电话的地方,方便灵活。监控操作的选择由电话的按键来实现,监测到的参数通过语音的方式反馈到监控方的电话上;可以满足大多数远程监控应用场合的要求。
出测控指令,可以实现对现场相应数据的采集和控制。采集到的现场数据以数据文件形式保存在嵌入式系统上。目前,有关嵌入式系统对下位现场的具体采集与控制操作介绍的文献很多,这里不再复述。
2嵌入式系统受监控端软件设计
嵌入式系统中受监控端软件是本监控系统的核心。
它一方面管理GSMModem识别远程电话的控制指令(按键识别)、向电话反馈对应的语音数据,另一方面还要根据远程电话的指令完成对下位现场的测控。
2.1 串行口及GSMModem的初始化
根据GSMModem连接的串行口,comID用
hSerial=CreateFile(TEXT("comID"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
打开该串行口。根据返回句柄hSerial的值,可以判断打开是否成功。由“GetCommState(hSerial,&dcb);”获得
comID的状态,同时自动填入不用的DCB结构成员。再
1 应用系统架构
本系统主要由GSM移动通信网、GSMModem、以
S3C2410为核心的硬件和WinCE系统组成,如图1所示。
用“SetCommState(hSerial,&dcb);”就可以初始化该串口了。之前,&dcb要设置自己的参数,如:
dcb.BaudRate=115200;dcb.ByteSize=8;dcb.Parity=NOPARITY;dcb.StopBits=ONESTOPBIT;
//依次为波特率、数据位、奇偶校验位和停止位
SetupComm(hSerial,1024,1024);//设置收发缓冲区大小//超时控制设置
Timeouts.ReadIntervalTimeout=1;
图1 系统架构
需要监测的参数或需要控制的指标通过某种方式与
62
2008年第6期
adv@(广告专用)
WinCE系统下GSMModem的测控应用
Timeouts.ReadTotalTimeoutMultiplier=1;Timeouts.ReadTotalTimeoutConstant=10;Timeouts.WriteTotalTimeoutMultiplier=1;Timeouts.WriteTotalTimeoutConstant=10;SetCommTimeouts(hSerial,&Timeouts);
SetCommMask(hSerial,EV_RXCHAR); //挂接接收事件
Puts(h,MEMO1,"5");//5键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x36)
Puts(h,MEMO1,"6");//6键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x37)
最后用“WriteFile(hSerial,szBuffer,strlen(szBuffer),
&dwBytesWritten,&os_w);”向串口写入GSMModem的
Puts(h,MEMO1,"7");//7键
(buff][2]==0x10&&buff[3]
初始化数据(AT命令)。不同的GSMModem其AT命令可能有所不同(可以从GSMModem笔者使用的GSM=fclass=8”、“at+vsm=s(,"8");//8键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x39)
2.2 按键识别
因为监控指令是由远程电话通过电话上的按键发出的,所以在受监控端,正确识别电话的按键是非常关键的。在一个处理线程中,可以用如下程序进行识别:
while(flag){
//flag为控制值
Puts(h,MEMO1,"9");//9键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x30)
Puts(h,MEMO1,"0");//0键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x23)
WaitCommEvent(hSerial,&dwEvtMask,0);
if((dwEvtMask&EV_RXCHAR)==EV_RXCHAR){ ClearCommError(hSerial,&dwErrorFlags,&ComStat);
dwLength=ComStat.cbInQue;
//输入缓冲区有多少数据
Puts(h,MEMO1,"#");//#键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x2a)
Puts(h,MEMO1,"3");//3键 if(buff[0]==0x10&&buff[1]==0x62) Puts(h,MEMO1,"拨入方已挂机");
} }
}
if(dwLength>0){
ReadFile(hSerial,buff,dwLength,&ln,&os_r); buff[dwLength]=0;
if(buff[0]==0x10&&buff[1]==0x52) Puts(h,MEMO1,"电话拨入...");
if(buff[1]==0x52&&buff[4]==’O’&&buff[5]==’K’) Puts(h,MEMO1,"线路接通");
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x31)
运行后,有电话拨入并按下567890,执行结果如图2
所示。
Puts(h,MEMO1,"1");//1键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x32)
Puts(h,MEMO1,"2");//2键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x33)
图2 按键识别测试
Puts(h,MEMO1,"3");//3键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x34)
对于按键组合,可以将单个键的值依次存放到缓冲区。在程序中控制好flag的值就可以实现对按键组合的识别。
Puts(h,MEMO1,"4");//4键
if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]
==0x35)
2.3 语音传送
将语音数据写入GSMModem,拨入的电话一端就可
paper@(投稿专用)
2008年第6期
Microcontrollers&EmbeddedSystems
63
WinCE系统下GSMModem的测控应用
以听到相应的语音。在写入语音数据之前,要先用“at+
vtx”通知GSMModem,此后的数据是语音数据。
hf=_lopen(wavFileName,0);
bitSize=GetFileSize((HANDLE)hf,NULL);_lclose(hf);
hf=_lopen(wavFileName,0);_lread(hf,aa,bitSize);_lclose(hf);
wsprintf(buffer,"at+vtx");buffer[6]=0x0d;
WriteFile(hSerial …… 此处隐藏:3118字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




