利用Microsoft Robotics Studio远程控制机器人
2009-05-21 08:30:05 来源:WEB开发网最后提交自定义订阅到前面定义的传感器通知handler
1 private IEnumerator MyRobotSensorMessageHandler(SensorNotification sensorMessage)
2 {
3 //update state here
4 _state.sensor = sensorMessage.sensor;
5
6 //Build notification list
7 List notify = new List();
8 notify.Add(sensorMessage.Name.ToUpper());
9
10 // notify general subscribers
11 subMgrPort.Post
12 (
13 new submgr.Submit(_state, dssp.DsspActions.ReplaceRequest)
14 );
15 // notify selective subscribers
16 subMgrPort.Post
17 (
18 new submgr.Submit(_state, dssp.DsspActions.ReplaceRequest, notify.ToArray())
19 );
20 yield break;
21 }
22
注意:服务的开发者定义为订阅者定义的传感器名称和行为,一定要和你自己的命名时一致的。
第四步:实现一个通用服务(Generic Services)
现在我们开发一个新服务,这个服务和brik Service交互,从Brick Service获取传感器的数据,这个服务实现了一个通用的协议,这些协议在RoboticsCommon有定义,即MotorTypes.cs和MotorState.cs,一般开发服务,我们会在*type.cs文件中定义服务的协议,我们是不是要把那两个个通用的协议定义文件拷贝到我们的项目中呢?不需要的,这里就会用到备用服务(Alternate Contracts)的功能,一个服务可以包括多个端口(port),如下面所示:
1 [ServicePort("/RobotOne", AllowMultipleInstances = false)]
2 RobotOneOperations _mainPort = new RobotOneOperations();
3 [AlternateServicePort(AlternateContract = robot.Contract.Identifier)]
4 robot.RobotOperations _robotServicePort = new robot.RobotOperations();
5
更多精彩
赞助商链接