电机控制 编程笔记 event1.c

来源:互联网 发布:js判断上传文件格式 编辑:程序博客网 时间:2024/06/06 20:47

ParseCommandLine的作用主要是分析命令行参数,如果没有命令行参数,ParseCommandLine()就假定用户想新建一个文档,于是设置一个FileNew命令,如果命令行参数中有一个文件名,ParseCommandLine()就假定用户想打开该文件,于是设置一个FileOpen命令。

一、EventMask对象


eventMask对象决定从controller发送到notify对象的事件类型。通过设置或者擦出eventmask的某个标志位,可以将发生的特定的事件发送到notify对象。事件可以被忽略。默认地,直到eventmask被设置之前没有事件发生。

数据类型

MPIEventMask  是一个无符号整型数组。要使用mpiEventMask()函数设置或者清除某个标志位。
主要的宏:


mpiEventMaskCLEAR  清除event mask的所有位
mpiEventMaskALL 设置所有的和MPI事件相关的标志位。MPI事件的定义在MPIEventType枚举类中定义。在事件mask初始化之后,这个mask可以通过mpiXxxxxEventNotifySet(...)传送到控制器生成事件。

二、notify对象

一个线程使用notify对象等待事件的确认。对于一个对象中每一个等待事件的线程来说,都需要创建一个notify对象。固件事件的源是motion、sequence、recorder对象。
当当一个源(比如对象句柄)等待事件确认时,可以将这个源作为 mpiNotifyCreate的第二个参数。当这个notify对象斧架到事件列表中后,调用
mpiNotifyEventWait指示notify对象等待事件的确认。
实施:


notify对象维护一个先进先出的事件buffer。每次调用mpiNotifyEventWait,都移除一个事件。如果事件buffer是空的,mpiNotifyEventWait会等待一个事件发送过来。着保证事件不会丢失,因为有mpiNotifyEventWait调用之间有事件发送过来的情况。然而,一个应用在int时间内不会调用mpiNotifyEventWait,这时在适当的时间需要使用mpiNotifyEventMaskSet。

方法:

mpiNotifyEventMaskGet

int32_t mpiNotifyEventMaskGet(MPINotify    notify,
                           MPIEventMask *mask) 


将一个已经被notify对象确认过的事件写到mask指针指向的位置。

mpiNotifyEventMaskSet 

int32_t mpiNotifyEventMaskSet(MPINotify    notify,  //notify对象句柄
                           MPIEventMask mask)       //一个事件mask,通过MPIEventType枚举定义
 设置一个事件类型。mask必须经过MPIEventMask宏的设置或擦除。
示例:
/*取消event确认,复制最近使用过的event mask成为oldMask。oldMask以后可能重新通过另外一个mpiNotifyEventMaskSet()调用被使能。*/  void NotifyDisable(MPINotify notify, MPIEventMask* oldMask){    MPIEventMask newMask;    int32_t returnValue;    returnValue = mpiNotifyEventMaskGet(notify, oldMask);//这个oldMask以后可能还有用    msgCheck(returnValue);    mpiEventMaskCLEAR(newMask);    returnValue = mpiNotifyEventMaskSet(notify, newMask);//设置确认一个新的mask事件    msgCheck(returnValue);}


外部方法:



mpiControlNotifyCreate



MPI_RESULT
mpiControlNotifyCreate(MPIControl control,
MPINotify *notify,
MPIEventMask eventMask,
MPIObject source);//如果是NULL,就接受所有源产生的事件
创建一个新的notify对象,然后将它添加到notify列表上。

mpiMotionEventNotifySet

mpiMotionEventNotifySet int32_t mpiMotionEventNotifySet(MPIMotion motion, const MPIEventMask *eventMask, const MPIEventNotifyData *eventNotifyData) 

 请求事件确认,这个事件室友motion产生,并有eventMask特殊化,并且也经过implementation-specific location特殊化。
 

原创粉丝点击