diff --git a/boswatch/processManager.py b/boswatch/processManager.py index 27d5f05..6f6840d 100644 --- a/boswatch/processManager.py +++ b/boswatch/processManager.py @@ -37,14 +37,17 @@ class ProcessManager: @param arg: argument to add as string""" logging.debug("add argument to process: %s -> %s", self._args[0], arg) - self._args.append(arg.split()) + for splitArg in arg.split(): + self._args.append(splitArg) def clearArguments(self): """!clear all arguments""" self._args = self._args[0:1] # kept first element (process name) def start(self): - """!start the new process""" + """!start the new process + + @return: True or False""" logging.debug("start new process: %s", self._args) try: self._processHandle = subprocess.Popen(self._args, @@ -52,17 +55,24 @@ class ProcessManager: stdout=self._stdout, stderr=self._stderr, universal_newlines=self._textMode) + if not self.isRunning: + logging.error("cannot start") + return False + return True + except FileNotFoundError: logging.error("File not found: %s", self._args[0]) + return False def stop(self): """!Stop the process by sending SIGTERM and wait for ending""" - if self._processHandle and self.isRunning: - logging.debug("stopping process: %s", self._args[0]) + logging.debug("stopping process: %s", self._args[0]) + if self.isRunning: self._processHandle.terminate() while self.isRunning: pass - logging.debug("cannot stop - process not running: %s", self._args[0]) + else: + logging.debug("process not running: %s", self._args[0]) def readline(self): """!Read one line from stdout stream diff --git a/bw_client.py b/bw_client.py index 58cc0e5..2ae2162 100644 --- a/bw_client.py +++ b/bw_client.py @@ -47,23 +47,52 @@ from boswatch.processManager import ProcessManager header.logoToLog() header.infoToLog() +# sox = ProcessManager("_bin/win/sox/sox.exe") +# rtl = ProcessManager("_bin/win/rtl_fm/rtl_fm.exe") # multimon = ProcessManager("_bin/win/multimon/multimon-ng.exe", True) -# multimon.addArgument("-a POCSAG1200") -# multimon.addArgument("-t raw") -# multimon.addArgument("-v 3") -# multimon.addArgument("poc1200.raw") # -# multimon.setStderr(None) -# multimon.start() # -# logging.debug("go") +# try: +# rtl.addArgument("-f 85.235MHz") +# rtl.addArgument("-d 1") +# rtl.addArgument("-M fm -s 22050 -g 100") +# rtl.setStderr(None) +# #rtl.start() # -# while multimon.isRunning: -# data = multimon.readline() -# if data is not None: -# print(data) +# sox.addArgument("-t ogg 88022.ogg -esigned-integer -b16 -r 22050 -t raw -") +# sox.setStderr(None) +# sox.start() # # +# #.\_bin\win\sox\sox.exe -t ogg -esigned-integer -b16 -r 22050 88022.ogg - +# +# multimon.addArgument("-a ZVEI1 -a FMSFSK") +# multimon.addArgument("-t raw") +# #multimon.addArgument("-v 3") +# multimon.addArgument("-") +# multimon.setStdin(sox.stdout) +# multimon.setStderr(None) +# +# multimon.start() +# +# logging.debug("go") +# +# while multimon.isRunning: +# data = multimon.readline() +# if data is not None: +# print(data) +# +# logging.debug("end") +# +# except: +# logging.exception("batsch") +# +# finally: +# +# sox.stop() +# multimon.stop() +# rtl.stop() +# # exit() logging.debug("parse args")