diff --git a/backend/Main.py b/backend/Main.py index 09d7ccd94..b36cd27d8 100644 --- a/backend/Main.py +++ b/backend/Main.py @@ -1,22 +1,33 @@ import tornado.ioloop +import multiprocessing from app.ChameleonVisionApp import ChameleonApplication from app.classes.SettingsManager import SettingsManager from tornado.options import options from app.handlers.VisionHandler import VisionHandler -if __name__ == "__main__": - SettingsManager() - - VisionHandler().run() - # SettingsManager().save_settings() - +def run_server(): tornado.options.parse_command_line() app = ChameleonApplication() print(f"Serving on port {options.port}") app.listen(options.port) tornado.ioloop.IOLoop.current().start() +if __name__ == "__main__": + SettingsManager() + + procs = VisionHandler().run() + # proc = multiprocessing.Process(target=run_server) + # procs.append(proc) + # proc.start() + + + for i in procs: + i.start() + # SettingsManager().save_settings() + + + #TODO: create process for each camera # create proccess loop and camera publisher # bridge network tables for each camera \ No newline at end of file diff --git a/backend/app/handlers/VisionHandler.py b/backend/app/handlers/VisionHandler.py index e596cc6f5..82cb7c35c 100644 --- a/backend/app/handlers/VisionHandler.py +++ b/backend/app/handlers/VisionHandler.py @@ -70,14 +70,17 @@ class VisionHandler: return input_image def run(self): + procs = [] camera_server = cscore.CameraServer.getInstance() # NetworkTables.startClientTeam(team=SettingsManager.general_settings.get("team_number", 1577)) NetworkTables.initialize("localhost") # NetworkTables.initialize() for cam in SettingsManager().usb_cameras: - multiprocessing.Process(target=self.camera_process(SettingsManager().usb_cameras[cam],cam)) + proc = multiprocessing.Process(target=self.camera_process, args=(SettingsManager().usb_cameras[cam],cam)) + procs.append(proc) # self.camera_process(SettingsManager().usb_cameras[cam],cam) + return procs def camera_process(self, camera,cam_name): @@ -102,7 +105,7 @@ class VisionHandler: flags=networktables.NetworkTablesInstance.NotifyFlags.UPDATE) table.addEntryListenerEx(mode_listener, key="Driver_Mode", flags=networktables.NetworkTablesInstance.NotifyFlags.UPDATE) - change_camera_values() + # change_camera_values() cs = CameraServer.getInstance() cv_sink = cs.getVideo(camera=camera) cv_publish = cs.putVideo(name=cam_name, width=SettingsManager().cams[cam_name]["video_mode"]["width"],