diff --git a/src/urh/controller/GeneratorTabController.py b/src/urh/controller/GeneratorTabController.py index 7d1911db..16e537b5 100644 --- a/src/urh/controller/GeneratorTabController.py +++ b/src/urh/controller/GeneratorTabController.py @@ -386,7 +386,12 @@ class GeneratorTabController(QWidget): self.unsetCursor() return modulated_samples = self.modulate_data(buffer) - FileOperator.save_data_dialog("", modulated_samples, parent=self) + try: + sample_rate = self.modulators[0].sample_rate + except Exception as e: + logger.exception(e) + sample_rate = 1e6 + FileOperator.save_data_dialog("", modulated_samples, sample_rate=sample_rate, parent=self) except Exception as e: Errors.generic_error(self.tr("Failed to generate data"), str(e), traceback.format_exc()) self.unsetCursor() diff --git a/src/urh/controller/dialogs/ReceiveDialog.py b/src/urh/controller/dialogs/ReceiveDialog.py index 29e177e3..97a7a6f3 100644 --- a/src/urh/controller/dialogs/ReceiveDialog.py +++ b/src/urh/controller/dialogs/ReceiveDialog.py @@ -101,7 +101,8 @@ class ReceiveDialog(SendRecvDialog): initial_name = initial_name.replace(Formatter.local_decimal_seperator(), "_").replace("_000", "") - filename = FileOperator.save_data_dialog(initial_name + ".complex", data, parent=self) + filename = FileOperator.save_data_dialog(initial_name + ".complex", data, + sample_rate=dev.sample_rate, parent=self) self.already_saved = True if filename is not None and filename not in self.recorded_files: self.recorded_files.append(filename) diff --git a/src/urh/controller/dialogs/SendDialog.py b/src/urh/controller/dialogs/SendDialog.py index 60e1651c..fc137bee 100644 --- a/src/urh/controller/dialogs/SendDialog.py +++ b/src/urh/controller/dialogs/SendDialog.py @@ -8,6 +8,7 @@ from urh.dev.VirtualDevice import VirtualDevice, Mode from urh.signalprocessing.Signal import Signal from urh.ui.painting.SignalSceneManager import SignalSceneManager from urh.util import FileOperator +from urh.util.Logger import logger class SendDialog(SendRecvDialog): @@ -93,6 +94,11 @@ class SendDialog(SendRecvDialog): filename = FileOperator.get_save_file_name("signal.complex") if filename: try: + try: + self.scene_manager.signal.sample_rate = self.device.sample_rate + except Exception as e: + logger.exception(e) + self.scene_manager.signal.save_as(filename) except Exception as e: QMessageBox.critical(self, self.tr("Error saving signal"), e.args[0]) diff --git a/src/urh/util/FileOperator.py b/src/urh/util/FileOperator.py index a9635919..b01c88e9 100644 --- a/src/urh/util/FileOperator.py +++ b/src/urh/util/FileOperator.py @@ -133,12 +133,13 @@ def get_save_file_name(initial_name: str, wav_only=False, caption="Save signal") return filename -def save_data_dialog(signal_name: str, data, wav_only=False, parent=None) -> str: +def save_data_dialog(signal_name: str, data, sample_rate=1e6, wav_only=False, parent=None) -> str: filename = get_save_file_name(signal_name, wav_only) if filename: try: - save_data(data, filename) + data = convert_data_to_format(data, filename) + save_data(data, filename, sample_rate=sample_rate) except Exception as e: QMessageBox.critical(parent, "Error saving signal", e.args[0]) filename = None