3.9 KiB
3.9 KiB
QB303设备按battle_unit_code统一标识
🎯 功能概述
现在QB303设备数据将根据battle_unit_code字段作为设备的唯一标识符,而不是使用sn字段。这意味着:
- ✅ 相同
battle_unit_code的设备会被识别为同一个设备并更新数据 - ✅ 不同
battle_unit_code的设备会在列表中显示为不同的装备 - ✅ 设备信息会保留原始的
sn和sid字段供参考
📋 数据结构变化
设备标识逻辑
// 优先使用 battle_unit_code 作为设备ID
let battleUnitCode = data.host?.battle_unit_code || data.sn || 'QB303_' + Date.now();
// 设备信息结构
{
equipmentId: battleUnitCode, // 主键:battle_unit_code
battleUnitCode: battleUnitCode, // 作战单元代码
sn: data.sn || '', // 原始序列号
sid: data.host?.sid || '', // 原始设备ID
equipmentType: 'QB303设备',
// ... 其他字段
}
示例数据
{
"version": "1.0",
"timestamp": 1757293532423,
"data": {
"host": {
"battle_unit_code": "dy04", ← 作为设备唯一标识
"sid": "2",
"latitude": 28.20648476190476,
"longitude": 112.8945530952381,
"altitude": 200,
"health_status": 1,
"platform_type": 1
},
"sn": "2"
},
"biz_code": "qb303_device_status"
}
🧪 测试函数
1. 单个设备测试
testQB303Data()
- 发送一个
battle_unit_code: "dy04"的测试设备
2. 多设备测试
testMultipleQB303Data()
- 依次发送3个不同
battle_unit_code的设备:dy04(sn: "2")dy05(sn: "3")dy06(sn: "4")
🔍 测试场景
场景1:新设备添加
发送 battle_unit_code: "dy04" → 添加新设备 [dy04]
发送 battle_unit_code: "dy05" → 添加新设备 [dy05]
结果:列表中有2个不同的设备
场景2:设备数据更新
发送 battle_unit_code: "dy04", altitude: 200 → 添加设备 [dy04]
发送 battle_unit_code: "dy04", altitude: 250 → 更新设备 [dy04]
结果:列表中只有1个设备,高度更新为250
场景3:混合场景
发送 battle_unit_code: "dy04", sn: "2" → 添加设备 [dy04]
发送 battle_unit_code: "dy04", sn: "3" → 更新设备 [dy04] (sn改为"3")
发送 battle_unit_code: "dy05", sn: "2" → 添加新设备 [dy05]
结果:列表中有2个设备 [dy04] 和 [dy05]
📊 预期输出
运行 testQB303Data() 后:
收到QB303设备状态数据: {...}
解析的QB303设备数据: {equipmentId: "dy04", battleUnitCode: "dy04", ...}
使用battle_unit_code作为设备标识: dy04
新的QB303设备 [dy04] 已添加
运行 testMultipleQB303Data() 后:
发送设备 [dy04] 的测试数据: {...}
新的QB303设备 [dy04] 已添加
发送设备 [dy05] 的测试数据: {...}
新的QB303设备 [dy05] 已添加
发送设备 [dy06] 的测试数据: {...}
新的QB303设备 [dy06] 已添加
所有QB303设备数据发送完成
最终设备列表长度: X (原有数量 + 3)
各设备的battle_unit_code: ["dy04", "dy05", "dy06", ...]
🎨 UI显示
在其他装备面板中,每个QB303设备会显示:
- 设备名称:
[dy04] QB303设备 - 作战单元:
dy04 - 原始SN:
2 - 设备状态: 基于
health_status - 位置信息: 经纬度、高度
- 运动数据: 速度、姿态角等
🚀 开始测试
- 清理现有数据(可选):
localStorage.removeItem("index-otherEquipmentList");
location.reload();
- 测试单个设备:
testQB303Data()
- 测试多个设备:
testMultipleQB303Data()
- 检查结果:
- 观察控制台日志
- 查看其他装备选项卡数量变化
- 确认设备列表中显示正确的
battle_unit_code
现在您的QB303设备将按照battle_unit_code进行正确的分组和标识!