From 59bff5fbdfb3d74d8d55fee3ac5d1aef2bfad8fd Mon Sep 17 00:00:00 2001 From: Christoph Schmidt <christoph.,schmidt@tugraz.at> Date: Thu, 4 Jan 2024 14:14:57 +0100 Subject: [PATCH] Cleaned up log output. Updated to version 0.2.3 --- examples/main.py | 2 +- src/CaptDeviceControl/CaptDeviceConfig.py | 2 +- .../controller/BaseAD2CaptDevice.py | 17 +++++-- .../controller/mp_AD2Capture/MPCaptDevice.py | 49 +++++++++++-------- .../mp_AD2Capture/MPCaptDeviceControl.py | 8 +-- .../AD2CaptDeviceInformationModel.py | 1 - 6 files changed, 48 insertions(+), 31 deletions(-) diff --git a/examples/main.py b/examples/main.py index 3137e01..be81ffc 100644 --- a/examples/main.py +++ b/examples/main.py @@ -38,7 +38,7 @@ if __name__ == "__main__": model = CaptDevice.Model(conf) - controller = CaptDevice.Controller(model, None) + controller = CaptDevice.Controller(model, None, log_file="log.log") window = CaptDevice.View(model, controller) window.show() diff --git a/src/CaptDeviceControl/CaptDeviceConfig.py b/src/CaptDeviceControl/CaptDeviceConfig.py index 9084f8b..22f6cb7 100644 --- a/src/CaptDeviceControl/CaptDeviceConfig.py +++ b/src/CaptDeviceControl/CaptDeviceConfig.py @@ -12,7 +12,7 @@ import confighandler as cfg class CaptDeviceConfig(cfg.ConfigNode): def __init__(self) -> None: - super().__init__(internal_log=True, internal_log_level=logging.DEBUG) + super().__init__(internal_log=False, internal_log_level=logging.DEBUG) self.selected_device_index = cfg.Field(0, friendly_name="Selected device", description="Selected device from the device list provided by the DreamWaves API.") diff --git a/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py b/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py index 773dc1a..20575af 100644 --- a/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py +++ b/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py @@ -29,6 +29,7 @@ class BaseAD2CaptDevice(cmp.CProcessControl): ain_channels_changed = Signal(list, name="ain_channels_changed") selected_ain_channel_changed = Signal(int, name="selected_ain_channel_changed") + sample_rate_changed = Signal(float, name="sample_rate_changed") ain_buffer_size_changed = Signal(int, name="ain_buffer_size_changed") analog_in_bits_changed = Signal(int, name="analog_in_bits_changed") analog_in_buffer_size_changed = Signal(int, name="analog_in_buffer_size_changed") @@ -43,10 +44,9 @@ class BaseAD2CaptDevice(cmp.CProcessControl): capture_process_state_changed = Signal(AD2Constants.CapturingState, name="capture_process_state_changed") ready_for_recording_changed = Signal(bool, name="ready_for_recording_changed") - def __init__(self, ad2capt_model: AD2CaptDeviceModel, start_capture_flag: Value): - super().__init__( - internal_log=True, - internal_log_level=logging.DEBUG) + def __init__(self, ad2capt_model: AD2CaptDeviceModel, start_capture_flag: Value, + internal_log=True, internal_log_level=logging.WARNING, log_file=None): + super().__init__(internal_log=internal_log, internal_log_level=internal_log_level, log_file=log_file) self.model = ad2capt_model @@ -75,6 +75,9 @@ class BaseAD2CaptDevice(cmp.CProcessControl): self.start_capture_flag, self.kill_capture_flag ) + self.logger.setLevel(logging.INFO) + self.set_child_log_level(logging.INFO) + self.connect_signals() self._connect_config_signals() @@ -82,6 +85,8 @@ class BaseAD2CaptDevice(cmp.CProcessControl): self.selected_ain_channel = self.model.analog_in.selected_ain_channel + + def connect_signals(self): self.dwf_version_changed.connect(self._on_dwf_version_changed) self.discovered_devices_changed.connect(self.on_discovered_devices_changed) @@ -188,6 +193,7 @@ class BaseAD2CaptDevice(cmp.CProcessControl): # DWF Version # ================================================================================================================== def _on_dwf_version_changed(self, version): + self.logger.info(f"DWF Version returned: {version}") self.model.dwf_version = version # ================================================================================================================== @@ -200,7 +206,10 @@ class BaseAD2CaptDevice(cmp.CProcessControl): :return: """ + def on_discovered_devices_changed(self, devices: list): + self.logger.info(f"Discovered devices: {len(devices)}") + self.logger.debug(f"Discovered devices: {devices}") self.model.device_information.connected_devices = devices def _on_selected_device_index_changed(self, index): diff --git a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py index 621ec1c..8f51713 100644 --- a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py +++ b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py @@ -33,11 +33,11 @@ class MPCaptDevice(cmp.CProcess, ): start_capture_flag: Value, kill_capture_flag: Value, kill_flag: Value, - internal_log, internal_log_level): + internal_log, internal_log_level, log_file): super().__init__(state_queue, cmd_queue, kill_flag=kill_flag, internal_log=internal_log, - internal_log_level=internal_log_level) + internal_log_level=internal_log_level, log_file=log_file) # Objects for data exchange self.start_capture_flag: Value = start_capture_flag @@ -124,7 +124,6 @@ class MPCaptDevice(cmp.CProcess, ): @ain_channels.setter(emit_to='ain_channels_changed') def ain_channels(self, value): - self.logger.info("Setting ain channels.") self._ain_channels = value @CProperty @@ -203,7 +202,8 @@ class MPCaptDevice(cmp.CProcess, ): # Device Enumeration without connecting to the device # ================================================================================================================== @cmp.CProcess.register_signal() - def discover_connected_devices(self): + def discover_connected_devices(self, filter_type: int = enumfilterType.value | enumfilterDemo.value | enumfilterUSB.value): + self.logger.info(f"Discovering connected devices...") # enumerate connected devices @@ -215,22 +215,24 @@ class MPCaptDevice(cmp.CProcess, ): # (c_int32(enumfilterType.value | enumfilterAudio.value), 'Audio'), # (c_int32(enumfilterType.value | enumfilterDemo.value), 'Demo')]: cDevice = c_int() - filter, type = (c_int32(enumfilterType.value | enumfilterDemo.value | enumfilterUSB.value), 'USB') + filter, type = (c_int32(filter_type), 'USB') # filter, type = (c_int32(enumfilterType.value | enumfilterDemo.value), 'DEMO') - self.logger.debug(f"Filtering {type} devices...") + self.logger.debug(f"Filter has been used: {hex(int(filter_type))}") self.dwf.FDwfEnum(filter, byref(cDevice)) - self.logger.debug(f"Found {cDevice.value} {type} devices.") - for iDevice in range(0, cDevice.value): + if self.get_device_serial_number(iDevice) == "DEMO": + _type = "DEMO" + else: + _type = type connected_devices.append({ - 'type': type, + 'type': _type, 'device_id': int(iDevice), 'device_name': self.get_device_name(iDevice), 'serial_number': self.get_device_serial_number(iDevice) }) # _mp_log_debug(f"Found {type} device: {devicename.value.decode('UTF-8')} ({serialnum.value.decode('UTF-8')})") - self.logger.info(f"Found {len(connected_devices)} devices.") + self.logger.debug(f"Found {len(connected_devices)} devices.") return connected_devices # ================================================================================================================== # Settings from process Control @@ -287,7 +289,7 @@ class MPCaptDevice(cmp.CProcess, ): def close_device(self): # self.dwf.FDwfAnalogOutReset(self.hdwf, c_int(channel)) - self.logger.info(f"[Task] Closing device...") + self.logger.debug(f"[Task] Closing device...") self.dwf.FDwfDeviceClose(self.hdwf) self.hdwf.value = 0 self.connected = False @@ -297,17 +299,21 @@ class MPCaptDevice(cmp.CProcess, ): # Device Information # ================================================================================================================== def get_ain_channels(self) -> list: - cInfo = c_int() - self.dwf.FDwfEnumConfigInfo(c_int(self.selected_device_index), c_int(1), byref(cInfo)) - ain_channels = cInfo.value - if ain_channels == 0: + #self.logger.debug(f"Reading available analog input channels for device {self.selected_device_index}.") + #cInfo = c_int() + #print(f">>> {cInfo}") + #self.dwf.FDwfEnumConfigInfo(c_int(self.selected_device_index), c_int(1), byref(cInfo)) + #print(f">>><<<< {cInfo}") + #self.ain_channels = cInfo.value + #if self.ain_channels == 0: # Sometimes, the device reports a wrong number of ain channels # so we can try to connect to the device first and retrieve the information - self.open_device(self.selected_device_index) - ain_channels = self.analog_in_channels_count() - self.close_device() - self.logger.debug(f"Device {self.selected_device_index} has {ain_channels} analog input channels.") - return list(range(0, ain_channels)) + self.open_device() + self.ain_channels = self.analog_in_channels_count() + self.close_device() + self.logger.info(f"Device {self.device_name} (#{self.selected_device_index}, SNR: {self.device_serial_number}) " + f"AIn: {self.ain_channels}") + return list(range(0, self.ain_channels)) def get_ain_buffer_size(self, device_id) -> int: cInfo = c_int() @@ -355,7 +361,8 @@ class MPCaptDevice(cmp.CProcess, ): Calls WaveForms API Function 'FDwfAnalogInChannelCount(HDWF hdwf, int *pcChannel)' :return: The number of analog in channels. """ - if self.connected(): + if self.device_connected(): + self.logger.debug(f"Reading AnalogIn Channel Count from device {self._device_name}") try: int0 = c_int() self.dwf.FDwfAnalogInChannelCount(self.hdwf, byref(int0)) diff --git a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py index 537c1c1..e845f1e 100644 --- a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py +++ b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py @@ -7,6 +7,8 @@ from PySide6.QtCore import Signal from CaptDeviceControl.model.AD2CaptDeviceModel import AD2CaptDeviceSignals, AD2CaptDeviceModel from CaptDeviceControl.model.AD2Constants import AD2Constants +from CaptDeviceControl.controller.mp_AD2Capture.MPCaptDevice import MPCaptDevice + class MPCaptDeviceControl(cmp.CProcessControl): @@ -36,9 +38,9 @@ class MPCaptDeviceControl(cmp.CProcessControl): capturing_data_queue, start_capture_flag, kill_capture_flag, - parent=None, - internal_log=True, - internal_log_level=logging.DEBUG): + internal_log, + internal_log_level, + parent=None): super().__init__(parent, internal_log=internal_log, internal_log_level=internal_log_level) diff --git a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceInformationModel.py b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceInformationModel.py index 0ba7c3f..dbdc6ae 100644 --- a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceInformationModel.py +++ b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceInformationModel.py @@ -69,7 +69,6 @@ class AD2CaptDeviceInformationModel: @selected_device_index.setter def selected_device_index(self, value: int): - print("selected_device_index", value) self._config.selected_device_index.set(value) self.signals.selected_device_index_changed.emit(self.selected_device_index) -- GitLab