基于WINCE系统实时数据采集方法.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于WINCE系统实时数据采集方法

基于WINCE系统实时数据采集方法   【摘要】Windows CE操作系统是常见的嵌入式操作系统,具有良好人机交互界面,常用于消费类产品。该系统应用于工业控制领域时,实时数据采集能力差。本文通过对硬件定时器编程,探索了一种保证实时性数据采集的方法,可以较的解决Windows CE操作系统在工业领域的应用。   【关键词】Windows CE 数据采集 驱动层硬件定时器   一、概述   Windows CE(以下简称WinCE)是微软公司开发的一种小型的、基于ROM的、具有Win32子集API的精简操作系统。由于WinCE操作系统的简洁(最小系统需要的存储容量可达10M字节以下)和系统软件的开发便利(其应用软件与桌面操作系统window具有较好的兼容性),其在手机和掌上电脑等嵌入式产品中有着广泛的应用。随着工业测控设备的发展需求趋向于智能化、小型化,WinCE在工业测控设备中也得到越来越多的使用。   在工业测控设备对操作系统一个很重要的要求就是具有实时处理能力。而WinCE的实时处理能力一直作为其软肋遭人诟病。在这里我们针对公司的具体项目的要求,通过反复的实验,找到了一种在WinCE下实现定时数据采集功能的方法,为公司测控设备的智能化、小型化做了一定的技术准备。   二、定时数据采集系统要求   (一)功能要求   在公司生产的一个地面测试设备中,要求每2ms采集一次输入的模拟量,并将采集到的数据绘制成曲线,在液晶屏上实时显示。   (二)硬件和软件开发环境   在采用ARM9技术核心的S3C2440芯片为主CPU的硬件平台上,安装定制WinCE操作系统,并开发相应的驱动程序和应用软件。   WinCE操作系统的版本选择为5.0,驱动程序开发环境为相应的Platform Builder 5.0,应用软件开发环境为Embedded VC 4.0。   (三)测试方法   定时采集系统的输入模拟信号用函数发生器HP33250A产生,信号类型为正弦波,频率10Hz,峰峰值为2V,直流偏置1V。   定时采集系统将采集到的数字量保存在文件中,使用Excel打开并绘制曲线,观察采集到的数字量是否满足每2ms一个数据点的要求。   三、定时数据采集系统的设计   (一)系统功能划分   定时数据采集功能的实现包括三个部分???   a. 控制硬件(模数转换器)进行定时数据采集;   b. 对采集到的数据进行处理和保存;   c. 根据采集的数据进行绘图操作。   整个采集系统设计的关键是数据采集的定时是否可靠。数据保存与绘图操作的实时性误差不会造成系统的错误,而数据采集必须每间隔准确的2ms时间间隔就进行一次,否则将无法反映外接输入模拟量的实时变化情况。在实际的实验中,数据采集、数据处理和保存的方法和位置的不同,直接影响着系统功能是否能够可靠实现。下面根据使用定时器的不同、数据处理方法的不同分别介绍几种方案。   (二)应用层软件定时器方案   WinCE操作系统下的应用软件开发环境EVC与桌面操作系统windows下的VC++环境基本相同,提供了几乎相同的类函数的封装,同样也可以调用基本的Win32API函数。   在应用层编程中常用的定时器包括MFC(微软基本类库)提供的Timer事件和windows提供的多媒体定时器。   Timer事件定时器先使用SetTimer()来定时,再在程序中增加定时响应函数OnTimer(),并在此函数中增加相应的处理语句完成时间到时的操作。精度在毫秒级别,一般其响应时间为55ms,且系统越忙精度越差。所以不符合2ms定时采集的要求。   多媒体定时器是windows提供的内置定时器。通过调用timeSetEvent()函数,将需要周期性执行的任务定义在 lpFunction()回调函数中(如:定时采样、控制等),从而完成所需处理的事件。在定时器使用完毕后,调用timeKillEvent()将之释放。下面是使用多媒体定时器定时的部分代码。   将数据缓存dataBuf中的数据保存到文件中,使用Excel打开后,得到的数据曲线,但AD采集到的数据点间隔并不是严格的2ms。   (三)驱动层硬件定时器方案   鉴于软件定时器的误差较大,考虑为CPU自带的定时器timer0编写驱动程序。在驱动程序中,配置好timer0后,创建一个中断服务线程;中断服务线程在timer0产生硬件中断后,触发中断事件;中断服务线程中循环执行的程序段检测到中断事件,即开始一次AD采集。   硬件定时器timer0每2ms控制AD采集数据,并将数据保存在数据缓存dataBuf数组中。但应用层无法直接调取驱动层的变量。所以,在驱动层可被映射到应用层的IO函数中,将dat

文档评论(0)

189****7685 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档