In [5]:
import struct
import binascii

f = open('cf-nf_data.txt', 'r')

lines = ''.join(f.readlines())
lines = lines.split('AAFF')

def adc_int(hex_value):
    int_value = int(hex_value, 16)
    if int_value > 0x7FFFFFFF:
        int_value -= 0x100000000
    return str(int_value)

for line in lines:
    if len(line) != 244:
        continue
        
    line = [line[i-2:i] for i in range(len(line), 0, -2)]
    
    paged = line[-64:]
    critical = line[:58]
    
    debug_seq_cnt = ''.join(critical[0:2])
    serial_data = ''.join(critical[2:5])
    backplane_type = critical[5]
    controller_status = ''.join(critical[6:8])
    seu_count = critical[8]
    converter_output = critical[9]
    converter_input = ''.join(critical[10:12])
    dim_log_index = ''.join(critical[12:14])
    adc_log_index = ''.join(critical[14:16])
    version = ''.join(critical[16:18])
    cycle_period = ''.join(critical[18:22])
    dim_a_1_ana_3 = ''.join(critical[22:24])
    dim_a_1_ana_2 = ''.join(critical[24:26])
    dim_a_1_ana_1 = ''.join(critical[26:28])
    dim_a_1_ana_0 = ''.join(critical[28:30])
    dim_a_trig_unl = ''.join(critical[30:32])
    dim_a_trig_lat = ''.join(critical[32:34])
    i_b_10_19 = ''.join(critical[34:38])
    i_b_0_9 = ''.join(critical[38:42])
    i_a_10_19 = ''.join(critical[42:46])
    i_a_0_9 = ''.join(critical[46:50])
    v_meas_10_19 = ''.join(critical[50:54])
    v_meas_0_9 = ''.join(critical[54:58])
    
    print 'V_MEAS_0_9:\t' + adc_int(v_meas_0_9) + ' (int)'
    print 'V_MEAS_10_19:\t' + adc_int(v_meas_10_19) + ' (int)'
    print 'I_A_0_9:\t' + adc_int(i_a_0_9) + ' (int)'
    print 'I_A_10_19:\t' + adc_int(i_a_10_19) + ' (int)'
    print 'I_B_0_9:\t' + adc_int(i_b_0_9) + ' (int)'
    print 'I_B_10_19:\t' + adc_int(i_b_10_19) + ' (int)'
    print 'DIM_A_TRIG_LAT:\t' + bin(int(dim_a_trig_lat, 16))[2:].zfill(16) + ' (bin)'
    print 'DIM_A_TRIG_UNL:\t' + bin(int(dim_a_trig_unl, 16))[2:].zfill(16) + ' (bin)'
    print 'DIM_A_1_ANA_0:\t' + str(int(dim_a_1_ana_0, 16)) + ' (int)'
    print 'DIM_A_1_ANA_1:\t' + str(int(dim_a_1_ana_1, 16)) + ' (int)'
    print 'DIM_A_1_ANA_2:\t' + str(int(dim_a_1_ana_2, 16)) + ' (int)'
    print 'DIM_A_1_ANA_3:\t' + str(int(dim_a_1_ana_3, 16)) + ' (int)'
    print 'CYCLE_PERIOD:\t' + str(int(cycle_period, 16)) + ' (int)'
    print 'VERSION:\t' + version + ' (hex)'
    print 'ADC_LOG_INDEX:\t' + str(int(adc_log_index, 16)) + ' (int)'
    print 'DIM_LOG_INDEX:\t' + str(int(dim_log_index, 16)) + ' (int)'
    print 'CONVERTER_IN:\t' + bin(int(converter_input, 16))[2:].zfill(16) + ' (bin)'
    print 'CONVERTER_OUT:\t' + bin(int(converter_output, 16))[2:].zfill(8) + ' (bin)'
    print 'SEU_COUNT:\t' + str(int(seu_count, 16)) + ' (int)'
    print 'FGC_STATUS:\t' + bin(int(controller_status, 16))[2:].zfill(16) + ' (bin)'
    print 'BACKPLANE_TYPE:\t' + bin(int(backplane_type, 16))[2:].zfill(8) + ' (bin)'
    print 'SERIAL_DATA:\t' + serial_data + ' (hex)'
    print 'DEBUG_SEQUENCE:\t' + str(int(debug_seq_cnt, 16)) + ' (int)'
    print '--------------------------------------------------------------------------------'
    break


V_MEAS_0_9:	0 (int)
V_MEAS_10_19:	0 (int)
I_A_0_9:	0 (int)
I_A_10_19:	0 (int)
I_B_0_9:	0 (int)
I_B_10_19:	0 (int)
DIM_A_TRIG_LAT:	0000000000000000 (bin)
DIM_A_TRIG_UNL:	0000000000000000 (bin)
DIM_A_1_ANA_0:	0 (int)
DIM_A_1_ANA_1:	0 (int)
DIM_A_1_ANA_2:	0 (int)
DIM_A_1_ANA_3:	0 (int)
CYCLE_PERIOD:	0 (int)
VERSION:	0000 (hex)
ADC_LOG_INDEX:	0 (int)
DIM_LOG_INDEX:	0 (int)
CONVERTER_IN:	0000000000000010 (bin)
CONVERTER_OUT:	00000000 (bin)
SEU_COUNT:	0 (int)
FGC_STATUS:	0000011100000001 (bin)
BACKPLANE_TYPE:	00000000 (bin)
SERIAL_DATA:	000000 (hex)
DEBUG_SEQUENCE:	0 (int)
--------------------------------------------------------------------------------

In [ ]: