first commit
This commit is contained in:
52
报文模拟解析/test1.py
Normal file
52
报文模拟解析/test1.py
Normal file
@@ -0,0 +1,52 @@
|
||||
import struct
|
||||
|
||||
def create_demod_info_packet():
|
||||
"""创建解调信息报文(类型12)的内容"""
|
||||
# 模拟解调信息数据
|
||||
message_type = 12 # 消息类型 (1字节)
|
||||
satellite_id = 1 # 卫星ID (1字节)
|
||||
demodulator_id = 0 # 解调器编号 (1字节)
|
||||
demod_slot = 1234 # 解调时隙 (2字节)
|
||||
receive_delay = 5678 # 接收延迟 (2字节,单位us)
|
||||
snr = 25.75 # 信噪比 (2字节,dB)
|
||||
|
||||
# 处理信噪比 (高8位整数部分,低8位小数部分)
|
||||
snr_int = int(snr)
|
||||
snr_frac = int((snr - snr_int) * 100) # 转换为0-99的小数部分
|
||||
snr_packed = (snr_int & 0xFF) << 8 | (snr_frac & 0xFF)
|
||||
|
||||
# 打包为二进制 (大端字节序)
|
||||
content = struct.pack(
|
||||
'>BBBHHH', # 格式: B(1),B(1),B(1),H(2),H(2),h(2)
|
||||
message_type,
|
||||
satellite_id,
|
||||
demodulator_id,
|
||||
demod_slot,
|
||||
receive_delay,
|
||||
snr_packed
|
||||
)
|
||||
return content
|
||||
|
||||
def create_tcp_packet(packet_type, content):
|
||||
"""创建符合VDES TCP协议的报文"""
|
||||
# 报文帧头 (4字节)
|
||||
header = b'####'
|
||||
|
||||
# 报文类型 (4字节,大端)
|
||||
type_field = struct.pack('>I', packet_type)
|
||||
|
||||
# 报文长度 (4字节,大端,内容长度)
|
||||
length = len(content)
|
||||
length_field = struct.pack('>I', length)
|
||||
|
||||
# 构建完整报文
|
||||
packet = header + type_field + length_field + content
|
||||
return packet
|
||||
|
||||
|
||||
|
||||
# 使用示例
|
||||
demod_info_content = create_demod_info_packet()
|
||||
demod_info_packet = create_tcp_packet(12, demod_info_content)
|
||||
|
||||
# 打印结果
|
||||
Reference in New Issue
Block a user