基于pocarlo的多轴驱动控制程序的设计与实现_第1页
基于pocarlo的多轴驱动控制程序的设计与实现_第2页
基于pocarlo的多轴驱动控制程序的设计与实现_第3页
基于pocarlo的多轴驱动控制程序的设计与实现_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于pocarlo的多轴驱动控制程序的设计与实现

poccapc是共享电脑的共享计算机软件windowsce3。它除具有笔记本电脑的功能外,还在通信、实时性及自身控制方面具有很强的功能,被认为是移动计算和移动通信方面的重要工具,是具有良好发展前景的计算终端、网络终端和通信终端。本文从PocketPC的电源管理特性和操作系统管理应用程序的特性出发,介绍在PocketPC上开发控制程序的原理、意义和3种主要实现方法。1pocketpc技术特点PocketPC上控制程序的设计原理基于PocketPC所采用的独特的电源管理技术和操作系统管理应用程序的新技术。PocketPC的独特电源管理特性在于:除非不安装电池或处于死机状态,否则PocketPC的电源始终不关闭。当用户按下关闭电源按钮或不使用时(即使有应用程序已启动),机器也只是处于休眠状态而不是真正切断电源。在休眠状态下,它仅提供能保持其时钟、应用程序及RAM中存储数据所需的最少能量。PocketPC在管理应用程序方面采用的独特管理策略为:操作系统使用活动记时器判断用户是否频繁地使用计算机。记时器在计算机处于打开状态时倒记数,当记时器到达0,计算机就切换到休眠状态。用户不但可以在控制面板中以秒为单位设置活动记时器的最大值,而且应用程序也可以通过调用API设置活动记时器的最大值。更重要的是WindowsCE提供了所谓“通知API”(NotificationAPI)让用户去控制系统及应用程序。由于PocketPC采用了这样的电源管理策略、应用程序管理策略以及控制策略,所以用户能方便地设计开发控制程序(通过调用“通知API”)。例如,按时间或预订的事件自动开启/关闭计算机,按时间或预订的事件自动开启/关闭一个或多个应用程序乃至控制一个或多个应用程序的运行流程。2按系统事件通知运行通知是操作系统表示发生了某个事件的信号。WindowsCEAPI的特点是它提供了一个强有力的通知接口(NotificationAPI)。该接口允许应用程序自己安排自己在某个确定的时间运行或者在某个系统事件发生时运行(这也是其作为嵌入式操作系统的特征之一)。当自己开发的程序注册到特定的事件通知后,操作系统将在该事件发生时生成一个通知,系统使用通知与用户和其它程序通信。WindowsCE提供了3种类型的通知接口:用户通知、定时器事件通知和系统事件通知。定时器事件表明已经到达指定时间;系统事件表明发生了系统级事件,如添加或删除了某设备、系统时间更改、与其它设备发生同步、检测到RS232口连接等。用户通知和定时器事件通知都使用定时器事件,但用户通知发生时必须被用户确认,定时器事件通知则不需用户确认。通常在没有用户干涉的情况下,在给定的时间运行某个应用程序时,就可以简单地使用定时器事件通知达到目的。而如果要在给定的时间根据用户的反应来确定下一步动作(从而控制复杂流程),则需要使用用户通知,它能在指定的时刻由系统以4种方式(闪动LED、振动设备、播放声音和显示提示框)提示用户,并只有在用户响应了该通知时应用程序才运行(也就是说在用户采取响应动作之前,该应用程序不会运行)。另一方面,当需要监控一些系统事件的发生时,就要使用系统事件通知。由于使用定时器事件通知和系统事件通知都必定会启动应用程序,因此又把二者合称为应用程序通知。WindowsCE共提供了6个通知接口:Ce-SetUserNotification、CeGetUserNotificationPreferences、CeCleartUserNotification、CeHandleAppNotifications、CeRunAppAtTime和CeRunAppAtEvent。前4个为用户通知所使用,后2个分别为定时器事件通知和系统事件通知所使用。下面分别介绍3类通知和6个API的使用方法。2.1显示提示框的通知首先调用CeSetUserNotification函数注册用户通知,其原型是:其参数含义为:句柄hNotification设置为0表示创建一个新的通知,如要更改已注册的通知则设置hNotification为希望更改的用户通知的句柄(这个句柄是由注册用户通知的程序在调用CeSetUserNotification后的返回值);pwszAppName是该应用程序的名称,当通知发生时,该应用程序的小图标将在任务栏上显示;lpTime是一个指向SYSTEMTIME结构指针,该结构指定了通知发生的时间;lpUserNotificaion也是一个结构指针,它指向PCE_USER_NOTIFICATION结构,WindowsCE用该结构描述用户如何被通知,此结构的定义为:其中变量ActionFlags是一组定义了在到达指定的时间时以何种形式提示用户的标志,即:PUN_LED(闪动屏幕),PUN_VIBRATE(振动设备),PUN_DIALOG(显示对话框),PUN_SOUND(播放声音文件)和PUN_REPEAT(重复声音文件10~15s),它可以是上述标志的任意组合。其次,程序可调用CeGetUserNotificationPreferences(HWNDhWndParent,PCE_USER_NOTIFICATIONlpNotification)配置用户通知,以便让用户有机会修改提示方式。其中hWndParent是提示框父窗口的窗口句柄。从程序调用CeSetUserNotification开始到用户得到通知的这一时间段中,通知一直处于活动状态。如要在它超时之前修改此通知,程序可通过再次调用CeSetUserNotification实现。而要在它超时之前清除它,需要调用CeCleartUserNotification(HANDLEhNotification)。用户通知到达后要求确认。对于显示提示框的通知,确认方式是点击提示框的确定按钮或按下设备外壳上的通知按钮(此时用户通知仅起到提示的作用,不启动应用程序)。对于不显示提示框的通知,系统将在任务栏上显示注册该通知程序的图标。当用户点击此图标时系统将启动相应的应用程序的一个实例(系统还传递一个命令行参数lpCmdLine以表明应用程序为什么会运行,该参数是串APP_RUN_TO_HANDLE_NOTIFICATION加空格再加通知的句柄)。对于不显示提示框的用户通知,在应用程序中要调用CeHandleAppNotifications函数来确认通知。该函数将所有用于应用程序的活动通知都标记为已处理,并删除任务栏上的图标。在实际编码时还要考虑是否有该应用程序的另一个实例在运行。如有,则应向它发送一个自定义消息,由该实例处理此通知并终止自身以节省资源。其代码如下:从上面分析可看出,使用用户通知可以设计出功能强大、流程复杂的时间日历型任务控制程序。2.2接发式cerapwell-patche由于定时器事件通知不需用户确认(即不需用户干涉),只是在给定的时间自动运行某个应用程序,因此比较简单。创建定时器事件通知只需如下调用:其参数含义是:lpTime是一个结构指针,该结构指定了运行应用程序的时间;pwszAppName是要运行的应用程序的名称。要修改定时器事件通知,只需再次调用CeRunAppAtTime。因为如果多次调用CeRunAppAtTime,则后面的通知(定时器时间)将替换前面的通知。要清除定时器事件通知,只要在调用CeRunAppAtTime时,在参数lpTime中传递一个NULL指针。即使系统是关闭的,当定时器事件到达时,要运行的应用程序也会启动,这是由系统的电源管理特性决定的。最后需要说明的是,应该只允许应用程序的一个实例运行以节省资源。2.3添加或删除设备通知当需要设计对系统事件进行监控的程序时则要使用系统事件通知。使用系统事件通知只需调用CeRunAppAtEvent函数,其语句是:其参数含义是:pwszAppName为要运行的应用程序的名称;lWhichEvent指出要监视哪一个事件,标志常量为:NOTIFICATION_EVENT_NONE清除事件通知;NO-TIFICATION_EVENT_SYNC_END同步完成通知;NO-TIFICATION_EVENT_DEVICE_CHANGE添加或删除设备通知;NOTIFICATION_EVENT_RS232_DETECTED检测到RS232连接通知;NOTIFICATION_EVENT_TIME_CHANGE系统时间更改通知;NOTIFICATION_EVENT_RESTORE_END设备恢复完成通知。对于每一个事件,应用程序用一个特定的命令行参数来启动(命令行参数格式详见notify.h)。一旦用于系统事件通知的应用程序被注册,不论指定的事件何时发生或重复发生,系统都会用命令行参数来运行应用程序。要停止响应系统事件通知,应用程序只要再次调用CeRunAppAtEvent,并在lWhichEvent参数中传递其名称和NOTIFICATION_EVENT_NONE即可。从以上分析可以看出,只要综合利用WindowsCE3.0提供的6个通知API,就能为PocketPC设计出由时间和事件控制的程序。再配合使用常规的多个应用程序间通信技巧,就能根据需要设计开发出功能强大、流程复杂的高级控制程序。本文只介绍了以Windows

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论