diff --git a/README.md b/README.md index d9ac7e5..23365d0 100644 --- a/README.md +++ b/README.md @@ -58,8 +58,8 @@ DLD960 是一款基于环形线圈检测原理的四通道车辆检测器,支 |------|------|--------|------| | [DLD960Loop_串口通信协议.md](docs/DLD960Loop_串口通信协议.md) | V1.05 | Loop MCU ↔ DBN MCU | 0x7F 帧、0xC0 传感主动上报、variation 3B 有符号 | | [DLD960_串口通信协议.md](docs/DLD960_串口通信协议.md) | V1.01 | 整机 TTL 串口 | 设备管理、参数配置、数据上报 | -| [DLD960_TCP_JSON协议.md](docs/DLD960_TCP_JSON协议.md) | V1.02 | 以太网 TCP :5960 | 鉴权 + 命令 + event_report 客户端必答 + 脱机日志 | -| [DLD960_IoT_MQTT协议.md](docs/DLD960_IoT_MQTT协议.md) | V1.06 | 云平台 MQTT | 双主题 `{sn}/srv`+`{sn}/dev`、initialize、event_report 平台必答、设备时钟同步、脱机日志 | +| [DLD960_TCP_JSON协议.md](docs/DLD960_TCP_JSON协议.md) | V1.03 | 以太网 TCP :5960 | 鉴权 + 命令 + event_report 客户端必答 + 脱机日志(事件/快照流) | +| [DLD960_IoT_MQTT协议.md](docs/DLD960_IoT_MQTT协议.md) | V1.07 | 云平台 MQTT | 双主题 `{sn}/srv`+`{sn}/dev`、initialize、event_report 平台必答、设备时钟同步、脱机日志(事件/快照流) | | [DLD960_BLE协议.md](docs/DLD960_BLE协议.md) | V1.02 | 蓝牙 BLE | 帧格式 + 分包 + 脱机日志(OFFLOG_STAT/QUERY/CLEAR)+ 传感快照(SNAP_STAT/QUERY/CLEAR,0x28/0x29/0x2A),与 MQTT/TCP 同语义 | | [DLD960硬件资源.md](docs/DLD960硬件资源.md) | — | 硬件 | 双 MCU IO 分配、继电器、指示灯、拨码 | diff --git a/docs/DLD960_IoT_MQTT协议.md b/docs/DLD960_IoT_MQTT协议.md index e72f8a5..fe9057d 100644 --- a/docs/DLD960_IoT_MQTT协议.md +++ b/docs/DLD960_IoT_MQTT协议.md @@ -137,9 +137,9 @@ dld960/{dev_serial}/{direction} | `loop_param_set` | 设置车检器多路参数 | srv→dev | 0x63 | | `loop_param_query` | 读取车检器多路参数 | srv→dev | 0x64 | | `report_config` | 设置主动上报 | srv→dev | 0xC5 | -| `log_stat` | 查询脱机事件日志统计 | srv→dev | — | -| `log_query` | 分页拉取脱机事件日志 | srv→dev | — | -| `log_clear` | 清除脱机事件日志(审计留痕) | srv→dev | — | +| `log_stat` | 查询脱机日志统计(事件/快照流) | srv→dev | — | +| `log_query` | 分页拉取脱机日志(事件/快照流) | srv→dev | — | +| `log_clear` | 清除脱机日志(事件/快照流,审计留痕) | srv→dev | — | | `initialize` | 设备上电初始化登陆 | dev→srv | — | | `loop_data` | 线圈传感数据上报 | dev→srv | 0xC0 | | `event_report` | 事件上报(**平台须应答**,见 §5.3) | dev→srv | — | @@ -648,10 +648,11 @@ dld960/{dev_serial}/{direction} --- -## 4.16 查询脱机事件日志统计 `log_stat` +## 4.16 查询脱机日志统计 `log_stat` > Topic: `dld960/{sn}/srv` -> 设备本地 W25Qxx 环形事件日志(事件区动态:W25Q32=512KB/16256 条,掉电不丢)。用于日志拉取前的分页定位。 +> 设备本地 W25Qxx 环形日志(事件区/快照区容量随存储芯片动态,掉电不丢)。用于日志拉取前的分页定位。 +> 通过 `data.stream` 区分日志流:`event`(事件日志,缺省)/ `snapshot`(传感快照)。 **请求:** @@ -660,11 +661,17 @@ dld960/{dev_serial}/{direction} "msg_id": 16, "cmd": "log_stat", "ts": 1719000000, - "data": {} + "data": { + "stream": "event" + } } ``` -**响应 data:** +| data 字段 | 类型 | 说明 | +|-----------|------|------| +| `stream` | string | 日志流:`event`(缺省,可省略)或 `snapshot` | + +**响应 data(stream=event):** ```json { @@ -678,22 +685,37 @@ dld960/{dev_serial}/{direction} } ``` +**响应 data(stream=snapshot):** + +```json +{ + "stream": "snapshot", + "enabled": true, + "boot_seq": 2, + "count": 1234, + "capacity": 48064, + "seq_first": 100, + "seq_last": 1333 +} +``` + | data 字段 | 类型 | 说明 | |-----------|------|------| -| `stream` | string | 日志流,当前仅 `event`(快照流预留) | +| `stream` | string | 日志流:`event` / `snapshot` | | `enabled` | bool | 日志功能是否启用(Flash 初始化成功) | | `boot_seq` | uint16 | 当前启动序号(每次上电 +1,区分复位段) | -| `count` | uint16 | 有效记录条数(0~capacity,环形覆盖后 < capacity) | -| `capacity` | uint16 | 容量上限(**随存储芯片动态**:W25Q32=16256 / W25Q64=32640 / W25Q128=65408 / W25Q256=130944) | -| `seq_first` | uint32 | 逻辑首条记录全局序号(`seq_last - count + 1`) | +| `count` | uint32 | 有效记录条数(0~capacity,环形覆盖后 < capacity) | +| `capacity` | uint32 | 容量上限(**随存储芯片与流动态**):事件流 W25Q32=16256 / Q64=32640 / Q128=65408 / Q256=130944;快照流 W25Q32=48064 / Q64=105408 / Q128=220096 / Q256=449472 | +| `seq_first` | uint32 | 逻辑首条记录全局序号(`seq_last - count + 1`,count=0 时为 0) | | `seq_last` | uint32 | 最新一条记录全局序号(跨 boot 单调递增) | --- -## 4.17 分页拉取脱机事件日志 `log_query` +## 4.17 分页拉取脱机日志 `log_query` > Topic: `dld960/{sn}/srv` -> **分页按全局序号,不按时间**(未同步段时间不可靠)。`count` 上限 **4**(受 MQTT 发布 ≤500B 限制,MSS=576 教训)。 +> **分页按全局序号,不按时间**(未同步段时间不可靠)。`count` 上限按流区分:事件流 **4**(受 MQTT 发布 ≤500B 限制,MSS=576 教训)/ 快照流 **2**(64B×2 记录)。 +> 通过 `data.stream` 区分日志流:`event`(缺省)/ `snapshot`。 **请求:** @@ -703,6 +725,7 @@ dld960/{dev_serial}/{direction} "cmd": "log_query", "ts": 1719000000, "data": { + "stream": "event", "start_seq": 1330, "count": 4 } @@ -711,10 +734,11 @@ dld960/{dev_serial}/{direction} | data 字段 | 类型 | 说明 | |-----------|------|------| +| `stream` | string | 日志流:`event`(缺省,可省略)或 `snapshot` | | `start_seq` | uint32 | 起始全局序号(含);越界(< `seq_first` 或 > `seq_last`)返回空 `records` | -| `count` | uint8 | 拉取条数,**上限 4**,超限按 4 处理 | +| `count` | uint8 | 拉取条数;事件流上限 **4**、快照流上限 **2**,超限按各自上限处理;0 按上限处理 | -**响应 data:** +**响应 data(stream=event):** ```json { @@ -756,9 +780,70 @@ dld960/{dev_serial}/{direction} | `time_anchor` | 时钟同步锚点 | null(`unix_ts` 即平台下发值,严格一致) | | `log_clear` | 日志清除(审计) | null | +**响应 data(stream=snapshot):** + +```json +{ + "start_seq": 12345, + "records": [ + { + "seq": 12345, + "boot_seq": 2, + "ts_ms": 456789, + "coil_count": 4, + "channels": [ + { + "ch": 1, + "freq_level": "high", + "direction": 0, + "freq_type": 1, + "sensitivity": 2, + "condition": 0, + "loop_ok": true, + "has_car": false, + "misc_type": "time", + "freq": 69418, + "variation": 7, + "misc": 0 + } + ] + } + ] +} +``` + +快照记录为 64B 定长原始结构 `SnapRec`(与 0xC0 线上线圈单元逐字节一致,见《DLD960Loop 串口通信协议》§3.07),JSON 化后字段: + +| 记录字段 | 类型 | 说明 | +|----------|------|------| +| `seq` | uint32 | 全局序号(跨 boot 递增) | +| `boot_seq` | uint16 | 所属启动段 | +| `ts_ms` | uint32 | boot 内相对时间(ms,采集时刻) | +| `coil_count` | uint8 | 本记录线圈数(SnapRec.len/12,1~4) | +| `channels` | array | 线圈传感单元(每路 12B,与 0xC0 线上格式一致) | + +`channels[]` 单元字段(与 0xC0 传感单元一致): + +| 字段 | 类型 | 说明 | +|------|------|------| +| `ch` | uint8 | 通道号 1~4 | +| `freq_level` | string | 频率档位:`"high"`(33nF) / `"mid_high"`(43nF) / `"mid_low"`(66nF) / `"low"`(76nF) | +| `direction` | uint8 | 0=触发模式 1=方向判别 | +| `freq_type` | uint8 | 0=初始频率 1=当前实时频率 | +| `sensitivity` | uint8 | 灵敏度等级(cfg 低四位) | +| `condition` | uint8 | 环境评估值(cond 高四位,值越大干扰越大) | +| `loop_ok` | bool | 线圈正常(SnapRec loop_state bit:0=正常→true,1=断开→false) | +| `has_car` | bool | 有车(SnapRec car_state bit:1=有车) | +| `misc_type` | string | `"time"` / `"cut_count"` / `"flow_count"` / `"relay_count"`(00 时间量 / 01 线圈断开次数 / 10 车流量 / 11 继电器输出次数) | +| `freq` | uint32 | 线圈频率(Hz,3B LE 无符号) | +| `variation` | int32 | 变化量(3B LE 有符号补码,`Origin − CAPVD`;正=车/裕量,负=反向漂移) | +| `misc` | uint32 | 杂项值(misc_type=time 时 = 通过时间/车间距,**50ms 单位**) | + +> 绝对时间回算同事件流:用事件流 `time_anchor`(boot_seq ↔ unix_ts 映射)+ 本记录 `boot_seq`/`ts_ms`;未同步段仅相对时间。 + --- -## 4.18 清除脱机事件日志 `log_clear` +## 4.18 清除脱机日志 `log_clear` > Topic: `dld960/{sn}/srv` > ⚠ **高风险操作**:清除动作本身写入事件流(`log_clear` 审计——谁在何时清了日志,留痕不可清除)。平台侧应做权限控制。 @@ -778,9 +863,12 @@ dld960/{dev_serial}/{direction} | data 字段 | 类型 | 说明 | |-----------|------|------| -| `stream` | string | 日志流,当前仅 `event`;缺省等同 `event` | +| `stream` | string | 日志流:`event`(缺省,可省略)或 `snapshot` | -**响应:** 标准成功/失败。成功后 `log_stat` 的 `count` 归 1(仅剩审计记录),`seq_last` 继续递增(序号不复位)。 +**响应:** 标准成功/失败。 + +- `stream=event`:成功后 `log_stat` 的 `count` 归 1(仅剩审计记录),`seq_last` 继续递增(序号不复位)。**阻塞 ~2.8s**(63 个数据扇区 SPI 擦除),请勿高频调用。 +- `stream=snapshot`:成功后 `log_stat` 的 `count` 归 0,`seq_last` 继续递增;清除动作写入事件流审计(`log_clear`,payload 标记快照流)。**阻塞 ~45ms**(逻辑清除 + 当前写扇区擦除,其余扇区由环形写覆盖时自动擦)。 --- @@ -1039,4 +1127,5 @@ dld960/{dev_serial}/{direction} | V1.04 | 2026-07-15 | `event_report` 增加**平台必答**机制:应答格式(回显 `msg_id`)、设备 5s 超时重发(同 `msg_id`/`ts`,最多 3 次)、待发队列合并上报、平台去重与先落库后应答要求 | wangfq | | V1.05 | 2026-07-15 | 增加**设备时钟同步**(§2.3,方案B):设备无 RTC,`initialize` 上线后平台经 `report_config` 命令下发 Unix `ts`,设备据此校准,之后上行 `ts` 为真实 Unix 时间;校准前为上电秒数 | wangfq | | V1.06 | 2026-08-04 | 增加**脱机事件日志**命令:`log_stat`(统计/分页定位)、`log_query`(按全局序号分页,count≤4)、`log_clear`(清除+审计留痕);§2.3 补充日志双时间戳语义(`ts_ms` 相对 + `unix_ts` 已同步,0=未同步,锚点回算规则) | wangfq | +| V1.07 | 2026-08-18 | `log_stat` / `log_query` / `log_clear` 增加**快照流**支持(`stream=snapshot`,与 BLE 0x28/0x29/0x2A 同语义):快照统计 capacity 随芯片动态(48064~449472)、快照分页 count≤2(SnapRec 64B 原始结构 JSON 化)、快照清除审计留痕;`capacity`/`count` 类型修正为 uint32(W25Q256 事件流 130944 超 16bit) | wangfq | diff --git a/docs/DLD960_TCP_JSON协议.md b/docs/DLD960_TCP_JSON协议.md index 31d9083..bb46606 100644 --- a/docs/DLD960_TCP_JSON协议.md +++ b/docs/DLD960_TCP_JSON协议.md @@ -119,9 +119,9 @@ Client Device (DLD960) | `loop_param_set` | 设置车检器多路参数 | 是 | 0x63 | | `loop_param_query` | 读取车检器多路参数 | 是 | 0x64 | | `report_config` | 设置主动上报 | 是 | 0xC5 | -| `log_stat` | 查询脱机事件日志统计 | 是 | — | -| `log_query` | 分页拉取脱机事件日志 | 是 | — | -| `log_clear` | 清除脱机事件日志(审计留痕) | 是 | — | +| `log_stat` | 查询脱机日志统计(事件/快照流) | 是 | — | +| `log_query` | 分页拉取脱机日志(事件/快照流) | 是 | — | +| `log_clear` | 清除脱机日志(事件/快照流,审计留痕) | 是 | — | | 主动推送 | | | | | `loop_data` | 线圈传感数据(设备→客户端) | — | 0xC0 | | `event_report` | 事件上报(设备→客户端,**客户端须应答**,见 §5.2) | — | — | @@ -345,50 +345,63 @@ Client Device (DLD960) --- -## 4.16 查询脱机事件日志统计 `log_stat` +## 4.16 查询脱机日志统计 `log_stat` -> 设备本地 W25Qxx 环形事件日志(事件区动态:W25Q32=512KB/16256 条,掉电不丢)。用于日志拉取前的分页定位。 +> 设备本地 W25Qxx 环形日志(事件区/快照区容量随存储芯片动态,掉电不丢)。用于日志拉取前的分页定位。 +> 通过 `data.stream` 区分日志流:`event`(事件日志,缺省)/ `snapshot`(传感快照)。 **请求:** ```json -{"msg_id":16,"cmd":"log_stat","ts":1719000000,"data":{}} +{"msg_id":16,"cmd":"log_stat","ts":1719000000,"data":{"stream":"event"}} ``` -**响应 data:** +| data 字段 | 类型 | 说明 | +|-----------|------|------| +| `stream` | string | 日志流:`event`(缺省,可省略)或 `snapshot` | + +**响应 data(stream=event):** ```json {"stream":"event","enabled":true,"boot_seq":2,"count":1234,"capacity":16256,"seq_first":100,"seq_last":1333} ``` -| data 字段 | 类型 | 说明 | -|-----------|------|------| -| `stream` | string | 日志流,当前仅 `event`(快照流预留) | -| `enabled` | bool | 日志功能是否启用(Flash 初始化成功) | -| `boot_seq` | uint16 | 当前启动序号(每次上电 +1,区分复位段) | -| `count` | uint16 | 有效记录条数(0~capacity) | -| `capacity` | uint16 | 容量上限(**随存储芯片动态**:W25Q32=16256 / W25Q64=32640 / W25Q128=65408 / W25Q256=130944) | -| `seq_first` | uint32 | 逻辑首条记录全局序号(`seq_last - count + 1`) | -| `seq_last` | uint32 | 最新一条记录全局序号(跨 boot 单调递增) | - ---- - -## 4.17 分页拉取脱机事件日志 `log_query` - -> **分页按全局序号,不按时间**(未同步段时间不可靠)。`count` 上限 **4**(受响应帧 ≤800B 限制)。 - -**请求:** +**响应 data(stream=snapshot):** ```json -{"msg_id":17,"cmd":"log_query","ts":1719000000,"data":{"start_seq":1330,"count":4}} +{"stream":"snapshot","enabled":true,"boot_seq":2,"count":1234,"capacity":48064,"seq_first":100,"seq_last":1333} ``` | data 字段 | 类型 | 说明 | |-----------|------|------| -| `start_seq` | uint32 | 起始全局序号(含);越界(< `seq_first` 或 > `seq_last`)返回空 `records` | -| `count` | uint8 | 拉取条数,**上限 4**,超限按 4 处理 | +| `stream` | string | 日志流:`event` / `snapshot` | +| `enabled` | bool | 日志功能是否启用(Flash 初始化成功) | +| `boot_seq` | uint16 | 当前启动序号(每次上电 +1,区分复位段) | +| `count` | uint32 | 有效记录条数(0~capacity,环形覆盖后 < capacity) | +| `capacity` | uint32 | 容量上限(**随存储芯片与流动态**):事件流 W25Q32=16256 / Q64=32640 / Q128=65408 / Q256=130944;快照流 W25Q32=48064 / Q64=105408 / Q128=220096 / Q256=449472 | +| `seq_first` | uint32 | 逻辑首条记录全局序号(`seq_last - count + 1`,count=0 时为 0) | +| `seq_last` | uint32 | 最新一条记录全局序号(跨 boot 单调递增) | -**响应 data:** +--- + +## 4.17 分页拉取脱机日志 `log_query` + +> **分页按全局序号,不按时间**(未同步段时间不可靠)。`count` 上限按流区分:事件流 **4**(受响应帧 ≤800B 限制)/ 快照流 **2**(64B×2 记录)。 +> 通过 `data.stream` 区分日志流:`event`(缺省)/ `snapshot`。 + +**请求:** + +```json +{"msg_id":17,"cmd":"log_query","ts":1719000000,"data":{"stream":"event","start_seq":1330,"count":4}} +``` + +| data 字段 | 类型 | 说明 | +|-----------|------|------| +| `stream` | string | 日志流:`event`(缺省,可省略)或 `snapshot` | +| `start_seq` | uint32 | 起始全局序号(含);越界(< `seq_first` 或 > `seq_last`)返回空 `records` | +| `count` | uint8 | 拉取条数;事件流上限 **4**、快照流上限 **2**,超限按各自上限处理;0 按上限处理 | + +**响应 data(stream=event):** ```json {"start_seq":1330,"records":[{"seq":1330,"boot_seq":2,"ts_ms":456789,"unix_ts":1784768575,"type":"iot_ready","data":null}]} @@ -418,9 +431,44 @@ Client Device (DLD960) | `time_anchor` | 时钟同步锚点 | null(`unix_ts` 即平台下发值,严格一致) | | `log_clear` | 日志清除(审计) | null | +**响应 data(stream=snapshot):** + +```json +{"start_seq":12345,"records":[{"seq":12345,"boot_seq":2,"ts_ms":456789,"coil_count":4,"channels":[{"ch":1,"freq_level":"high","direction":0,"freq_type":1,"sensitivity":2,"condition":0,"loop_ok":true,"has_car":false,"misc_type":"time","freq":69418,"variation":7,"misc":0}]}]} +``` + +快照记录为 64B 定长原始结构 `SnapRec`(与 0xC0 线上线圈单元逐字节一致,见《DLD960Loop 串口通信协议》§3.07),JSON 化后字段: + +| 记录字段 | 类型 | 说明 | +|----------|------|------| +| `seq` | uint32 | 全局序号(跨 boot 递增) | +| `boot_seq` | uint16 | 所属启动段 | +| `ts_ms` | uint32 | boot 内相对时间(ms,采集时刻) | +| `coil_count` | uint8 | 本记录线圈数(SnapRec.len/12,1~4) | +| `channels` | array | 线圈传感单元(每路 12B,与 0xC0 线上格式一致) | + +`channels[]` 单元字段(与 0xC0 传感单元一致): + +| 字段 | 类型 | 说明 | +|------|------|------| +| `ch` | uint8 | 通道号 1~4 | +| `freq_level` | string | 频率档位:`"high"`(33nF) / `"mid_high"`(43nF) / `"mid_low"`(66nF) / `"low"`(76nF) | +| `direction` | uint8 | 0=触发模式 1=方向判别 | +| `freq_type` | uint8 | 0=初始频率 1=当前实时频率 | +| `sensitivity` | uint8 | 灵敏度等级(cfg 低四位) | +| `condition` | uint8 | 环境评估值(cond 高四位,值越大干扰越大) | +| `loop_ok` | bool | 线圈正常(SnapRec loop_state bit:0=正常→true,1=断开→false) | +| `has_car` | bool | 有车(SnapRec car_state bit:1=有车) | +| `misc_type` | string | `"time"` / `"cut_count"` / `"flow_count"` / `"relay_count"`(00 时间量 / 01 线圈断开次数 / 10 车流量 / 11 继电器输出次数) | +| `freq` | uint32 | 线圈频率(Hz,3B LE 无符号) | +| `variation` | int32 | 变化量(3B LE 有符号补码,`Origin − CAPVD`;正=车/裕量,负=反向漂移) | +| `misc` | uint32 | 杂项值(misc_type=time 时 = 通过时间/车间距,**50ms 单位**) | + +> 绝对时间回算同事件流:用事件流 `time_anchor`(boot_seq ↔ unix_ts 映射)+ 本记录 `boot_seq`/`ts_ms`;未同步段仅相对时间。 + --- -## 4.18 清除脱机事件日志 `log_clear` +## 4.18 清除脱机日志 `log_clear` > ⚠ **高风险操作**:清除动作本身写入事件流(`log_clear` 审计——谁在何时清了日志,留痕不可清除)。客户端应做权限控制。 @@ -432,9 +480,12 @@ Client Device (DLD960) | data 字段 | 类型 | 说明 | |-----------|------|------| -| `stream` | string | 日志流,当前仅 `event`;缺省等同 `event` | +| `stream` | string | 日志流:`event`(缺省,可省略)或 `snapshot` | -**响应:** 标准成功/失败。成功后 `log_stat` 的 `count` 归 1(仅剩审计记录),`seq_last` 继续递增(序号不复位)。 +**响应:** 标准成功/失败。 + +- `stream=event`:成功后 `log_stat` 的 `count` 归 1(仅剩审计记录),`seq_last` 继续递增(序号不复位)。**阻塞 ~2.8s**(63 个数据扇区 SPI 擦除),请勿高频调用。 +- `stream=snapshot`:成功后 `log_stat` 的 `count` 归 0,`seq_last` 继续递增;清除动作写入事件流审计(`log_clear`,payload 标记快照流)。**阻塞 ~45ms**(逻辑清除 + 当前写扇区擦除,其余扇区由环形写覆盖时自动擦)。 --- @@ -554,3 +605,4 @@ Client Device (DLD960) | V1.00 | 2026-06-22 | 初始版本,基于串口协议 V1.01 | wangfq | | V1.01 | 2026-07-15 | `event_report` 增加**客户端必答**机制:应答格式(回显 `msg_id`)、设备 5s 超时重发(同 `msg_id`/`ts`,最多 3 次)、待发队列合并上报、客户端去重与先落库后应答要求(与 MQTT 协议 V1.04 对称) | wangfq | | V1.02 | 2026-08-04 | 增加**脱机事件日志**命令:`log_stat`(统计/分页定位)、`log_query`(按全局序号分页,count≤4)、`log_clear`(清除+审计留痕);事件类型表与 MQTT 协议 V1.06 对齐 | wangfq | +| V1.03 | 2026-08-18 | `log_stat` / `log_query` / `log_clear` 增加**快照流**支持(`stream=snapshot`,与 BLE 0x28/0x29/0x2A 同语义):快照统计 capacity 随芯片动态(48064~449472)、快照分页 count≤2(SnapRec 64B 原始结构 JSON 化)、快照清除审计留痕;`capacity`/`count` 类型修正为 uint32(W25Q256 事件流 130944 超 16bit) | wangfq | diff --git a/docs/DLD960_产品手册.md b/docs/DLD960_产品手册.md index 2b89a95..8beebd7 100644 --- a/docs/DLD960_产品手册.md +++ b/docs/DLD960_产品手册.md @@ -162,8 +162,8 @@ DLD960 是一款四通道环形线圈车辆检测器,一台设备即可覆盖 |------|------| | 《DLD960 技术规格书》 | 完整技术参数 | | 《DLD960 串口通信协议》V1.01 | 串口 对接开发 | -| 《DLD960 TCP JSON 协议》V1.02 | 局域网对接开发 | -| 《DLD960 IoT MQTT 协议》V1.06 | 云平台对接开发 | +| 《DLD960 TCP JSON 协议》V1.03 | 局域网对接开发 | +| 《DLD960 IoT MQTT 协议》V1.07 | 云平台对接开发 | | 《DLD960 BLE 协议》V1.02 | 蓝牙小程序/APP 对接开发(脱机日志与传感快照读写) | | 《环路车辆检测器验收标准》 | 采购/部署验收 | diff --git a/docs/DLD960_技术规格书.md b/docs/DLD960_技术规格书.md index 125984b..5958bb6 100644 --- a/docs/DLD960_技术规格书.md +++ b/docs/DLD960_技术规格书.md @@ -105,8 +105,8 @@ DLD960 是一款基于环形线圈(LC 振荡)检测原理的四通道车辆 | 协议 | 版本 | 通道 | 要点 | |------|------|------|------| | DLD960 串口通信协议 | V1.01 | TTL | 设备管理、参数配置、数据上报 | -| DLD960 TCP JSON 协议 | V1.02 | ETH :5960 | 密码鉴权 + 18 条命令;event_report 客户端必答(5s×3 重发);脱机日志 log_stat/log_query/log_clear | -| DLD960 IoT MQTT 协议 | V1.06 | ETH → Broker | 双主题 `dld960/{sn}/srv`+`/dev`;initialize 上线、loop_data 三档调度、event_report 平台必答、设备时钟同步、脱机日志 log_stat/log_query/log_clear | +| DLD960 TCP JSON 协议 | V1.03 | ETH :5960 | 密码鉴权 + 18 条命令;event_report 客户端必答(5s×3 重发);脱机日志 log_stat/log_query/log_clear(事件/快照流,stream 区分) | +| DLD960 IoT MQTT 协议 | V1.07 | ETH → Broker | 双主题 `dld960/{sn}/srv`+`/dev`;initialize 上线、loop_data 三档调度、event_report 平台必答、设备时钟同步、脱机日志 log_stat/log_query/log_clear(事件/快照流,stream 区分) | | DLD960Loop 串口协议 | V1.05 | MCU 间(内部) | 0x7F 帧、0xC0 传感上报(variation 3B 有符号) | | DLD960 BLE 协议 | V1.02 | 蓝牙 BLE | 帧格式 + 分包;脱机日志 OFFLOG_STAT/QUERY/CLEAR + 传感快照 SNAP_STAT/QUERY/CLEAR(0x28/0x29/0x2A),与 MQTT/TCP 同语义 |