Files
xiaomubiao-master/QB303_BATTLE_UNIT_CODE.md
2026-05-22 16:13:20 +08:00

3.9 KiB
Raw Permalink Blame History

QB303设备按battle_unit_code统一标识

🎯 功能概述

现在QB303设备数据将根据battle_unit_code字段作为设备的唯一标识符,而不是使用sn字段。这意味着:

  • 相同battle_unit_code的设备会被识别为同一个设备并更新数据
  • 不同battle_unit_code的设备会在列表中显示为不同的装备
  • 设备信息会保留原始的snsid字段供参考

📋 数据结构变化

设备标识逻辑

// 优先使用 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
  • 位置信息: 经纬度、高度
  • 运动数据: 速度、姿态角等

🚀 开始测试

  1. 清理现有数据(可选):
localStorage.removeItem("index-otherEquipmentList");
location.reload();
  1. 测试单个设备
testQB303Data()
  1. 测试多个设备
testMultipleQB303Data()
  1. 检查结果
    • 观察控制台日志
    • 查看其他装备选项卡数量变化
    • 确认设备列表中显示正确的battle_unit_code

现在您的QB303设备将按照battle_unit_code进行正确的分组和标识!