def __init__(self, camera, settings_file = None): # Gettings settings from settings file if not settings_file: try: self.settings = json.load (open (proto_base_path + "/src/communication/Video_Settings.json", "r")) except: self.debug.print_d ("Video_settings.json is not in json format!") sys.exit () else: try: self.settings = json.load (open (settings_file, "r")) except: self.debug.print_d ("Specified file [{sfile}] doesn't exist or is not in json format!".format (sfile = settings_file)) sys.exit () context = zmq.Context () self.debug = debugging () # ZMQ Settings self.confirmer = context.socket (zmq.PUB) #self.confirmer.setsockopt (zmq.SNDTIMEO, 5000) self.confirmer.bind ("tcp://" + self.settings["Reciever_IP"] + ":" + self.settings["Reciever_Port"]) self.reciever = context.socket (zmq.SUB) self.reciever.setsockopt (zmq.SUBSCRIBE, "") #self.reciever.setsockopt (zmq.RCVTIMEO, 5000) self.reciever.connect ("tcp://" + self.settings["Server_IP"] + ":" + self.settings["Server_Port"]) com = communicator ("Pinger_Base") self.pinger = passive_pinger (communicator=com) self.pinger.daemon = True self.pinger.start ()
def __init__(self, communicator, _ping_threshold=5, _ping_frequency=1): threading.Thread.__init__(self) self.com = communicator self.ping_frequency = _ping_frequency self.ping_threshold = _ping_threshold self.debug = debugging () self.current_timestamp = None self.listening_to = communicator.get_listening_to () self.listening_to = self.listening_to[-1] # This only works if the pinger is only listening to a single other module (the other pinger) self.CONNECTED = False
def __init__(self, module_name, settings_file=None): self.debug = debugging () # Gettings settings from settings file if not settings_file: try: self.settings = json.load (open (proto_base_path + "/src/communication/Communication_Settings.json", "r")) except: self.debug.print_d ("Communication_Settings.json is not in json format!") sys.exit () else: try: self.settings = json.load (open (settings_file, "r")) except: self.debug.print_d ("Specified file [{sfile}] doesn't exist or is not in json format!".format (sfile = settings_file)) sys.exit () # Setting up publisher self.publisher = {} self.publisher["mname"] = module_name # TODO: Make a single context for all subscribers and one for publisher self.publisher["context"] = zmq.Context () self.publisher["socket"] = self.publisher["context"].socket (zmq.PUB) self.publisher["socket"].setsockopt (zmq.HWM, 15) self.publisher["socket"].bind ("tcp://" + self.settings[module_name]["IP"] + ":" + self.settings[module_name]["Port"]) # Setting up subscribers self.listening_to = [] for module in self.settings[self.publisher["mname"]]["Listening"]: self.listening_to.append (module) # TODO: Make a single context for all subscribers and one for publisher self.subscriber = {} for module in self.listening_to: self.subscriber[module] = {} self.subscriber[module]["context"] = zmq.Context () self.subscriber[module]["socket"] = self.subscriber[module]["context"].socket (zmq.SUB) self.subscriber[module]["socket"].setsockopt (zmq.SUBSCRIBE, "") self.subscriber[module]["socket"].setsockopt (zmq.HWM, 15) self.subscriber[module]["socket"].connect ("tcp://" + self.settings[module]["IP"] + ":" + self.settings[module]["Port"]) self.subscriber[module]["msg"] = None # Setting up refresher system self.refresher = self.updater (communicator=self, update_frequency=self.settings[module_name]["Update_Frequency"]) self.refresher.daemon = True self.refresher.start()
def __init__(self, camera, settings_file = None): # Gettings settings from settings file if not settings_file: try: self.settings = json.load (open (proto_base_path + "/src/communication/Video_Settings.json", "r")) except: self.debug.print_d ("Video_Settings.json is not in json format!") sys.exit () else: try: self.settings = json.load (open (settings_file, "r")) except: self.debug.print_d ("Specified file [{sfile}] doesn't exist or is not in json format!".format (sfile = settings_file)) sys.exit () context = zmq.Context () self.debug = debugging () # Camera Settings self.cap = cv2.VideoCapture (self.settings[camera]["Index"]) self.cap.set (cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, self.settings[camera]["Height"]) self.cap.set (cv2.cv.CV_CAP_PROP_FRAME_WIDTH, self.settings[camera]["Width"]) self.cap.set (cv2.cv.CV_CAP_PROP_FPS, self.settings[camera]["FPS"]) self.cap.set (cv2.cv.CV_CAP_PROP_FOURCC, cv2.cv.CV_FOURCC (str (self.settings[camera]["Codec"][0]), str (self.settings[camera]["Codec"][1]), str (self.settings[camera]["Codec"][2]), str (self.settings[camera]["Codec"][3]))) # ZMQ Settings self.server = context.socket (zmq.PUB) self.server.setsockopt (zmq.HWM, self.settings[camera]["HWM"]) #self.server.setsockopt (zmq.SNDTIMEO, 5000) self.server.bind ("tcp://" + self.settings["Server_IP"] + ":" + self.settings["Server_Port"]) self.confirmer = context.socket (zmq.SUB) self.confirmer.setsockopt (zmq.SUBSCRIBE, "") #self.confirmer.setsockopt (zmq.RCVTIMEO, 5000) self.confirmer.connect ("tcp://" + self.settings["Reciever_IP"] + ":" + self.settings["Reciever_Port"]) com = communicator ("Pinger_Copter") self.pinger = passive_pinger (communicator=com) self.pinger.daemon = True self.pinger.start () self.msg = "Ready!"