3.1 KiB
WebServer 修改调试计划
日期: 2026-07-14 基于: WEBSERVER_COMPARISON.md
修改优先级
高优先级(必须修复 — M1, M2, M3)
1. SBO 遥控流程 (M1)
目标: yk/ao/param 的 set 操作支持 SELECT→DIRECT 两阶段控制
改动文件: src/system/libweb_server/src/ws_method.cpp
改动点:
ws_sig_set_yk(): 根据ctrl_type判断DIRECT_NORMAL直控或SBO_NORMAL选控ws_sig_set_ao(): 同上ws_sig_set_param(): 同上- SBO 流程: 先
DC_STEP_SELECT→ 再DC_STEP_DIRECT
调试方法: 前端发送 yk/ao/param set 命令,确认 SBO 类型信号走 SELECT→DIRECT 流程
2. dc_save_out_signals_xml (M2)
目标: datacenter out 命令执行后保存 XML
改动文件: src/system/libweb_server/src/ws_method.cpp(cmd 处理部分)
改动点:
- 在
type=cmd处理中,当命令以datacenter开头且子命令为out/all时 - 调用
dc_save_out_signals_xml()保存到config/SYSTEM/datacenter_out.xml
调试方法: 前端执行 datacenter out 命令 → 检查 config/SYSTEM/datacenter_out.xml 是否生成
3. ws_build_dc_data_json (M3)
目标: datacenter 命令执行后返回信号元数据 JSON
改动文件: src/system/libweb_server/src/ws_method.cpp
改动点:
- 新增函数
ws_build_dc_data_json(types)— 调用dc_get_signal_info_by_id遍历信号 - 在
type=cmd处理中,datacenter 命令执行后调用此函数构建 JSON - 通过
ws_send_binary发送 dc_data JSON
调试方法: 前端执行 datacenter all 命令 → 检查返回的 JSON 是否包含 out/in/yk/ao/param 完整数据
中优先级(建议修复 — M4, M5)
4. ws_send_large_text (M4)
目标: 大文本(>35KB)分片发送,防止 WS 帧溢出
改动文件: src/system/libweb_server/src/ws_method.cpp 和/或 web_server.cpp
改动点:
- 新增
ws_send_large_text()— 35KB 分片cmd_rsp_chunk消息 ws_cmd_exec()返回大字符串时使用分片发送代替二进制发送
调试方法: 执行产生大量输出的命令(如 datacenter all),检查前端是否收到分片
5. AO/Param 元数据 (M5)
目标: JSON 中包含 min/max/step/unit 字段
改动文件: src/system/libweb_server/src/ws_method.cpp 的 ws_make_sig_json
改动点:
- AO 信号 JSON 增加
min/max/step/unit字段 - 需要在信号结构中存储
stru_signal_param或从 datacenter 查询
低优先级(可选 — M6)
6. p_ctrl 伴随生命周期 (M6)
改动文件: src/system/libweb_server/src/ws_method.cpp
改动点: 信号结构体增加 p_ctrl*,add 时分配,del 时释放
测试方案
- 启动 RTU:
./RTU验证 webserver 正常启动 - 浏览器连接:
http://localhost:8080→ 终端页面 - 测试命令: 点击命令面板按钮执行各模块命令
- 测试信号CRUD: 通过前端数据页面添加/删除/修改信号
- 测试SBO流程: 通过前端修改 SBO 类型信号值
- 测试大输出: 执行
datacenter all验证分片发送