协议依据:《DLD960_IoT_MQTT协议》V1.13(4G 通道适配方案 C) 新增模块: - frame_parser.lua: 0x7F 帧解析状态机(Lua 版 lup_feed_byte, XOR+SUM 校验) - proto_conv.lua: 0xC0 传感帧 → loop_data + car_state/loop_state 沿检测(4 类线圈事件) - evt_queue.lua: event_report 队列 + ACK 状态机(16深/5s×3/跨重连同 msg_id,对齐 DBN) - clock.lua: report_config 时钟校准(协议 §2.3) - app_iot.lua: initialize(extra_info imei/iccid + link)/ heartbeat / poll 驱动 - tools/sim_frame_test.py: 帧协议参考验证(56B 帧/4 路解析/沿检测/JSON 格式,全过) 改造: - uart_app.lua: 0x7D 帧 → 0x7F 帧驱动;loop_data/event_report 组包 + link 注入 - mqtt_receiver.lua: 下行分发(ACK 路由 + 时钟校准) - mqtt_main.lua: 连接成功 → initialize + 未决事件重发 - config.lua/main.lua: 方案 C 配置与入口 MVP 范围: 上行(initialize/loop_data/event_report/heartbeat)+ report_config; 下行命令转换与 0x7D 配置同步列入 P1。
45 lines
1.6 KiB
Lua
45 lines
1.6 KiB
Lua
--[[
|
||
@module main
|
||
@summary vd960Air — Air8781P(Air780EPM) 4G 模块 LuatOS 应用入口(方案 C MVP)
|
||
@version 0.3
|
||
@date 2026.08.31
|
||
@usage
|
||
vd960DBN 车检器在有线网络失效时的 4G 兜底通道(方案 C: Air780 协议转换):
|
||
|
||
1、UART1 对接 vd960DBN(CH32V208 串口1 PB6/PB7),0x7F 帧字节流透传;
|
||
2、0x7F 帧解析 → 0xC0 传感 → loop_data JSON(标准,注入 link)→ MQTT dld960/{sn}/dev;
|
||
3、car_state/loop_state 沿检测 → event_report(ACK + 5s×3 重发,对齐 DBN 语义);
|
||
4、下行: report_config 时钟校准 + event_report ACK;业务命令转换 P1;
|
||
5、initialize(extra_info imei/iccid + link)/ heartbeat 周期上报;
|
||
6、网络看门狗 + 4G 网卡(官方组件)。
|
||
]]
|
||
PROJECT = "vd960Air"
|
||
VERSION = "001.999.000"
|
||
|
||
-- 在日志中打印项目名和项目版本号
|
||
log.info("main", PROJECT, VERSION)
|
||
|
||
-- ==================== 加载配置 ====================
|
||
require "config"
|
||
|
||
-- ==================== 网络环境检测看门狗 ====================
|
||
require "network_watchdog"
|
||
|
||
-- ==================== 网卡驱动(仅 4G) ====================
|
||
require "netdrv_device"
|
||
|
||
-- ==================== 串口应用(UART1 <-> vd960DBN,0x7F 帧) ====================
|
||
require "uart_app"
|
||
|
||
-- ==================== 设备业务(initialize/heartbeat/poll) ====================
|
||
local app_iot = require "app_iot"
|
||
app_iot.init()
|
||
|
||
-- ==================== MQTT 客户端(单路, 主题 dld960/{sn}/srv + dev) ====================
|
||
require "mqtt_main"
|
||
|
||
-- 用户代码已结束---------------------------------------------
|
||
-- 结尾总是这一句
|
||
sys.run()
|
||
-- sys.run()之后不要加任何语句!!!!!因为添加的任何语句都不会被执行
|