Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 26e02f2d40 |
@@ -1586,6 +1586,9 @@ class ControlAPI(metaclass=Router):
|
|||||||
def stop_project(self, project) -> bool:
|
def stop_project(self, project) -> bool:
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
|
def show_device_data(self, device) -> bool:
|
||||||
|
raise NotImplementedError()
|
||||||
|
|
||||||
# noinspection PyAbstractClass
|
# noinspection PyAbstractClass
|
||||||
class ControlClient(SocketClient, ControlAPI, metaclass=SocketClientMacro(ControlAPI)):
|
class ControlClient(SocketClient, ControlAPI, metaclass=SocketClientMacro(ControlAPI)):
|
||||||
"""Connect to controller server through the socket.
|
"""Connect to controller server through the socket.
|
||||||
|
|||||||
@@ -131,6 +131,14 @@ class DataAPI(metaclass=abc.ABCMeta):
|
|||||||
""""""
|
""""""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def show_data(self, device: Union[int, Device]):
|
||||||
|
"""show device data
|
||||||
|
|
||||||
|
:param device: device ID
|
||||||
|
"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyAbstractClass
|
# noinspection PyAbstractClass
|
||||||
class DataClient(SocketClient, DataAPI, metaclass=SocketClientMacro(DataAPI)):
|
class DataClient(SocketClient, DataAPI, metaclass=SocketClientMacro(DataAPI)):
|
||||||
@@ -192,6 +200,9 @@ class DataClient(SocketClient, DataAPI, metaclass=SocketClientMacro(DataAPI)):
|
|||||||
def stop_sync(self, *device: Union[int, Device]):
|
def stop_sync(self, *device: Union[int, Device]):
|
||||||
self.send_command('stop_sync', *self._to_device_id(*device))
|
self.send_command('stop_sync', *self._to_device_id(*device))
|
||||||
|
|
||||||
|
def show_data(self, device: int):
|
||||||
|
self.send_command('show_data', device)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _to_device_id(*device: Union[int, Device]) -> Tuple[int, ...]:
|
def _to_device_id(*device: Union[int, Device]) -> Tuple[int, ...]:
|
||||||
return tuple(map(lambda d: d.device_id if isinstance(d, Device) else d, device))
|
return tuple(map(lambda d: d.device_id if isinstance(d, Device) else d, device))
|
||||||
|
|||||||
@@ -853,7 +853,7 @@ class I4V4Z4T4DataDecoder(RecDataDecoder):
|
|||||||
|
|
||||||
__slots__ = ('_message', '_cycle_number', '_start_return_data', '_time_stamp',
|
__slots__ = ('_message', '_cycle_number', '_start_return_data', '_time_stamp',
|
||||||
'_total_time_stamp', '_mode', '_cycle_start_time',
|
'_total_time_stamp', '_mode', '_cycle_start_time',
|
||||||
'_mode_stop')
|
'_mode_stop', '_show_data')
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@@ -868,6 +868,8 @@ class I4V4Z4T4DataDecoder(RecDataDecoder):
|
|||||||
self._mode = 0
|
self._mode = 0
|
||||||
self._cycle_start_time = []
|
self._cycle_start_time = []
|
||||||
|
|
||||||
|
self._show_data = False
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self) -> str:
|
def name(self) -> str:
|
||||||
return self.NAME
|
return self.NAME
|
||||||
@@ -915,9 +917,10 @@ class I4V4Z4T4DataDecoder(RecDataDecoder):
|
|||||||
print("error timeStamp full data:", list(data), datetime.now(), '\n')
|
print("error timeStamp full data:", list(data), datetime.now(), '\n')
|
||||||
return None
|
return None
|
||||||
else:
|
else:
|
||||||
# print('|', time_stamp, '|', delta, '|', int(time_stamp * 1000 / 2),
|
if self._show_data:
|
||||||
# '|', current, '|', voltage, '|', impedance,
|
print('|', time_stamp, '|', delta, '|', int(time_stamp * 1000 / 2),
|
||||||
# '|', cycle_number, '|', finishMode, '@', str(self.device))
|
'|', current, '|', voltage, '|', impedance,
|
||||||
|
'|', cycle_number, '|', finishMode, '@', str(self.device))
|
||||||
|
|
||||||
# print('|', '{:10}'.format(time_stamp),
|
# print('|', '{:10}'.format(time_stamp),
|
||||||
# '|', '{:4}'.format(delta),
|
# '|', '{:4}'.format(delta),
|
||||||
|
|||||||
@@ -700,6 +700,9 @@ class DataServer(SocketServer, DataAPI):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def show_data(self, device):
|
||||||
|
self._configurations[device].put_rec_queue('show_data')
|
||||||
|
|
||||||
class DataRuntime(metaclass=abc.ABCMeta):
|
class DataRuntime(metaclass=abc.ABCMeta):
|
||||||
__slots__ = ('_server', '_device', '_meta_file', '_data_format',
|
__slots__ = ('_server', '_device', '_meta_file', '_data_format',
|
||||||
'_sync_started', 'sync_file_request', '_writer')
|
'_sync_started', 'sync_file_request', '_writer')
|
||||||
|
|||||||
@@ -1340,6 +1340,13 @@ class ControlServer(SocketServer, ControlServerAPI):
|
|||||||
# TODO write options files
|
# TODO write options files
|
||||||
return False
|
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):
|
class _RandomCrashThread(ServerThread):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__('Crash')
|
super().__init__('Crash')
|
||||||
|
|||||||
@@ -185,6 +185,8 @@ class RecordingProcess(Process):
|
|||||||
self.final_write()
|
self.final_write()
|
||||||
self.is_closed = True
|
self.is_closed = True
|
||||||
return False
|
return False
|
||||||
|
elif q == 'show_data':
|
||||||
|
self._decoder._show_data = not self._decoder._show_data
|
||||||
else:
|
else:
|
||||||
self.rec_update()
|
self.rec_update()
|
||||||
self.sync_data(q)
|
self.sync_data(q)
|
||||||
|
|||||||
Reference in New Issue
Block a user