package it.unibg.robotic.examples.dataFlowComplexTypesTest; import it.unibg.robotics.jorocos.corba.CorbaOrocosSystem; import it.unibg.robotics.jorocos.core.AbstractOrocosComponent; import it.unibg.robotics.jorocos.core.AbstractOrocosConnection.LockPolicy; import it.unibg.robotics.jorocos.core.AbstractOrocosSystem; import it.unibg.robotics.jorocos.core.OrocosPortEvent; import it.unibg.robotics.jorocos.exceptions.ConnectionToPortNotExistException; import it.unibg.robotics.jorocos.exceptions.SystemIpAndPortAlreadyDefinedException; import it.unibg.robotics.jorocos.exceptions.SystemNotConnectedException; import it.unibg.robotics.jorocos.exceptions.WrongPortTypeException; import java.util.Observable; import java.util.Observer; import orogen.JOrocos.Corba.Path; public class DataFlowComplexTypesTestProxy implements Observer { AbstractOrocosSystem system; AbstractOrocosComponent dataFlowSimpleTypeTestComponent; public DataFlowComplexTypesTestProxy(String systemIP, String systemPort) { try { // create a proxy to the Orocos system and connect to it system = CorbaOrocosSystem.getInstance(systemIP, systemPort); system.connect(); // create a proxy to the Hello World component dataFlowSimpleTypeTestComponent = system.getComponent("DataFlowComplexTypesTest", false); // create a connection to the input ports dataFlowSimpleTypeTestComponent.createDataConnectionToInputPort("pathInputPort", LockPolicy.LOCK_FREE, this); // subsribe to the output ports with a period of 100ms dataFlowSimpleTypeTestComponent.subscribeToDataOutputPort("pathOutputPort", LockPolicy.LOCK_FREE, this, 100); } catch (SystemIpAndPortAlreadyDefinedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SystemNotConnectedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (WrongPortTypeException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void update(Observable observable, Object event) { if(event instanceof OrocosPortEvent){ if(((OrocosPortEvent)event).getValue() instanceof Path){ Path path = (Path)((OrocosPortEvent)event).getValue(); System.out.println("Stamp: " + path.stamp); System.out.println("Frame Id: " + path.frameId); System.out.println("Num Waypoints: " + path.poses.length); for(int i = 0; i < path.poses.length; i++){ System.out.println("Pose-" + i + ": " + "t_x:" + path.poses[0].position.x + ", t_y:" + path.poses[0].position.y + ", t_z:" + path.poses[0].position.z + ", o_x:" + path.poses[0].orientation.x + ", o_y:" + path.poses[0].orientation.y + ", o_z:" + path.poses[0].orientation.z + ", o_w:" + path.poses[0].orientation.w); } } } } public void writeOnInputPort(String name, Path value){ try { dataFlowSimpleTypeTestComponent.writeOnPort(name, value, this); } catch (ConnectionToPortNotExistException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (WrongPortTypeException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }