WinCE系统下GSM Modem的测控应用

分享到:

        在WinCE系统下,利用GSM Modem和现有的GSM移动通信网,通过软件编程手段,实现用普通电话(包括手机)对远程工业现场的某些工作参数的监测和控制。

        其中的监测数据以语音形式体现。文中给出了语音合成的具体实现方法。

        引言

  许多时候,我们需要了解远距离的某个工作现场的某些工作参数,或者对某些工作指标进行控制(开、关控制)。例如,需要了解远距离无人职守的发射机的功率情况,需要开启或关闭高山上电视塔的灯光,等等。这些一般都是通过基于C/S或者B/S等的网络手段来实现的,需要专门的网络线路和监控端软硬件的支持,构筑这样的应用系统投资一般都比较大,监控方位置的灵活度也被局限于有监控端软硬件的环境中。这里介绍一种在嵌入式WinCE系统下利用GSM Modem,用普通电话(包括手机,下同)就可以实现远程监控的方法。不需要有专用的监控端软硬件的支持和其他专用的网络线路,借助GSM的无线通信网络,投资大大缩小;监控方的位置可以处在任何有电话的地方,方便灵活。监控操作的选择由电话的按键来实现,监测到的参数通过语音的方式反馈到监控方的电话上;可以满足大多数远程监控应用场合的要求。

        1  应用系统架构

  本系统主要由GSM移动通信网、GSM Modem、以S3C2410为核心的硬件和WinCE系统组成,如图1所示。

按此在新窗口浏览图片500)this.width=500" border=0>

图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”。

        2.2  按键识别

  因为监控指令是由远程电话通过电话上的按键发出的,所以在受监控端,正确识别电话的按键是非常关键的。在一个处理线程中,可以用如下程序进行识别:

        while(flag){//flag为控制值
  WaitCommEvent(hSerial,&dwEvtMask,0);
    if ((dwEvtMask&EV_RXCHAR)==EV_RXCHAR){
      ClearCommError(hSerial,&dwErrorFlags,&ComStat );
        dwLength = ComStat.cbInQue ; //输入缓冲区有多少数据
        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)
        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)
        Puts(h,MEMO1,"3");//3键
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x34)
        Puts(h,MEMO1,"4");//4键
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x35)
        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)
        Puts(h,MEMO1,"7");//7键
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x38)
        Puts(h,MEMO1,"8");//8键
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x39)
        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)
        Puts(h,MEMO1,"#");//#
        if(buff[1]==0x2f&&buff[2]==0x10&&buff[3]==0x2a)
        Puts(h,MEMO1,"*");//*键
        if(buff[0]==0x10&&buff[1]==0x62)
        Puts(h,MEMO1,"拨入方已挂机");
      }
    }
  }

  运行后,有电话拨入并按下567890,执行结果如图2所示。

继续阅读
基于WinCE与LPC935单片机CAN通信设计

随着信息技术的不断发展,嵌入式WinCE在工业控制领域中的应用越来越广泛。主要作为上位机的操作系统。LPC935单片机作为一款工业级的单片机芯片,广泛应用于各种工控设备。在许多复杂的应用场合,一个LP

基于WiFi无线视频传输技术的研究

随着电力系统自动化水平的日益提高,人们对变电站监控系统提出了越来越高的要求。结合变电站现场的实际需求,以及对嵌入式系统Wince和WiFi技术研究的基础上,文章提出了一套无线视频传输系统。包括论述了系

国产智能手机夺半壁江山:利润份额不到1%

近日,咨询机构赛诺发布了2012年4月中国智能手机市场份额报告。内容显示,国内前五强中,除了三星电子外均为国产品牌,分别为中兴、华为、联想和酷派,这四家企业的市场份额合计更超过了40%

基于WinCE的GPS导航信息处理软件的实现

GPS OEM 板一般以原始的二进制格式提供导航报文, 为了得到最终的定位结果, 需要对报文进行解码, 获得相关测量量以及卫星参数, 再构成计算方程组进行求解。本文提出了一种在WinCE 环境下的G

基于WinCE的智能车载仪表设计

设计一款基于WinCE操作系统的智能车载仪表,通过CAN总线接收汽车各个部件的ECU的信息,并将其显示在液晶显示屏中。以ARM9内核的S3C2440微处理器为核心,设计了外围硬件以及CA

精彩活动