WinCE系统下GSM Modem的测控应用

2024-05-08 21:18

本文主要是介绍WinCE系统下GSM Modem的测控应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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


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

    需要监测的参数或需要控制的指标通过某种方式与嵌入式系统构成上、下位采集与控制体系。嵌入式系统发出测控指令,可以实现对现场相应数据的采集和控制。采集到的现场数据以数据文件形式保存在嵌入式系统上。目前,有关嵌入式系统对下位现场的具体采集与控制操作介绍的文献很多,这里不再复述。


2 嵌入式系统受监控端软件设计
    嵌入式系统中受监控端软件是本监控系统的核心。它一方面管理GSM Modem识别远程电话的控制指令(按键识别)、向电话反馈对应的语音数据,另一方面还要根据远程电话的指令完成对下位现场的测控。
2.1 串行口及GSM Modom的初始化
    根据GSM Modem连接的串行口,cornID用

    打开该串行口。根据返回句柄hSerial的值,可以判断打开是否成功。由“GetCommState(hSerial,&dcb);”获得comID的状态,同时自动填入不用的DCB结构成员。再用“SetCommState(hSerial,&dcb);”就可以初始化该串口了。之前,&dcb要设置自己的参数,如:

   

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

    运行后,有电话拨入并按下567890,

执行结果如图2所示。

    对于按键组合,可以将单个键的值依次存放到缓冲区。在程序中控制好flag的值就可以实现对按键组合的识别。
2.3 语音传送
   
将语音数据写入GSM Modem,拨入的电话一端就可以听到相应的语音。在写入语音数据之前,要先用“at+vtx”通知GSM Modem,此后的数据是语音数据。

   
    其中,wavFileName为所传送的语音数据文件。
2.4 嵌入式系统受控端整体程序描述
   
嵌入式系统受控端整体程序框图如图3所示。

3 语音合成技术(TTS)
   
将保存在嵌入式系统上从现场采集来的数据转换成对应的语音数据,需要进行语音合成。在语音数据库中存有“ling”、“yi”、“er”、“san”……“dian”和单位名称发音的数据文件。假设要监测的是现场的电流数据,例如,下位采集来的保存到嵌入式系统上的某电流数据为5.12 A,那么就需要将“wu”、“dian”、“yi”、“er”和“an”的语音数据文件合成一个语音数据文件,以便于传送。
    BitSize位现场数据(包括小数点)语音合成的具体程序描述如下:

   
    需要强调的是,这里用到的语音数据必须是“裸”数据,也就是去掉有关文件头的纯粹的语音数据(可以在录制单个语音文件后处理掉)。各个语音数据的大小也要记录在一个表列中,

以便在调整目标语音文件指针时用到。最后生成的目标语音文件也是一个只含有“裸”数据的文件,在进行语音传送时可以直接使用。


结 语
    本文介绍的在嵌入式WinCE系统下利用GSM Modem所实现的远程监测与控制的方法,以较小的投资实现了对远程工业现场的测控,充分地利用了现有的GSM移动通信网络资源。在测控距离远、实时性要求不高的场合都可以选择使用

 

这篇关于WinCE系统下GSM Modem的测控应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971464

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Python循环缓冲区的应用详解

《Python循环缓冲区的应用详解》循环缓冲区是一个线性缓冲区,逻辑上被视为一个循环的结构,本文主要为大家介绍了Python中循环缓冲区的相关应用,有兴趣的小伙伴可以了解一下... 目录什么是循环缓冲区循环缓冲区的结构python中的循环缓冲区实现运行循环缓冲区循环缓冲区的优势应用案例Python中的实现库

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和