基于Windows CE的远程数据采集与控制系统开发
简单易用,功能强大,在智能手机、PDA以及汽车电子领域有广泛的应用。本文系统中的驱动编写是软件设计的核心内容。
基于Windows CE的2种驱动模型是流接口驱动和本机驱动模型,本机驱动模型是操作系统本身的一部分,例如电源管理,这些驱动是通用的驱动。流驱动则是指一般的驱动,具有可定制的接口和功能,是专用的驱动。本文所有驱动都是流驱动,流驱动将外部设备当作文件进行操作,因此应用程序可以很方便地使用系统API文件进行操作。流驱动由一组标准的函数集合来实现,在Windows CE中定义的流接口函数有12个,主要包括XXX_Init、XXX_Deinit、XXX_Open(由应用程序调用CreateFile()函数打开驱动)、XXX_ Close(由应用程序调用CloseHandle()函数关闭驱动)、XXX_Read(由应用程序调用ReadFile()函数打开驱动)、XXX_Write(由应用程序调用WriteFile( )函数打开驱动)、XXX_Seek、 XXX_PowerUp、XXX_Pow-erDown、XXX_IOControl。其中,XXX是驱动程序的设备名称[5]。
本文的流驱动需要具备3个功能:(1)驱动数据采集模块;(2)驱动报警器电路;(3)驱动GPRS模块。
1.2.3流驱动的实现
(1)将驱动取名为RDA(Remote Data Acquisition)。由于要在操作系统层面调用设备,因此首先应该完成对硬件,尤其是寄存器的虚拟地址分配,在函数RDA_Init()中实现。通过调用Windows CE提供的VirtualAlloc()和VirtualCopy()访问物理内存,其中前者负责保留虚拟内存,后者负责绑定物理内存和虚拟内存。实际上最终是通过访问虚拟内存来完成访问物理内存的,主要部分代码如下:
v_pAdcPreg=(volatileADCreg*)VirtualAlloc(0,sizeof(ADCreg),MEM_RESERVE,PAGE_NOACCESS);
…if (!VirtualCopy((PVOID)v_pAdcPreg, (PVOID)(ADC_
BASE_PHY_ADD>>8),sizeof(ADCreg),PAGE_PHYSICAL| PAGE_
READWRITE | PAGE_NOCACHE))
v_pIOPregs=(volatile IOPreg*)VirtualAlloc(0,sizeof(IOPreg),MEM_RESERVE,PAGE_NOACCESS);…
接着系统通过v_pAdcPreg和v_pIOPregs来调用各自的寄存器进行初始化,其中ADC_BASE_PHY_ADD和IOP_BASE_PA是硬件物理地址。
随后完成RDA_IOControl(),这个函数负责完成修改设备的功能,例如本文的数据采集模块有8路通道,因此每次采样时都需要转换通道,同时采样频率也是可以转换的,所有的控制码都在头文件中完成。通过控制码用户可以自由选择通道,这与本文的要求完全一致。
最重要的是读函数RDA_Read(),应用程序通过读函数与底层驱动联系,应用程序通过ReadFile()函数读出ADC寄存器的值。
PUBLIC DWORD RDA_Read(DWORD Handle, LPVOID pBuffer, DWORD dwNumBytes)
最后,在驱动程序关闭时,应用程序通过CloseHandle( )函数来调用RDA_Close ( )关闭。
1.2.4应用程序的实现
在流驱动编写完成后,通过PB完成编译,加入注册表信息,然后定制专有系统,这样就可以在自己定制的系统中调用驱动。应用程序的编写步骤如下,首先利用PB生成所需的SDK,并且安装,其次编写界面利用模拟器进行仿真,最后连接硬件,打开驱动测试程序。本文的所有程序已经在EVC4.0中编写实现。
本系统需要完成触摸屏的功能、视频采集模块功能以及用户自定的四路数据采集功能,因此窗体主线程中加入了:ADC采集、触摸屏控制、视频采集以及反馈模块等4个子线程。图4是应用程序的基本流程图。
2 实验结果
在测试过程中,系统会根据用户发送的短信内容,实时控制与显示所采集的数据。系统采集到的电器电压、室内温度、湿度以及热水器流量与实际情况完全相符。而系统的控制功能也很好实现,当系统采集到的数据大于阈值时,例如当室内温度过高、湿度过大、流量过大等异常情况发生时,报警信息都会由远程系统实时传递到用户的手机;视频采集系统主要由主机控制采集,用户可以方便地通过系统进行监控。因此通过实际测试,系统可以实现所需要的功能且具有良好的人机交互界面,实用性很强。
本文基于ARM9内核以及Windows CE嵌入式操作系统,同时结合GPRS技术,提出一种远程数据采集和控制的方法。利用嵌入式系统的低功耗、低成本、多任务以及高可靠性和高实时性等特点,通过设计、调用核心的流驱动函数,实现了一个具有远程数据采集和控制功能的应用系统,扩展相应的外围设备可以将该系统应用于更多领域。在后续的工作中,将继续研究利用另一个嵌入式系统作为客户机,通过MMS协议模块发送实时图像数据,从而增强系统的功能,进一步加深在物联网和智能家居控制等领域的应用。
- 基于电力线载波技术的系统设计(01-06)
- 双口RAM CY7C026在高速数据采集系统中的应用(04-12)
- 基于USB的运动控制平台及采集卡的设计(08-13)
- 基于USB接口的高增益数据采集系统(05-15)
- 基于PCI Express总线的数据采集设备实现(06-06)
- 基于DSP和USB的三维感应测井数据采集系统研究(06-09)