From 26e02f2d40f0b9fd2495156208d6ebf1368f4535 Mon Sep 17 00:00:00 2001 From: peterlu14 Date: Thu, 11 Aug 2022 00:58:30 +0800 Subject: [PATCH] [update] add data_show function print device data --- python/biopro/controller.py | 3 +++ python/biopro/data.py | 11 +++++++++++ python/biopro/devlib/data.py | 11 +++++++---- python/biopro/server/data.py | 3 +++ python/biopro/server/main.py | 7 +++++++ python/biopro/server/recording.py | 2 ++ 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/python/biopro/controller.py b/python/biopro/controller.py index 7a56e90..8432c38 100644 --- a/python/biopro/controller.py +++ b/python/biopro/controller.py @@ -1585,6 +1585,9 @@ class ControlAPI(metaclass=Router): def stop_project(self, project) -> bool: raise NotImplementedError() + + def show_device_data(self, device) -> bool: + raise NotImplementedError() # noinspection PyAbstractClass class ControlClient(SocketClient, ControlAPI, metaclass=SocketClientMacro(ControlAPI)): diff --git a/python/biopro/data.py b/python/biopro/data.py index 51fcb58..46b1ee0 100644 --- a/python/biopro/data.py +++ b/python/biopro/data.py @@ -130,6 +130,14 @@ class DataAPI(metaclass=abc.ABCMeta): def hardware_test(self) -> JSON_OBJECT: """""" pass + + @abc.abstractmethod + def show_data(self, device: Union[int, Device]): + """show device data + + :param device: device ID + """ + pass # noinspection PyAbstractClass @@ -191,6 +199,9 @@ class DataClient(SocketClient, DataAPI, metaclass=SocketClientMacro(DataAPI)): def stop_sync(self, *device: Union[int, Device]): self.send_command('stop_sync', *self._to_device_id(*device)) + + def show_data(self, device: int): + self.send_command('show_data', device) @staticmethod def _to_device_id(*device: Union[int, Device]) -> Tuple[int, ...]: diff --git a/python/biopro/devlib/data.py b/python/biopro/devlib/data.py index 1639bcf..16639c7 100644 --- a/python/biopro/devlib/data.py +++ b/python/biopro/devlib/data.py @@ -853,7 +853,7 @@ class I4V4Z4T4DataDecoder(RecDataDecoder): __slots__ = ('_message', '_cycle_number', '_start_return_data', '_time_stamp', '_total_time_stamp', '_mode', '_cycle_start_time', - '_mode_stop') + '_mode_stop', '_show_data') def __init__(self): super().__init__() @@ -868,6 +868,8 @@ class I4V4Z4T4DataDecoder(RecDataDecoder): self._mode = 0 self._cycle_start_time = [] + self._show_data = False + @property def name(self) -> str: return self.NAME @@ -915,9 +917,10 @@ class I4V4Z4T4DataDecoder(RecDataDecoder): print("error timeStamp full data:", list(data), datetime.now(), '\n') return None else: - # print('|', time_stamp, '|', delta, '|', int(time_stamp * 1000 / 2), - # '|', current, '|', voltage, '|', impedance, - # '|', cycle_number, '|', finishMode, '@', str(self.device)) + if self._show_data: + print('|', time_stamp, '|', delta, '|', int(time_stamp * 1000 / 2), + '|', current, '|', voltage, '|', impedance, + '|', cycle_number, '|', finishMode, '@', str(self.device)) # print('|', '{:10}'.format(time_stamp), # '|', '{:4}'.format(delta), diff --git a/python/biopro/server/data.py b/python/biopro/server/data.py index adbd1f3..88f01a3 100644 --- a/python/biopro/server/data.py +++ b/python/biopro/server/data.py @@ -699,6 +699,9 @@ class DataServer(SocketServer, DataAPI): self.mqtt_thread.publish('device_instruction', json_stringify(content), inter = True) return True + + def show_data(self, device): + self._configurations[device].put_rec_queue('show_data') class DataRuntime(metaclass=abc.ABCMeta): __slots__ = ('_server', '_device', '_meta_file', '_data_format', diff --git a/python/biopro/server/main.py b/python/biopro/server/main.py index f68ee14..772f419 100644 --- a/python/biopro/server/main.py +++ b/python/biopro/server/main.py @@ -1339,6 +1339,13 @@ class ControlServer(SocketServer, ControlServerAPI): def _hardware_send_test_set(self, options: Dict[str, str]) -> bool: # TODO write options files return False + + @logging_info + def show_device_data(self, device: int): + client = self.data_server.client() + if client is not None: + with client: + client.show_data(device) class _RandomCrashThread(ServerThread): def __init__(self): diff --git a/python/biopro/server/recording.py b/python/biopro/server/recording.py index 70dd5ca..041afa6 100644 --- a/python/biopro/server/recording.py +++ b/python/biopro/server/recording.py @@ -185,6 +185,8 @@ class RecordingProcess(Process): self.final_write() self.is_closed = True return False + elif q == 'show_data': + self._decoder._show_data = not self._decoder._show_data else: self.rec_update() self.sync_data(q)