上一版把入口塞进 launch/、代码摊在根目录, 正好反了: 双击入口该第一眼看到, 实现细节该收起来。现在: 根目录 5 个 .bat/.vbs 入口 + README + requirements src/ ecat_server / ecat_tool / ecat_flash_eeprom / test_motor_backend src/web 前端资源 src/diag 独立诊断脚本 启动器改为 cd 进 %~dp0src 再跑(vbs 用 CurrentDirectory = base & "\src"), 工作目录落在 src 才能让 tool→flash_eeprom、test→server 的 import 解析到。 ecat_server.py 的 BASE_DIR 取自 __file__, 与 src/web 仍是同层父子关系, _STATIC_MAP 和窗口模式的子进程 spawn 都无需改动。 .gitignore 补 sii.json / *.sii / eeprom_*.bin —— eeprom read --out 的导出 产物, 属运行结果不该入库。 验证: 7 个 py 全编译通过; test_motor_backend 8 项全通过; ecat.bat 与 run_scan.bat 实跑列出适配器; 服务起后 4 条静态路由 200 且 MIME 正确; Edge headless 渲染主页与 motor 页, CSS 294 规则、9 节点样式生效, 零加载 失败零 JS 异常; bat 的 %~dp0 与 vbs 的 GetParentFolderName 实测均落在 项目根, src/ 下五个目标文件全部命中。
10 lines
568 B
Plaintext
10 lines
568 B
Plaintext
' DCU EtherCAT web console - hidden launcher (no console window).
|
|
' Double-click me. Console-mode debug launcher (visible logs): ecat_web.bat
|
|
' 入口在项目根, 代码在 src\; 工作目录设为 src 以便 py 之间 import 正常解析。
|
|
Set sh = CreateObject("WScript.Shell")
|
|
Set fso = CreateObject("Scripting.FileSystemObject")
|
|
base = fso.GetParentFolderName(WScript.ScriptFullName)
|
|
sh.CurrentDirectory = base & "\src"
|
|
sh.Environment("PROCESS")("PYTHONUTF8") = "1"
|
|
sh.Run """" & base & "\venv\Scripts\python.exe"" """ & base & "\src\ecat_server.py""", 0, False
|