摘要 在嵌入式WinCE系统下,利用GSM Modem和现有的GSM移动通信网,通过软件编程手段,实现用普通电话(包括手机)对远程工业现场的某些工作参数的监测和控制。其中的监测数据以语音形式体现。文中给出了语音合成的具体实现方法。
关键词 嵌入式WinCE系统 GSM Modem 按键识别 语音合成
引言
许多时候,我们需要了解远距离的某个工作现场的某些工作参数,或者对某些工作指标进行控制(开、关控制)。例如,需要了解远距离无人职守的发射机的功率情况,需要开启或关闭高山上电视塔的灯光,等等。这些一般都是通过基于C/S或者B/S等的网络手段来实现的,需要专门的网络线路和监控端软硬件的支持,构筑这样的应用系统投资一般都比较大,监控方位置的灵活度也被局限于有监控端软硬件的环境中。这里介绍一种在嵌入式WinCE系统下利用GSM Modem,用普通电话(包括手机,下同)就可以实现远程监控的方法。不需要有专用的监控端软硬件的支持和其他专用的网络线路,借助GSM的无线通信网络,投资大大缩小;监控方的位置可以处在任何有电话的地方,方便灵活。监控操作的选择由电话的按键来实现,监测到的参数通过语音的方式反馈到监控方的电话上;可以满足大多数远程监控应用场合的要求。
1 应用系统架构
本系统主要由GSM移动通信网、GSM Modem、以S3C2410为核心的硬件和WinCE系统组成,如图1所示。
图1 系统架构
需要监测的参数或需要控制的指标通过某种方式与嵌入式系统构成上、下位采集与控制体系。嵌入式系统发出测控指令,可以实现对现场相应数据的采集和控制。采集到的现场数据以数据文件形式保存在嵌入式系统上。目前,有关嵌入式系统对下位现场的具体采集与控制操作介绍的文献很多,这里不再复述。
2 嵌入式系统受监控端软件设计
嵌入式系统中受监控端软件是本监控系统的核心。它一方面管理GSM Modem识别远程电话的控制指令(按键识别)、向电话反馈对应的语音数据,另一方面还要根据远程电话的指令完成对下位现场的测控。
2.1 串行口及GSM Modem的初始化
根据GSM Modem连接的串行口,comID用
hSerial=CreateFile(TEXT (“comID”),GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_EXISTING, 0, NULL);
打开该串行口。根据返回句柄hSerial的值,可以判断打开是否成功。由“GetCommState(hSerial,&dcb);”获得comID的状态,同时自动填入不用的DCB结构成员。再用“SetCommState(hSerial,&dcb);”就可以初始化该串口了。之前,&dcb要设置自己的参数,如:
dcb.BaudRate=115200;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;//依次为波特率、数据位、奇偶校验位和停止位
SetupComm(hSerial,1024,1024);//设置收发缓冲区大小//超时控制设置
Timeouts.ReadIntervalTimeout=1;
Timeouts.ReadTotalTimeoutMultiplier=1;
Timeouts.ReadTotalTimeoutConstant=10;
Timeouts.WriteTotalTimeoutMultiplier=1;
Timeouts.WriteTotalTimeoutConstant=10;
SetCommTimeouts(hSerial,&Timeouts);
SetCommMask(hSerial,EV_RXCHAR);//挂接接收事件
最后用“ WriteFile(hSerial,szBuffer,strlen(szBuffer),&dwBytesWritten,&os_w);”向串口写入GSM Modem的初始化数据(AT命令)。不同的GSM Modem其AT命令可能有所不同(可以从GSM Modem的用户手册中获得)。笔者使用的GSM Modem的初始化数据为“ats0=1+fclass=8”、“at+vsm=128,11025”。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉