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

152 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# QB303设备按battle_unit_code统一标识
## 🎯 **功能概述**
现在QB303设备数据将根据`battle_unit_code`字段作为设备的唯一标识符,而不是使用`sn`字段。这意味着:
- ✅ 相同`battle_unit_code`的设备会被识别为同一个设备并更新数据
- ✅ 不同`battle_unit_code`的设备会在列表中显示为不同的装备
- ✅ 设备信息会保留原始的`sn``sid`字段供参考
## 📋 **数据结构变化**
### **设备标识逻辑**
```javascript
// 优先使用 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设备',
// ... 其他字段
}
```
### **示例数据**
```json
{
"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. 单个设备测试**
```javascript
testQB303Data()
```
- 发送一个`battle_unit_code: "dy04"`的测试设备
### **2. 多设备测试**
```javascript
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. **清理现有数据**(可选):
```javascript
localStorage.removeItem("index-otherEquipmentList");
location.reload();
```
2. **测试单个设备**
```javascript
testQB303Data()
```
3. **测试多个设备**
```javascript
testMultipleQB303Data()
```
4. **检查结果**
- 观察控制台日志
- 查看其他装备选项卡数量变化
- 确认设备列表中显示正确的`battle_unit_code`
现在您的QB303设备将按照`battle_unit_code`进行正确的分组和标识!