diff --git a/tyutool/ai_debug/ser_debug.py b/tyutool/ai_debug/ser_debug.py index 0432dae..b75f096 100644 --- a/tyutool/ai_debug/ser_debug.py +++ b/tyutool/ai_debug/ser_debug.py @@ -33,6 +33,10 @@ def __init__(self, port, baud, save, '1': {'name': 'dump_ref.pcm', 'file': None, 'active': False, 'length': 0}, '2': {'name': 'dump_aec.pcm', + 'file': None, 'active': False, 'length': 0}, + '3': {'name': 'dump_kws.pcm', + 'file': None, 'active': False, 'length': 0}, + '4': {'name': 'dump_vad.pcm', 'file': None, 'active': False, 'length': 0} } self.current_dump_channel = None @@ -133,6 +137,13 @@ def send_command(self, cmd): return False return True + def send_echo(self, message): + if not message: + self.logger.warning(f"Invalid message") + return + + self.send_command(f"echo {message}") + def start_dump(self, channel, prefix=""): if channel not in self.dump_files: self.logger.warning(f"Invalid channel: {channel}") @@ -195,6 +206,8 @@ def show_help(self): print("dump 0 - Dump microphone channel") print("dump 1 - Dump reference channel") print("dump 2 - Dump AEC channel") + print("dump 3 - Dump KWS channel") + print("dump 4 - Dump VAD channel") print("bg 0 - white noise") print("bg 1 - 1K-0dB (bg 1 1000)") print("bg 2 - sweep frequency constantly") @@ -210,6 +223,7 @@ def show_help(self): print("alg get \ - Get audio algorithm parameters (e.g.: alg get aec_ec_depth)") print("alg dump - Dump audio algorithm parameters") + print("echo - Send message") print("quit - Exit the program") pass @@ -224,11 +238,16 @@ def process_input_cmd(self, cmd): return True # Dump - if cmd in ['dump 0', 'dump 1', 'dump 2']: + if cmd in ['dump 0', 'dump 1', 'dump 2', 'dump 3', 'dump 4']: channel = cmd.split()[1] self.start_dump(channel) return True + elif cmd.startswith('echo'): + message = cmd.split()[1] + self.send_echo(message) + return True + # Check [alg set] params elif cmd.startswith('alg set '): parts = cmd.split() diff --git a/tyutool/cli/cli_ai_debug.py b/tyutool/cli/cli_ai_debug.py index 610a993..4f76844 100644 --- a/tyutool/cli/cli_ai_debug.py +++ b/tyutool/cli/cli_ai_debug.py @@ -2,6 +2,7 @@ # -*- coding: utf-8 -*- import sys +import time import click import threading @@ -134,9 +135,52 @@ def ser_auto_cli(port, baud, save): pass +@click.command() +@click.option('-p', '--port', + type=str, required=False, + help="Target port") +@click.option('-b', '--baud', + type=int, default=460800, + help="Uart baud rate") +@click.option('-w', '--wait', + type=int, default=5, + help="wait for recvice uart dump.") +@click.option('-s', '--save', + type=str, default="ser_ai_debug", + help="Save assets to catalog.") +@click.argument('cmd_args', nargs=-1, required=True) + +def ser_cli_cmd(port, baud, save, wait, cmd_args): + logger = get_logger() + logger.debug(f"port: {port}") + logger.debug(f"baud: {baud}") + logger.debug(f"save: {save}") + logger.debug(f"wait: {wait}") + logger.debug(f"cmd: {cmd_args}") + + monitor = SerAIDebugMonitor(port, baud, save, logger, gui_mode=False) + + if not monitor.open_port(): + return + + # 启动读取线程 + monitor.start_reading() + + # 输入命令, + cmd = " ".join(cmd_args) + print(cmd) + monitor.process_input_cmd("".join(cmd)) + if cmd in ['dump 0', 'dump 1', 'dump 2', 'dump 3', 'dump 4']: + time.sleep(wait) + monitor.stop_reading() + monitor.close_port() + pass + + CLIS = { "web": web_cli, "ser": ser_cli, + "ser_cmd": ser_cli_cmd, "ser_auto": ser_auto_cli, } diff --git a/tyutool/gui/ser_debug/ser_debug_ui.py b/tyutool/gui/ser_debug/ser_debug_ui.py index 853cab2..53b0fdd 100644 --- a/tyutool/gui/ser_debug/ser_debug_ui.py +++ b/tyutool/gui/ser_debug/ser_debug_ui.py @@ -115,6 +115,12 @@ def serDebugUiSetup(self): self.ui.pushButtonSDDump2.clicked.connect( lambda: self.pushButtonSDCmdClicked("dump 2") ) + self.ui.pushButtonSDDump3.clicked.connect( + lambda: self.pushButtonSDCmdClicked("dump 3") + ) + self.ui.pushButtonSDDump4.clicked.connect( + lambda: self.pushButtonSDCmdClicked("dump 4") + ) self.ui.pushButtonSDBg0.clicked.connect( lambda: self.pushButtonSDCmdClicked("bg 0") ) diff --git a/tyutool/gui/ui_main.py b/tyutool/gui/ui_main.py index 4a677df..8044a92 100644 --- a/tyutool/gui/ui_main.py +++ b/tyutool/gui/ui_main.py @@ -560,6 +560,34 @@ def setupUi(self, MainWindow): self.verticalLayout_11.addLayout(self.horizontalLayout_17) + self.horizontalLayout_50 = QHBoxLayout() + self.horizontalLayout_50.setObjectName(u"horizontalLayout_50") + self.pushButtonSDDump3 = QPushButton(self.scrollAreaWidgetContents) + self.pushButtonSDDump3.setObjectName(u"pushButtonSDDump3") + self.pushButtonSDDump3.setStyleSheet(u"text-align: left;\n" +"padding-left: 10px;\n" +"padding-top: 4px;\n" +"padding-bottom: 4px;") + + self.horizontalLayout_50.addWidget(self.pushButtonSDDump3) + + + self.verticalLayout_11.addLayout(self.horizontalLayout_50) + + self.horizontalLayout_51 = QHBoxLayout() + self.horizontalLayout_51.setObjectName(u"horizontalLayout_51") + self.pushButtonSDDump4 = QPushButton(self.scrollAreaWidgetContents) + self.pushButtonSDDump4.setObjectName(u"pushButtonSDDump4") + self.pushButtonSDDump4.setStyleSheet(u"text-align: left;\n" +"padding-left: 10px;\n" +"padding-top: 4px;\n" +"padding-bottom: 4px;") + + self.horizontalLayout_51.addWidget(self.pushButtonSDDump4) + + + self.verticalLayout_11.addLayout(self.horizontalLayout_51) + self.horizontalLayout_18 = QHBoxLayout() self.horizontalLayout_18.setObjectName(u"horizontalLayout_18") self.pushButtonSDBg0 = QPushButton(self.scrollAreaWidgetContents) @@ -1187,6 +1215,8 @@ def retranslateUi(self, MainWindow): self.pushButtonSDDump0.setText(QCoreApplication.translate("MainWindow", u"dump: microphone channel", None)) self.pushButtonSDDump1.setText(QCoreApplication.translate("MainWindow", u"dump: reference channel", None)) self.pushButtonSDDump2.setText(QCoreApplication.translate("MainWindow", u"dump: AEC channel", None)) + self.pushButtonSDDump3.setText(QCoreApplication.translate("MainWindow", u"dump: KWS channel", None)) + self.pushButtonSDDump4.setText(QCoreApplication.translate("MainWindow", u"dump: VAD channel", None)) self.pushButtonSDBg0.setText(QCoreApplication.translate("MainWindow", u"play: white noise", None)) self.pushButtonSDBg1.setText(QCoreApplication.translate("MainWindow", u"play: 1K-0dB", None)) self.pushButtonSDBg2.setText(QCoreApplication.translate("MainWindow", u"play: sweep frequency constantly", None)) diff --git a/tyutool/util/util.py b/tyutool/util/util.py index 326cb74..e99ad4a 100644 --- a/tyutool/util/util.py +++ b/tyutool/util/util.py @@ -11,7 +11,7 @@ import socket TYUTOOL_ROOT = os.path.dirname(os.path.abspath(sys.argv[0])) -TYUTOOL_VERSION = "2.1.0" +TYUTOOL_VERSION = "2.2.0" def tyutool_env():