#!/usr/bin/env python3 """ 测试debug文件输出格式,验证组内逆序排列 """ import sys import tempfile import os sys.path.insert(0, 'd:\\DESIGN\\Git\\RDSS') from core.data_writer import DataWriterV4 from core.encoder import BitFieldEncoder # 创建编码器 encoder = BitFieldEncoder() # 创建测试事件数据(模拟2个事件,每个事件16个信号) # 事件1: 信号1-16,事件2: 信号17-32 all_events = [] # 事件1: 16个信号(2组) event1_signals = [] for i in range(16): # 创建简单的测试信号,时间戳递增 timestamp = (i + 1) * 10 # 10, 20, 30, ... 160 us energies = [100 + i * 10, 0, 0] # 只有探测器1有信号 encoded = encoder.encode(timestamp, energies, event_end=(i == 15)) event1_signals.append(encoded) all_events.append(event1_signals) # 事件2: 16个信号(2组) event2_signals = [] for i in range(16): timestamp = (i + 1) * 10 # 10, 20, 30, ... 160 us energies = [0, 200 + i * 10, 0] # 只有探测器2有信号 encoded = encoder.encode(timestamp, energies, event_end=(i == 15)) event2_signals.append(encoded) all_events.append(event2_signals) # 创建数据写入器 config = { 'simulation': { 'packing_mode': 'separate', 'energy_conversion': {'K': 1.0, 'B': 0.0}, 'output_file': 'test_output' } } data_writer = DataWriterV4(config) # 创建临时debug文件 with tempfile.NamedTemporaryFile(mode='w', suffix='_debug.txt', delete=False, encoding='utf-8') as f: temp_debug_file = f.name # 写入debug文件 data_writer.write_events_debug_text(all_events, temp_debug_file) # 读取并显示debug文件内容 print("生成的debug文件内容:") print("=" * 80) with open(temp_debug_file, 'r', encoding='utf-8') as f: lines = f.readlines() for line in lines[:30]: # 只显示前30行 print(line.rstrip()) print("=" * 80) # 验证组内逆序排列 print("\n验证组内逆序排列:") print("期望的第1组信号序号: 8, 7, 6, 5, 4, 3, 2, 1") print("期望的第2组信号序号: 16, 15, 14, 13, 12, 11, 10, 9") print() # 解析debug文件中的信号序号 signal_numbers = [] for line in lines: if line.strip() and not line.startswith('#') and not line.startswith('-'): parts = line.split('|') if len(parts) >= 2: try: sig_num = int(parts[1].strip()) signal_numbers.append(sig_num) except: pass # 检查前16个信号(事件1) event1_numbers = signal_numbers[:16] print(f"实际的事件1信号序号: {event1_numbers}") # 验证第1组(应该是8,7,6,5,4,3,2,1) group1 = event1_numbers[:8] expected_group1 = [8, 7, 6, 5, 4, 3, 2, 1] print(f"第1组信号序号: {group1}") print(f"期望的第1组: {expected_group1}") # 验证第2组(应该是16,15,14,13,12,11,10,9) group2 = event1_numbers[8:16] expected_group2 = [16, 15, 14, 13, 12, 11, 10, 9] print(f"第2组信号序号: {group2}") print(f"期望的第2组: {expected_group2}") if group1 == expected_group1 and group2 == expected_group2: print("\n✅ 测试通过!组内逆序排列正确") else: print("\n❌ 测试失败!组内逆序排列不正确") # 清理临时文件 os.unlink(temp_debug_file)