Files
VDES_Backend/code/vdes_utils/local_inspection_monitor.py

73 lines
4.4 KiB
Python
Raw Normal View History

2026-07-13 15:37:05 +08:00
import struct
from datetime import datetime
class LocalInspectionMonitor:
def __init__(self):
self.hello = "地检状态监控报文解析工具类"
def get_local_inspection_status_data(self, demod_data):
"""解析地检状态监控数据"""
# 格式字符串:>表示大端序B表示Uint8H表示Uint16I表示Uint32
format_str = '>B B I I B B B I I I B I I B B B B B B B B I B B I B H B B B I B B B B B I B B B I B B B I B B B I B I B I' # 总共82字节
# 解包数据
fields = struct.unpack(format_str, demod_data[:102])
# 创建结果字典
res = {}
res['cpu0_usage'] = fields[0] # CPU0占用率
res['cpu1_usage'] = fields[1] # CPU1占用率
res['program_version'] = fields[2] # 地检/终端程序版本号
res['uptime'] = fields[3] # 开机后运行时间
res['gps_status'] = fields[4] # GPS状态
res['pps_lock_status'] = fields[5] # 内部PPS锁定状态
res['ad9361_status'] = fields[6] # AD9361状态
res['ad9361_calibration_factor'] = fields[7] # AD9361频率校准因子
res['ad9361_tx_lo_freq'] = fields[8] # AD9361发射本振频率
res['ad9361_tx_sample_rate'] = fields[9] # AD9361发射采样率
res['ad9361_tx_attenuation'] = fields[10] # AD9361发射衰减
res['ad9361_rx_lo_freq'] = fields[11] # AD9361接收本振频率
res['ad9361_rx_sample_rate'] = fields[12] # AD9361接收采样率
res['ad9361_rx_gain'] = fields[13] # AD9361接收增益
res['vdes_protocol_enable'] = fields[14] # VDES协议工作使能
res['vdes_filter_enable'] = fields[15] # VDES报文过滤使能
res['rac_limit_enable'] = fields[16] # 随机信道消息接入限制使能
res['vdes_agc_enable'] = fields[17] # VDES接收AGC使能
res['delay_compensation_enable'] = fields[18] # 星地延时补偿使能
res['upper_satellite_id'] = fields[19] # 上半频段卫星ID
res['upper_satellite_cqi'] = fields[20] # 上半频段卫星CQI
res['upper_satellite_amplitude'] = fields[21] # 上半频段卫星信号平均幅度
res['lower_satellite_id'] = fields[22] # 下半频段卫星ID
res['lower_satellite_cqi'] = fields[23] # 下半频段卫星CQI
res['lower_satellite_amplitude'] = fields[24] # 下半频段卫星信号平均幅度
res['current_satellite_id'] = fields[25] # 当前选用的卫星ID
res['current_vdes_slot'] = fields[26] # 当前VDES时隙号
res['current_vdes_subframe'] = fields[27] # 当前VDES子帧编号
res['vdes_tx_linkid'] = fields[28] # VDES发射LinKID
res['vdes_tx_channel'] = fields[29] # VDES发射通道
res['vdes_tx_frequency'] = fields[30] # VDES发射频点
res['vdes_buffer1_status'] = fields[31] # VDES上行数据缓存区1状态
res['vdes_buffer2_status'] = fields[32] # VDES上行数据缓存区2状态
res['demod1_enable'] = fields[33] # VDES解调器1使能
res['demod1_linkid'] = fields[34] # VDES解调器1接收LINKID
res['demod1_channel'] = fields[35] # VDES解调器1接收信道
res['demod1_frequency'] = fields[36] # VDES解调器1接收频点
res['demod2_enable'] = fields[37] # VDES解调器2使能
res['demod2_linkid'] = fields[38] # VDES解调器2接收LINKID
res['demod2_channel'] = fields[39] # VDES解调器2接收信道
res['demod2_frequency'] = fields[40] # VDES解调器2接收频点
res['demod3_enable'] = fields[41] # VDES解调器3使能
res['demod3_linkid'] = fields[42] # VDES解调器3接收LINKID
res['demod3_channel'] = fields[43] # VDES解调器3接收信道
res['demod3_frequency'] = fields[44] # VDES解调器3接收频点
res['demod4_enable'] = fields[45] # VDES解调器4使能
res['demod4_linkid'] = fields[46] # VDES解调器4接收LINKID
res['demod4_channel'] = fields[47] # VDES解调器4接收信道
res['demod4_frequency'] = fields[48] # VDES解调器4接收频点
res['ais_demod1_enable'] = fields[49] # AIS解调器1使能
res['ais_demod1_frequency'] = fields[50] # AIS解调器1频点
res['ais_demod2_enable'] = fields[51] # AIS解调器2使能
res['ais_demod2_frequency'] = fields[52] # AIS解调器2频点
return res