def on_connect(self): addr = self.connectEntryBuffer.get() selfAddr = self.selfEntryBuffer.get() print ' - Connecting ', selfAddr, ' ServicePort to ', addr clientNS = selfAddr.split('/')[0] clientAddr = selfAddr[:selfAddr.rfind(':')][len(clientNS)+1:] if clientNS.find(':') < 0: clientNS = clientNS+':2809' clientPortName = selfAddr.split(':')[1] hostNS = addr.split('/')[0] hostAddr = addr[:addr.rfind(':')][len(hostNS)+1:] if hostNS.find(':') < 0: hostNS = hostNS+':2809' hostPortName = addr.split(':')[1] clientCorbaNaming = OpenRTM_aist.CorbaNaming(OpenRTM_aist.Manager.instance().getORB(), clientNS) clientObj = clientCorbaNaming.resolve(clientAddr) if CORBA.is_nil(clientObj): sys.stdout.write(' -- Failed to connect %s' % clientAddr) return client = OpenRTM_aist.CorbaConsumer() client.setObject(clientObj) clientPorts = client._ptr().get_ports() clientPort = None for p in clientPorts: if p.get_port_profile().name.split('.')[1] == clientPortName: clientPort = p if not clientPort: sys.stdout.write(' -- Failed to find port %s' % clientPort) hostCorbaNaming = OpenRTM_aist.CorbaNaming(OpenRTM_aist.Manager.instance().getORB(), clientNS) hostObj = hostCorbaNaming.resolve(hostAddr) if CORBA.is_nil(hostObj): sys.stdout.write(' -- Failed to connect %s' % clientAddr) return host = OpenRTM_aist.CorbaConsumer() host.setObject(hostObj) hostPorts = host._ptr().get_ports() hostPort = None for p in hostPorts: if p.get_port_profile().name.split('.')[1] == hostPortName: hostPort = p if not hostPort: sys.stdout.write(' -- Failed to find port %s' % hostPort) return name = clientPortName + '_to_' + hostPortName connector_id = name ports = [hostPort, clientPort] properties = [] prof = RTC.ConnectorProfile(name, connector_id, ports, properties) ret = hostPort.connect(prof) hostECList = host._ptr().get_owned_contexts(); hostECList[0].activate_component(host._ptr()); clientECList = client._ptr().get_owned_contexts(); clientECList[0].activate_component(client._ptr()); for b in self._enableAfterConnectButton: b.config(state=tk.NORMAL) pass pass
def on_update(self): addr = VREP_RTC_PATH selfAddr = SELF_RTC_PATH clientNS = selfAddr.split('/')[0] clientAddr = selfAddr[:selfAddr.rfind(':')][len(clientNS)+1:] if clientNS.find(':') < 0: clientNS = clientNS+':2809' clientPortName = selfAddr.split(':')[1] hostNS = addr.split('/')[0] hostAddr = addr[:addr.rfind(':')][len(hostNS)+1:] if hostNS.find(':') < 0: hostNS = hostNS+':2809' hostPortName = addr.split(':')[1] robotRTCs = {} rangeRTCs = {} cameraRTCs = {} objectRTCs = {} otherRTCs = {} try: clientCorbaNaming = OpenRTM_aist.CorbaNaming(OpenRTM_aist.Manager.instance().getORB(), clientNS) root_cxt = clientCorbaNaming.getRootContext() def parseContext(cxt_str, cxt): objs = [] bindingList, bindingIterator = cxt.list(30) for b in bindingList: if b.binding_type == CosNaming.ncontext: child_cxt_str = b.binding_name[0].id + '.' + b.binding_name[0].kind + '/' objs = objs + [cxt_str + o for o in parseContext(child_cxt_str, cxt.resolve(b.binding_name))] elif b.binding_type == CosNaming.nobject: objs.append(cxt_str + b.binding_name[0].id + '.' + b.binding_name[0].kind) return objs rtobjectNames = parseContext("", root_cxt) for rtobjectName in rtobjectNames: obj = clientCorbaNaming.resolve(rtobjectName) if CORBA.is_nil(obj): sys.stdout.write(' - RTObject(%s) not found' % rtobjectName) continue corbaConsumer = OpenRTM_aist.CorbaConsumer() corbaConsumer.setObject(obj) try: prof = corbaConsumer._ptr().get_component_profile() if prof.type_name == 'RobotRTC' and prof.category == 'Simulator': robotRTCs[rtobjectName] = corbaConsumer elif prof.type_name == 'RangeRTC' and prof.category == 'Simulator': rangeRTCs[rtobjectName] = corbaConsumer elif prof.type_name == 'CameraRTC' and prof.category == 'Simulator': cameraRTCs[rtobjectName] = corbaConsumer else: if prof.type_name == 'SimulationManager' and prof.category == 'Simulator': pass else: ns, path, port = self.get_host_rtc_paths() print clientNS + '/' + rtobjectName print ns+'/'+path if ns+'/'+path == clientNS+'/'+rtobjectName: pass else: otherRTCs[clientNS+'/'+rtobjectName] = corbaConsumer except: traceback.print_exc() pass print robotRTCs print otherRTCs def get_object_profile(rtcs): profile_dic = {} for n, r in rtcs.items(): objName = "" arg = "" try: for nv in r._ptr().get_component_profile().properties: if nv.name == 'conf.__innerparam.objectName': objName = any.from_any(nv.value, keep_structs=True) elif nv.name == 'conf.__innerparam.argument': arg = any.from_any(nv.value, keep_structs=True) profile_dic[objName] = arg except: pass return profile_dic self._confRobotsBuffer.set(yaml.dump(get_object_profile(robotRTCs))) self._confRangesBuffer.set(yaml.dump(get_object_profile(rangeRTCs))) self._confCamerasBuffer.set(yaml.dump(get_object_profile(cameraRTCs))) self.rtcMenu['menu'].delete("0", "end") for r in otherRTCs.keys(): self.rtcMenu['menu'].add_command(label=str(r), command= lambda x=str(r): self.synchRTCEntryBuffer.set(x)) if len(otherRTCs.keys()) > 0: self.synchRTCEntryBuffer.set(otherRTCs.keys()[0]) else: self.synchRTCEntryBuffer.set("") if self._simulator._ptr(): retval, rtcs = self._simulator._ptr().getSynchronizingRTCs() if self._fullpath_to_self[0] in rtcs: rtcs.remove(self._fullpath_to_self[0]) ss = yaml.dump(rtcs) if len(rtcs) == 1: ss = '[' + ss + ']' elif len(rtcs) == 0: ss = '[]' self._confSyncRTCsBuffer.set(ss) else: self._confSyncRTCsBuffer.set("[]") except CORBA.TRANSIENT, e: print 'CORBA.TRANSIENT Exception'
def testBaseCorbaFetching(self): self.assertTrue(not CORBA.is_nil(self._objC)) pass
def __init__(self): self.orb = CORBA.ORB_init() try: self.ior = open("LTTSample0.rtc").read() except: print "LTTSample0.rtc not found" import time, sys write = sys.stdout.write write("Launching LTTSampleComp...") sys.stdout.flush() if os.sep == '\\': os.system("start LTTSampleComp.exe") else: os.system("./LTTSampleComp&") while True: try: self.ior = open("LTTSample0.rtc").read() break; except: write(".") sys.stdout.flush() time.sleep(0.01) pass print "done" obj = self.orb.string_to_object(self.ior) if CORBA.is_nil(obj): print "Object in LTTSample0.rtc is nil. Restarting LTTSampleComp..." if os.sep == '\\': os.system("start LTTSampleComp.exe") else: os.system("./LTTSampleComp&") self.ior = open("LTTSample0.rtc").read() obj = self.orb.string_to_object(self.ior) if CORBA.is_nil(obj): print "Object reference is nil" sys.exit(1) import omniORB import sys if os.sep == '\\': os.system("omniidl -I. -bpython SDOPackage.idl RTC.idl LogicalTimeTriggeredEC.idl") import RTC import OpenRTM else: self.sdo_idl = omniORB.importIDL("idl/SDOPackage.idl") self.rtc_idl = omniORB.importIDL("idl/RTC.idl", ["-Iidl"]) self.ltt_idl = omniORB.importIDL("idl/LogicalTimeTriggeredEC.idl", ["-Iidl"]) RTC = sys.modules["RTC"] OpenRTM = sys.modules["OpenRTM"] try: self.rtobj = obj._narrow(RTC.RTObject) except: print "Narrowing failed. Restarting LTTSampleComp..." import time print "Launching LTTSampleComp..." if os.sep == '\\': os.system("start LTTSampleComp.exe") else: os.system("./LTTSampleComp&") time.sleep(1.0) obj = self.orb.string_to_object(open("LTTSample0.rtc").read()) self.rtobj = obj._narrow(RTC.RTObject) cxts = self.rtobj.get_owned_contexts() self.lttcxt = cxts[0]._narrow(OpenRTM.LogicalTimeTriggeredEC) profile = self.lttcxt.get_profile() p = {} p["kind"] = profile.kind p["rate"] = profile.rate p["owner"] = profile.owner from omniORB import any for prop in profile.properties: p[prop.name] = any.from_any(prop.value) print "ExecutionContext:" print " type:", p.pop("type") print " name:", p.pop("name") print " kind:", p.pop("kind") print " rate:", p.pop("rate") print " owner:", p.pop("owner") print "properties:", p