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) # 打印结果