在介绍直接控制之前,先介绍几个控制 RCX 的图标,虽然这些图标不直接用于通信,但却只有在高级通信模式中才能体现他们的作用:
选择 RCX 将要执行的程序,参数 1—5; 执行 RCX 选定的程序; 察看 RCX 各端口的数值,把结果显示在液晶屏上,参数代表的端口如下: “0”代表 RCX时钟; “1—3”代表 RCX 的 1、2 和 3 号输入端口; “4—6”代表 RCX 的 A、B 和 C 号输出端口; 关闭 RCX 的电源; 设定 RCX 的关机事件,数值参数的单位为分钟,接下来我们来看各直接模式。
RCX 直接模式的开始和结束图标,在这两个图标中间添加你要直接控制的另一个 RCX 的任务,对于直接模式的控制端程序,你可以使用输出控制图标,比如控制这段程序运行在 192.168.3.1 的计算机上,运行时要保证我的主机上的 Robolab 程序处在运行状态《ROBOLAB 2.9 指南》 第三章:发明家指南被控端的 RCX 运行马达、灯泡和播放乐曲等;当然你也可以利用容器采集传感器的数值;使用各种类型的等待图标;但是,对于所有的结构图标,你无法在直接模式中使用,虽然这比较遗憾,但已经比只能收发邮件好的多了。然而对于被控端程序,来自于控制RCX 的直接模式程序相当于在本地程序执行过程中多出的一条任务分支,这和之前提到的任务分支的概念是一致的,只是直接模式所插入的任务分支享有最高的优先级。
程序范例:
用装有光线传感器的双马达机器人采集光线值,我希望小车能够在需要的时候停止,并且报告现在的光照情况。
机器人程序:
控制 RCX 的程序:
注意到机器人程序只是一个正常的随机程序,程序里并不牵扯到任何采集以及中断机器人行为的图标;而在控制程序中,通过直接模示插入一个任务分支干预机器人,先使机器人停下然后把 1 号端口的数值作为邮件数值发送出来,这个值被控制 RCX 接收到之后,直接模式关闭,机器人继续执行它的无聊的随机程序,而控制 RCX 则显示邮箱的数值,在这里要注意的是,尽管在控制程序中使用到了邮件发送图标和邮件数值,但这的确是分别由两个 RCX 完成的。最后值得补充一点的是,因为直接模式下无法使用循环结构,因此机器人只发送一次邮件,而这个邮件很可能由于两个 RCX 的红外没有瞬间对准而使控制 RCX 显示之前的传感器数值。
此外,可以通过直接模式和远程模式的组合,实现复杂程序的高级通信。
程序范例:
用一个 RCX 控制另一个 RCX 返回光线传感器超过 50 所经历的时间。
本站内容未经许可,禁止任何网站及个人进行转载。