From a922bb34f9358f6bda5df70315057f71ed4ba456 Mon Sep 17 00:00:00 2001 From: Robofish <1683502971@qq.com> Date: Wed, 13 Aug 2025 04:38:36 +0800 Subject: [PATCH] =?UTF-8?q?exe=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code_generate_interface.cpython-39.pyc | Bin 7908 -> 10981 bytes .../mini_tool_interface.cpython-39.pyc | Bin 3763 -> 3763 bytes .../serial_terminal_interface.cpython-39.pyc | Bin 5838 -> 5838 bytes app/code_generate_interface.py | 308 ++++++++++-------- .../__pycache__/bsp_interface.cpython-39.pyc | Bin 29483 -> 34233 bytes .../component_interface.cpython-39.pyc | Bin 15873 -> 13148 bytes .../device_interface.cpython-39.pyc | Bin 0 -> 11311 bytes app/code_page/device_interface.py | 30 +- .../__pycache__/code_generator.cpython-39.pyc | Bin 3039 -> 3254 bytes app/tools/code_generator.py | 48 ++- 10 files changed, 224 insertions(+), 162 deletions(-) create mode 100644 app/code_page/__pycache__/device_interface.cpython-39.pyc diff --git a/app/__pycache__/code_generate_interface.cpython-39.pyc b/app/__pycache__/code_generate_interface.cpython-39.pyc index b4cffe430e5a127b1c4653ef3c1d1d7afbf755d6..4b649dfd0efeddf3e6caf554373c0e2a0ce16db1 100644 GIT binary patch literal 10981 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 delta 2683 zcma)8U2Ggz6~1@=XS};!J5Id*33gJ~?gTk;NCPFLQBgxtNpT^eSlOnXjQ38Rjb?vx zXO<>rrc3L93MfC$ty&2yV%<`S@`lnXl%Rryc!3ulP$fn}iqyDG9x8a?4GD41-Nex4 z0d{oH-h2M%&Uene8&BPOxZvmW4uRhXXRe&OHM3e6r$1f&^zuG494-$t!pyK#F3JCq z@`(H&EsuVgFpJse39|#bqL#;)d5pM@&}gR2S5^mx#1GX!(;*RPM@LKGIy0I+59;w- zG_yUg68cf(d2fjU^$~+_19{=vP3@3E$Has=J2U|dF3BX$MuC*Boiz6=Q&YIMk=zd? zQyNjGHU0QhW-a0Bvg#&c<2--b?WFE;UL-Vf#FG2oMAj^-5i{>_XmCw>+;e+HLDB+nx0N8*W71N-+a!qnBd+?Wco8ImnP z$_l(#PeNY={xW3$V%vh50pn2^5$3o=QW`_Hr)fu7CoA+Yd1f?KL(hgQ^#RyhT>3y{O_*Qf*j#M0<~aeZ{` z5xI5qZa&kwUtbFNZqUs1N~2YeGvoOxTMFRcZ#IKE;{zZo=azzc!2LMz7NaJh?CF`A zb`=GKn}W?K-7S`zYst;c^rpWQL>aB}5N#ar;qf49g)x^-ikr4~+2wxVELQ6QyQkOl zF&-mi2e}H)qH!QZ)#xD2(VSXPbF`oqVXaU_{AK&i{{v<3f`cx~4gt!B#h)g&h@pwE zKK{SKjhyX%*LK#9s>B=O4 zl-OWOq5u$-6#$Wxm?(+LAOVowlQ41&foOH?bpm=$qA-o=%xGUwFD0oO_jPiJ!&FN& zKziT*wZIpK30hEy(MmYB2KH^2O;-MjaQbKAzR z?AYsMWLa;;&&@vM3U&C&2XS8k%6bHdX}Su364sek3Bs_qOtEkL0R}%RI=M0N*PSKt z{*IB8cVsaPbUTD>Rwk4<_RP%m0gtkcdfs!@Fz`ItGXS-`iuDkjg+>=~7enfmFz|V% zHJ~&ywGw?RGkD;$fQvmlceNb}hq4n@Aj{Z;0A&kwJoL`LhDo*2iOL(#XHLzp*1fnI zhe6qv^J*N_GBs)~mMtJ2E_+{Y519WNMzjkEp+mF)sP7JqI^w;ZzinsK%jm3Ya4d{W zi-WUqX7ZpJ`jsHt;z4D54enJSYba){%Wm-(qac2?#qpF{koE7H-P+Y;T1KT2wrX{L z9-NkKOiyN>Io-odo;_IGd}~hyd=gnATf@%qN4S3eY6rVogd z)59kJ9xyX1E>2I0e@u^mArH%qm)ACK{PNEFJ9n?)k3JPxai()2%~%J`G0XdSFISSt(;VaJi7r{Gm5VZftUR6feT08qn$ A8~^|S diff --git a/app/__pycache__/mini_tool_interface.cpython-39.pyc b/app/__pycache__/mini_tool_interface.cpython-39.pyc index 5ee51b8b104c317ff27908588802ba2284f8bbb6..965144bbda4d8a97c0b022ac41d631143d5f5c70 100644 GIT binary patch delta 20 acmdliyIGbyk(ZZ?0SFqMr)}h3!3O{{It2Xy delta 20 acmdliyIGbyk(ZZ?0SKb!OxVc1f)4;RC error_detect - periph_name = class_name[len('bsp_'):] # 移除 .replace("_", " ") + periph_name = class_name[len('bsp_'):] page = get_bsp_page(periph_name, self.project_path) elif class_name.startswith('component_'): - from app.code_page.component_interface import get_component_page - comp_name = class_name[len('component_'):] # 移除 .replace("_", " ") + comp_name = class_name[len('component_'):] + if not self.component_manager: + self.component_manager = ComponentManager() page = get_component_page(comp_name, self.project_path, self.component_manager) - self.component_manager.register_component(page.component_name, page) + if page and hasattr(page, 'component_name'): + self.component_manager.register_component(page.component_name, page) elif class_name.startswith('device_'): - # Device页面 - from app.code_page.device_interface import get_device_page - device_name = class_name[len('device_'):] # 移除 device_ 前缀 + device_name = class_name[len('device_'):] page = get_device_page(device_name, self.project_path) - else: - print(f"未知的页面类型: {class_name}") - return None - - self.page_cache[class_name] = page - self.stack.addWidget(page) + if page: + self.page_cache[class_name] = page + self.stack.addWidget(page) return page except Exception as e: print(f"创建页面 {class_name} 失败: {e}") diff --git a/app/code_page/__pycache__/bsp_interface.cpython-39.pyc b/app/code_page/__pycache__/bsp_interface.cpython-39.pyc index cc9b99601e18bad5d17a8764f2239ba32a6fbf83..0337f36298333e4990f069a099a18be8e6cc42c4 100644 GIT binary patch delta 13904 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 delta 9657 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 TP32iDvz_!CHEqS8z2JWV%sE>Q diff --git a/app/code_page/__pycache__/component_interface.cpython-39.pyc b/app/code_page/__pycache__/component_interface.cpython-39.pyc index 174f3817ffbbd4e8ee2a1b4e9919272ab2a2e2b6..3683b1ba5cebe3a38eed2f0a3ab9cd2d6e250d87 100644 GIT binary patch delta 3047 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 diff --git a/app/code_page/__pycache__/device_interface.cpython-39.pyc b/app/code_page/__pycache__/device_interface.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c86f6b69393a21aa92fb81973178105596967313 GIT binary patch literal 11311 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 XieIZhA3iXMCDyw)4}BNr`*r^hEx=$N literal 0 HcmV?d00001 diff --git a/app/code_page/device_interface.py b/app/code_page/device_interface.py index 358352c..f1fe167 100644 --- a/app/code_page/device_interface.py +++ b/app/code_page/device_interface.py @@ -6,6 +6,7 @@ import os import shutil import yaml import re +import sys def load_device_config(config_path): """加载设备配置""" @@ -274,16 +275,25 @@ class DeviceSimple(QWidget): def _get_device_template_dir(self): """获取设备模板目录""" - current_dir = os.path.dirname(os.path.abspath(__file__)) - # 向上找到 MRobot 根目录 - while os.path.basename(current_dir) != 'MRobot' and current_dir != '/': - current_dir = os.path.dirname(current_dir) - - if os.path.basename(current_dir) == 'MRobot': - return os.path.join(current_dir, "assets/User_code/device") - else: - # 如果找不到,使用相对路径作为备选 - return os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "assets/User_code/device") + try: + if getattr(sys, 'frozen', False): + # 打包环境 + if hasattr(sys, '_MEIPASS'): + return os.path.join(sys._MEIPASS, "assets", "User_code", "device") + else: + return os.path.join(os.path.dirname(sys.executable), "assets", "User_code", "device") + else: + # 开发环境 + current_dir = os.path.dirname(os.path.abspath(__file__)) + while current_dir != os.path.dirname(current_dir): + if os.path.basename(current_dir) == 'MRobot': + break + current_dir = os.path.dirname(current_dir) + return os.path.join(current_dir, "assets", "User_code", "device") + except Exception as e: + print(f"获取设备模板目录失败: {e}") + # 备用方案 + return os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "assets", "User_code", "device") def _save_config(self): """保存配置""" diff --git a/app/tools/__pycache__/code_generator.cpython-39.pyc b/app/tools/__pycache__/code_generator.cpython-39.pyc index 444942942bb8e667e0aea27a7aa93c9c7c17f01c..5082d51d755f7ada51fa07e30ee88dbd531cdfec 100644 GIT binary patch delta 607 zcmZWj&ubGw6rMNxE4%rDO0X(bgJNwg+Jkrrh>EBPsffXYxuhFsHH|fiGn0d|F<@Fy zsnxLlqP1c?NDii@M65#8zr(!<;wHWI?#bEhLBSc`_vXFtoA13JLmziW&1lp>;{1H_ zwD7(e-3=F-W8-@WA~3CGwIHJ`I){iv>0Ysi0B>Cw3)D-M8Zg3E8lSmT&`Lb6nUKmTW;V z`d`L|3`!c+!(z+z`8DtH^M1S4U-~v!T=u>^TVGr8zRqm)=DgXSxBR*P!13m02lFf5 z+lH%NqvbnR>1X(^Cb63lxZn;vPRa|xAQaNAdzhS%@7xw=frxMkKKezMF zYd+lQE&Qwa_34q`CHvx$fhAhSfOkk3^ zgk>S)LdIH%7;6o~LdF!vY~~`X8io`m5Difa60c<_6an*Ks+fu*zQ{**78j?M6zhi;rxwL0=clCVClwd?X|fk701YTo0uqzoaw&1#V#&(S z%+q9?Y{IQ4Y6lc8<^d86EFw%2jC@Q2jC{