信息化 频道

<连载>Protel二次开发从入门到精通

  6. PCB机器人和消息系统
  6.1 原理

在PCB编辑器中,机器人是软件代理,它们被通过特定的PCB消息时序激活和取消。机器人的工作是保持PCB编辑器环境在一个有效的状态,如果在PCB编辑器内的事件改变了PCB编辑器的环境状态,机器人通过突跳来恢复环境。

为了更好地理解机器人,我们可以设想一个未来的家庭保姆由机器人组成,有不同的机器人,如厨房机器人、车库机器人和地毯清洗机器人等等。丈夫已经把厨房搞的一团乱,厨房的传感器已经广播了有关厨房状态的一个消息,妻子已经把车库搞的一团乱,车库的传感器已经广播了有关车库状态的一个消息,机器人监听到在这环境中所发生事件,但是它们必须等候家庭中成员离开他们所在的区域,当这些家庭中成员白天外出时,厨房机器人和车库机器人被派遣一个信息,来清洁已发生变化的区域,其他机器人也已经收到消息,但是这些机器人的知道他们的职责,它们不参加清洁工作,一旦这些任务被完成, 机器人被取消激活,且等候下一个事件。

此此类推,我们能看到与环境有影响的两个实体组(用户组和机器人组),此两组从不在相同时间被激活,用户组发送消息到所有机器人。一个消息描述了一个发生在环境中的特殊的事件,每一个机器人接受此消息并且按它自己的方式起作用。举个例子,从事园艺的机器人当得到一个由花园中所产生的“MessHappened”消息时,就写下花园需要被重新排列任务,当它收到“EveryoneLeftTheHouse”(成员离开家)消息时,此机器人执行重新排列花园的任务。

 

 


图4-14 机器人在一个操作中的时序

在图4-14中,一个周期表示一个活动的主要目标或目的时间,并且一个进程描述了或俘获了这个活动的本质(这里在一个顺序的序列中可为多进程),机器人通过PCB编辑器监听到所有消息广播,在周期结束前,YieldToRobots消息是广播,在周期结束前,机器人有必须的数据来做它们的处理,整个周期是重复的。

PCB编辑器函数按相同的方式:机器人监听到消息广播并按它自己的方式响应。一般地,一个最终用户对PCB产生影响,他开始一个进程,执行少量动作并且停止进程,因而,消息发送到机器人一般有相同的式样:

·消息表示一个进程已开始。

·消息组描述用户活动(编辑,增一个图元等等)。

·消息表示要被停止的进程(意味着用户将不执行任何改变,,如果需要的话,让机器人有一些时间来执行它们的活动。)

·消息表示一个进程已结束。

我们将在明细中得到消息序列和稍后如何来利用和控制它们。

    为了使第三方开发者能够使用此系统,对它的结构进行一些理解是必需的,所有的机器人被在一个分类的列表中注册,它们被分类的指令决定它们将会收到一个特定的的消息指令,这个指令通过机器人“优先级(priority)”决定,因而,当一个消息被广播的时候,它被沿着列表向前传递,而且每个机器人都有机会对它产生响应,响应按它们的“优先级(priority)进行。


图4-15 机器人和消息

  6.2 PCB编辑器消息

一个PCB消息描述了在PCB编辑器中的当前事件,一个PCB消息表示发生在PCB编辑器内的内部事件,并且这些消息将携带有关当前内部事件的信息,PCB消息被沿着一个机器人会响应或会不响应的特定消息的链传递,一个PCB消息包含一个源对象、一个目标对象、一个消息标识符和一个可选项消息数据(消息数据能为一个数据结构指针),一个PCB消息标识符和它们的意义将被下表中简短地描述。

PCB消息标识符

描述

PCBM_NullMessage

表示消息是空的。

PCBM_BeginModify

表示一个PCB对象将要被修改。

PCBM_BoardRegisteration

表示一个PCB对象将要被增加到数据库中或从数据库中删除。

PCBM_EndModify

表示一个PCB对象已被修改。

PCBM_CancelModify

表示一个PCB对象的修改被取消。

PCBM_Create

创建,N/A

PCBM_Destroy

销毁,N/A

PCBM_ProcessStart

表示一个进程的开始。

PCBM_ProcessEnd

表示一个进程的结束。

PCBM_ProcessCancel

表示一个进程取消。

PCBM_YieldToRobots

表示机器人是被激活。

PCBM_CycleEnd

表示一个周期的结束。

PCBM_CycleStart

表示一个周期的开始。

PCBM_SystemInvalid

表示机器人/消息系统是无效的。

PCBM_SystemValid

表示机器人/消息系统是有效的。

PCBM_ViewUpdate

N/A

PCBM_UnDoRegister

表示带有Undo/Redo系统的指定对象的注册。

表 1: PCB 消息

0
相关文章