Пример #1
0
def get_mntr(dev):
    mntr=Data(io_cb=dev_serial_io_cb, send=True)
    mntr.add_page('mntr0')
    aa = lambda k, send, msg: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='ALARM', fmt_cb=lambda val,read=True,almn=k: alarm_fmt_cb(val,read,almn), trace_cb=alarm_trace_cb)
    aa('ALARM0', True, 'General')
    aa('ALARM1', False, 'TEMP')
    aa('ALARM2', False, 'PLL')
    aa('ALARM3', False, 'TX/RX')
    aa('ALARM4', False, 'PWR')
    mntr.add('TEMP', wdgt='entry', state='readonly', msg='Temperature', cmd_cb=adc_cmd_cb)
    mntr.add('TXIN', wdgt='entry', state='readonly', pack_forget=True, msg='TX In', cmd_cb=adc_cmd_cb)
    mntr.add_page('mntr1')
    ae = lambda cmd, label: mntr.add(cmd, wdgt='entry', state='readonly', label=label, cmd_cb=adc_cmd_cb, send=True)
    ae('TXIN', 'TX In')
    ae('TXOUT', 'TX Out')
    ae('RXOUT', 'RX Out')
    ae('OSLPLL', 'OSLPLL')
    ae('TXPLL', 'TXPLL')
    ae('RXPLL', 'RXPLL')
    for i in range(1, 7):
        ae('PA%d' % i, 'PA%d, V' % i)
    ae('P12V', '+12V')
    ae('P5V', '+5V')
    ae('LNBV', 'LNBV')
    ae('N5V', '-5V')
    mntr.cmds.columns=4
    return mntr
Пример #2
0
def get_ctrl(dev):
    ctrl_buttons = OD([('Reset', reset_cb), ('Write', write_cb)])
    data = Data(buttons=ctrl_buttons, io_cb=dev_io_cb)
    data.add_page('Generator', send=True)
    data.add('freq', label='Frequency, MHz', wdgt='spin', value={'min':0.1, 'max':12400, 'step':0.1}, text='1451')
    data.add('amp', label='Amplitude, dBm', wdgt='spin', value={'min':-40, 'max':-6, 'step':0.5}, text='-40')
    return data
Пример #3
0
def get_ctrl(dev):
    ctrl_buttons = OD([('Reset', reset_cb), ('Read', read_cb), ('Write', write_cb)])
    data = Data(buttons=ctrl_buttons, io_cb=dev_io_cb)
    data.add_page('Mode', send=True)
    data.add('COMMON', label='Mode', wdgt='combo', state='readonly', value=['INDEPENDENT', 'PARALLEL', 'SERIES', 'DOUBLE'], fmt_cb=common_fmt_cb)
    data.add_page('Independent', send=True)
    data.add('SCH1V', label='Channel1, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb)
    data.add('SCH1C', label='Channel1, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb)
    data.add('SW1', label='Output1 enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')]))
    data.add('SCH2V', label='Channel2, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb)
    data.add('SCH2C', label='Channel2, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb)
    data.add('SW2', label='Output2 enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')]))
    data.add_page('Parallel', send=True)
    data.add('SPARAV', label='Output, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb)
    data.add('SPARAC', label='Output, A', wdgt='spin', value=Data.spn(0,6,.01), fmt_cb=odp_fmt_cb)
    data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')]))
    data.add_page('Series', send=True)
    data.add('SSERIV', label='Output, V', wdgt='spin', value=Data.spn(0,60,.01), fmt_cb=odp_fmt_cb)
    data.add('SSERIC', label='Output, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb)
    data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')]))
    data.add_page('PlusMinus', send=True)
    data.add('SDUAL1V', label='Output1, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb)
    data.add('SDUAL1C', label='Output1, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb)
    data.add('SDUAL2V', label='Output2, V', wdgt='spin', value=Data.spn(0,30,.01), fmt_cb=odp_fmt_cb)
    data.add('SDUAL2C', label='Output2, A', wdgt='spin', value=Data.spn(0,3,.01), fmt_cb=odp_fmt_cb)
    data.add('SW1', label='Output enable', wdgt='combo', state='readonly', value=OD([('ON','0'), ('OFF','1')]))
    return data
Пример #4
0
def get_mntr(dev, cc=None):
    mntr = Data(io_cb=lambda d, c, v=None: 'QD2048.cmd %s %s %s' %
                (d['serial'], d['addr'], c))
    mntr.add_page('mntr0')
    aa = lambda k, send, msg: mntr.add(
        k, wdgt='alarm', send=send, msg=msg, cmd='FLT', fmt_cb=flt_fmt_cb)
    aa('CD', True, 'CD')
    aa('DEC', True, 'DEC')
    aa('RSYNTH', True, 'RSYNTH')
    mntr.add('EBNO',
             wdgt='entry',
             state='readonly',
             pack_forget=True,
             msg='Eb/No')
    mntr.add('BER',
             wdgt='entry',
             state='readonly',
             pack_forget=True,
             msg='BER')
    mntr.add_page('mntr1')
    mntr.add('EBNO', wdgt='entry', state='readonly', label='Eb/No')
    mntr.add('BER', wdgt='entry', state='readonly', label='BER')
    mntr.add('AGC', wdgt='entry', state='readonly', label='AGC')
    mntr.add('ROFFSET', wdgt='entry', state='readonly', label='ROFFSET')
    mntr.cmds.columns = 2
    return mntr
Пример #5
0
def get_ctrl(dev):
    ctrl = Data(io_cb=dev_io_cb)
    for i in [1, 2]:
        ctrl.add_page('CH%d' % i, send=True)
        ctrl.add('freq%d' % i,
                 label='Frequency, MHz',
                 wdgt='spin',
                 value=Data.spn(950, 2150, 0.01))
        ctrl.add('rfgain%d' % i,
                 label='RF Gain, dB',
                 wdgt='spin',
                 value=Data.spn(0, 31.5, 0.5))
        ctrl.add('bbgain%d' % i,
                 label='BB Gain, dB',
                 wdgt='spin',
                 value=Data.spn(0, 50, 0.1))
        ctrl.add('bblpf%d' % i,
                 label='BB Filter, MHz',
                 wdgt='spin',
                 value=Data.spn(1, 30))
    ctrl.add_page('Other', send=True)
    ctrl.add('commit',
             label='EFC commit enable',
             wdgt='combo',
             state='readonly',
             value=['ON', 'OFF'])
    ctrl.add('dlpf',
             label='Digital LPF, MHz',
             wdgt='combo',
             state='readonly',
             value=['0.1', '0.2', '0.5', '1', '1.5', '2', '5', '10', '20'])
    return ctrl
Пример #6
0
def get_mntr(dev):
    mntr = Data(name='status', send=True, io_cb=dev_io_cb)
    mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='AC-DC?')
    add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val,read,n), msg=msg)
    add_status(1, 'MCU power supply')
    add_status(2, 'Output indicator power supply')
    add_status(3, 'Fan current')
    add_status(4, 'PA1 power enable')
    add_status(5, 'PA1 temperature error')
    add_status(6, 'PA1 power diagnostics error')
    add_status(6, 'PA1 DC-DC?')
    add_status(7, 'PA2 power enable')
    add_status(8, 'PA2 temperature error')
    add_status(9, 'PA2 power diagnostics error')
    add_status(10, 'PA2 DC-DC?')
    mntr.add_page('Vcc')
    mntr.add('p_in', wdgt='entry', label='Pin', state='readonly', msg='Input power level, dBm')
    mntr.add('p_out', wdgt='entry', label='Pout', state='readonly', msg='Output power level, dBm')
    mntr.add('vswr1', wdgt='entry', label='VSWR1', state='readonly', msg='PA1 VSWR, V')
    mntr.add('vswr2', wdgt='entry', label='VSWR2', state='readonly', msg='PA2 VSWR, V')
    mntr.add('5_5v1', wdgt='entry', label='5.5V1', state='readonly', msg='MCU input voltage, V')
    mntr.add('5_5v2', wdgt='entry', label='5.5V2', state='readonly', msg='Output indicator voltage, V')
    mntr.add('28v1', wdgt='entry', label='28V1', state='readonly', msg='PA1 input voltage, V')
    mntr.add('28v2', wdgt='entry', label='28V2', state='readonly', msg='PA2 input voltage, V')
    mntr.add('26v', wdgt='entry', label='26V', state='readonly', msg='AD-DC? output, V')
    mntr.add('i_fan', wdgt='entry', label='Ifan', state='readonly', msg='Fan current, A')
    mntr.add('i1', wdgt='entry', label='I(PA1)', state='readonly', msg='PA1 current, A')
    mntr.add('i2', wdgt='entry', label='I(PA2)', state='readonly', msg='PA2 current, A')
    mntr.add('t1', wdgt='entry', label='T(PA1)', state='readonly', msg='PA1 temperature, C')
    mntr.add('t2', wdgt='entry', label='T(PA2)', state='readonly', msg='PA2 temperature, C')
    return mntr
Пример #7
0
def get_ctrl(dev):
    ctrl = Data(io_cb=dev_io_cb)
    ctrl.add_page('TX', send=True)
    ctrl.add('txfreq',
             label='Frequency, MHz',
             wdgt='spin',
             value={
                 'min': 232.5,
                 'max': 3720,
                 'step': 0.01
             },
             text='1000')
    ctrl.add('txlpf',
             label='LPF, MHz',
             wdgt='combo',
             value=LMS6002D.trxlpfbw_list,
             state='readonly',
             text='14')
    ctrl.add('txvga1',
             label='VGA1 Gain, dB',
             wdgt='spin',
             value={
                 'min': -35,
                 'max': -4,
                 'step': 1
             })
    ctrl.add('txvga2',
             label='VGA2 Gain, dB',
             wdgt='spin',
             value={
                 'min': 0,
                 'max': 25,
                 'step': 1
             })
    ctrl.add_page('RX', send=True)
    ctrl.add('rxfreq',
             label='Frequency, MHz',
             wdgt='spin',
             value={
                 'min': 232.5,
                 'max': 3720,
                 'step': 0.01
             })
    ctrl.add('rxlpf',
             label='LPF, MHz',
             wdgt='combo',
             value=LMS6002D.trxlpfbw_list,
             state='readonly')
    ctrl.add('rxvga2',
             label='VGA2 Gain, dB',
             wdgt='spin',
             value={
                 'min': 0,
                 'max': 30,
                 'step': 3
             })

    ctrl.menu = get_ctrl_menu(dev)
    #dev['spi'] = '0'
    return ctrl
Пример #8
0
def get_ctrl(dev):
    ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb)
    ctrl.add('chup',
             label='Channel UP',
             wdgt='combo',
             state='readonly',
             value=OD([('Channel A', '1'), ('Channel B', '0')]))
    ctrl.add('chdn',
             label='Channel DOWN',
             wdgt='combo',
             state='readonly',
             value=OD([('Channel A', '1'), ('Channel B', '0')]))
    ctrl.add('test',
             label='Test signal',
             wdgt='combo',
             state='readonly',
             value=OD([('UC-HF', '0'), ('UC-IF', '1'), ('DC-HF', '2'),
                       ('DC-IF', '3')]))
    ctrl.add_page('System')
    ctrl.add('commit',
             label='EFC commit enable',
             wdgt='combo',
             state='readonly',
             value=['ON', 'OFF'],
             text='ON')
    return ctrl
Пример #9
0
def get_ctrl(dev):
    ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb)
    ctrl.add('channel',
             label='Channel selection',
             wdgt='radio',
             value=OD([('Channel A', '1'), ('Channel B', '0')]))
    ctrl.add('tx',
             label='TX enable',
             wdgt='radio',
             value=OD([('ON', '1'), ('OFF', '0')]))
    ctrl.add('fan',
             label='FAN enable',
             wdgt='radio',
             value=OD([('ON', '1'), ('OFF', '0')]))
    ctrl.add('thrt1',
             label='Threshold1, C',
             wdgt='spin',
             value=Data.spn(0, 100, 1))
    ctrl.add('thrt2',
             label='Threshold2, C',
             wdgt='spin',
             value=Data.spn(0, 100, 1))
    ctrl.add_page('System')
    ctrl.add('commit',
             label='EFC commit enable',
             wdgt='combo',
             state='readonly',
             value=['ON', 'OFF'],
             text='ON')
    return ctrl
Пример #10
0
def get_mntr(dev):
    mntr = Data(io_cb=dev_serial_io_cb)
    mntr.add_page('mntr0', send=True)
    mntr.add('alarm', wdgt='alarm', msg='Sum Alarm', trace_cb=alarm_trace_cb)
    mntr.add('temp', wdgt='entry', state='readonly', msg='Temperature')
    mntr.add('pwr', wdgt='entry', state='readonly', msg='Power level')
    return mntr
Пример #11
0
def get_mntr(dev):
    mntr = Data(name='status', send=True, io_cb=dev_io_cb)
    mntr.add('status',
             wdgt='alarm',
             trace_cb=alarm_trace_cb,
             fmt_cb=status_fmt_cb,
             msg='Power supply')
    add_status = lambda n, msg: mntr.add('status%d' % n,
                                         wdgt='alarm',
                                         send=False,
                                         trace_cb=alarm_trace_cb,
                                         fmt_cb=lambda val, read:
                                         status_fmt_cb(val, read, n),
                                         msg=msg)
    add_status(1, 'Ch1 (sig)')
    add_status(2, 'Ch2 (aux)')
    add_status(3, 'Ch3 (br)')
    add_status(4, 'Uch1 (sig) < LVL')
    add_status(5, 'Uch3 (br) < LVL')
    mntr.add_page('Vcc')
    mntr.add('3v', wdgt='entry', label='3V', state='readonly', msg='3V')
    mntr.add('11v', wdgt='entry', label='11V', state='readonly', msg='11V')
    mntr.add('2_5v1',
             wdgt='entry',
             label='UC 2.5V',
             state='readonly',
             msg='UC 2.5V')
    mntr.add('2_5v2',
             wdgt='entry',
             label='DC 2.5V',
             state='readonly',
             msg='DC 2.5V')
    return mntr
Пример #12
0
def get_mntr(dev):
    mntr = Data(name='status', send=True, io_cb=dev_io_cb)
    mntr.add('status',
             wdgt='alarm',
             trace_cb=alarm_trace_cb,
             fmt_cb=status_fmt_cb,
             msg='Power supply')
    add_status = lambda n, msg: mntr.add('status%d' % n,
                                         wdgt='alarm',
                                         send=False,
                                         trace_cb=alarm_trace_cb,
                                         fmt_cb=lambda val, read:
                                         status_fmt_cb(val, read, n),
                                         msg=msg)
    add_status(1, 'Synth1 lock detect')
    add_status(2, 'Synth2 (aux) lock detect')
    add_status(3, 'Output level < threshold')
    mntr.add_page('mntr')
    mntr.add('5_5v', wdgt='entry', label='5.5V', state='readonly', msg='5.5V')
    mntr.add('txl',
             wdgt='entry',
             label='TXL',
             state='readonly',
             msg='TX signal level')
    return mntr
Пример #13
0
def get_ctrl(dev):
    ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb)
    ctrl.add('chup', label='Channel UP', wdgt='combo', state='readonly', value=OD([('Channel A', '1'), ('Channel B', '0')]))
    ctrl.add('chdn', label='Channel DOWN', wdgt='combo', state='readonly', value=OD([('Channel A', '1'), ('Channel B', '0')]))
    ctrl.add('test', label='Test signal', wdgt='combo', state='readonly', value=OD([('UC-HF', '0'), ('UC-IF', '1'), ('DC-HF', '2'), ('DC-IF', '3')]))
    ctrl.add_page('System')
    ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON')
    return ctrl
Пример #14
0
def get_mntr(dev):
    data = Data('mntra', send=True, io_cb=dev_serial_io_cb)
    for ch in range(1, 9):
        data.add('a%d'%ch,cmd='fetch',wdgt='alarm',msg='CH%d'%ch,fmt_cb=lambda val,read,c=ch:fmt_cb1(val,read,c),send=(ch==1),trace_cb=alarm_trace_cb)
    data.add_page('mntre', send=True)
    for ch in range(1, 9):
        v = data.add('CH%d'%ch, wdgt='entry', label='CH%d'%ch, msg='CH%d'%ch)
    data.cmds.columns = 4
    return data
Пример #15
0
def get_mntr(dev):
    mntr = Data(io_cb=dev_io_cb)
    mntr.add_page('mntr', send=True)
    mntr.add('synth1', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=synth_fmt_cb, msg='Synthesizer 1')
    mntr.add('synth2', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=synth_fmt_cb, msg='Synthesizer 2')
    mntr.add('uout1', wdgt='entry', state='readonly', msg='Uout1, V')
    mntr.add('uout2', wdgt='entry', state='readonly', msg='Uout2, V')
    mntr.add('uout3', wdgt='entry', state='readonly', msg='abs(Uout1-Uout2), V')
    return mntr
Пример #16
0
def get_mntr(dev):
    mntr = Data(name='status', send=True, io_cb=dev_io_cb)
    mntr.add('status',
             wdgt='alarm',
             trace_cb=alarm_trace_cb,
             fmt_cb=status_fmt_cb,
             msg='ChA LNA power supply')
    add_status = lambda n, msg: mntr.add('status%d' % n,
                                         wdgt='alarm',
                                         send=False,
                                         trace_cb=alarm_trace_cb,
                                         fmt_cb=lambda val, read:
                                         status_fmt_cb(val, read, n),
                                         msg=msg)
    add_status(1, 'ChB LNA power supply')
    add_status(2, 'Output switch power supply')
    add_status(3, 'AC-DC/DC-DC?')
    add_status(4, 'ChA power supply')
    add_status(5, 'ChB power supply')
    add_status(6, 'MCU power supply')
    mntr.add_page('Vcc')
    mntr.add('5v1',
             wdgt='entry',
             label='5V1',
             state='readonly',
             msg='5V, ChA LNA power supply')
    mntr.add('5v2',
             wdgt='entry',
             label='5V2',
             state='readonly',
             msg='5V, ChB LNA power supply')
    mntr.add('2_5v',
             wdgt='entry',
             label='2.5V',
             state='readonly',
             msg='Output switch power supply')
    mntr.add('26v',
             wdgt='entry',
             label='26V',
             state='readonly',
             msg='AC-DC/DC-DC?')
    mntr.add('12v1',
             wdgt='entry',
             label='12V1',
             state='readonly',
             msg='ChA power supply')
    mntr.add('12v2',
             wdgt='entry',
             label='12V2',
             state='readonly',
             msg='ChB power supply')
    mntr.add('5_5v',
             wdgt='entry',
             label='5_5V',
             state='readonly',
             msg='MCU power supply')
    return mntr
Пример #17
0
def get_mntr(dev):
    mntr = Data(io_cb=dev_io_cb)
    mntr.add_page('mntr', send=True)
    mntr.add('synth',
             wdgt='alarm',
             trace_cb=alarm_trace_cb,
             fmt_cb=synth_fmt_cb,
             msg='Synthesizer status')
    mntr.add('uout', wdgt='entry', state='readonly', msg='Uout, V')
    return mntr
Пример #18
0
def get_ctrl(dev):
    ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb)
    ctrl.add('channel', label='Channel selection', wdgt='radio', value=OD([('Channel A', '1'), ('Channel B', '0')]))
    ctrl.add('tx', label='TX enable', wdgt='radio', value=OD([('ON', '1'), ('OFF', '0')]))
    ctrl.add('fan', label='FAN enable', wdgt='radio', value=OD([('ON', '1'), ('OFF', '0')]))
    ctrl.add('thrt1', label='Threshold1, C', wdgt='spin', value=Data.spn(0, 100, 1))
    ctrl.add('thrt2', label='Threshold2, C', wdgt='spin', value=Data.spn(0, 100, 1))
    ctrl.add_page('System')
    ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON')
    return ctrl
Пример #19
0
def get_ctrl(dev):
    ctrl_buttons = OD([('Read', read_cb), ('Write', write_cb),
                       ('Stop', stop_cb)])
    ctrl = Data(name='Setup', buttons=ctrl_buttons)
    ctrl.add('limaz',
             label='Azimuth max.',
             wdgt='spin',
             value=Data.spn(0, 16383),
             send=True,
             fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=0),
             cmd_cb=polus_cmd_cb)
    ctrl.add('limaz2',
             label='Azimuth min.',
             wdgt='spin',
             value=Data.spn(0, 16383),
             fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=1))
    ctrl.add('limel',
             label='Elevation max.',
             wdgt='spin',
             value=Data.spn(0, 16383),
             send=True,
             fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=2),
             cmd_cb=polus_cmd_cb)
    ctrl.add('limel2',
             label='Elevation min.',
             wdgt='spin',
             value=Data.spn(0, 16383),
             fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=3))
    ctrl.add('ae0',
             label='New azimuth',
             wdgt='spin',
             value=Data.spn(0, 16383),
             send=True,
             fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=4),
             cmd_cb=polus_cmd_cb)
    ctrl.add('ae02',
             label='New elevation',
             wdgt='spin',
             value=Data.spn(0, 16383),
             fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=5))
    ctrl.add_page('Move')
    ctrl.add('az',
             label='Azimuth',
             wdgt='spin',
             value=Data.spn(0, 16383),
             send=True,
             cmd_cb=polus_cmd_cb)
    ctrl.add('el',
             label='Elevation',
             wdgt='spin',
             value=Data.spn(0, 16383),
             send=True,
             cmd_cb=polus_cmd_cb)
    return ctrl
Пример #20
0
Файл: UC.py Проект: ivanovev/tmb
def get_mntr(dev):
    mntr = Data(name='status', send=True, io_cb=dev_io_cb)
    mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='Power supply')
    add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val,read,n), msg=msg)
    add_status(1, 'Synth1 lock detect')
    add_status(2, 'Synth2 (aux) lock detect')
    add_status(3, 'Output level < threshold')
    mntr.add_page('mntr')
    mntr.add('5_5v', wdgt='entry', label='5.5V', state='readonly', msg='5.5V')
    mntr.add('txl', wdgt='entry', label='TXL', state='readonly', msg='TX signal level')
    return mntr
Пример #21
0
def get_ctrl(dev):
    ctrl = Data(io_cb=dev_io_cb)
    for i in [1, 2]:
        ctrl.add_page('CH%d' % i, send=True)
        ctrl.add('freq%d'%i, label='Frequency, MHz', wdgt='spin', value=Data.spn(950, 2150, 0.01))
        ctrl.add('rfgain%d'%i, label='RF Gain, dB', wdgt='spin', value=Data.spn(0, 31.5, 0.5))
        ctrl.add('bbgain%d'%i, label='BB Gain, dB', wdgt='spin', value=Data.spn(0, 50, 0.1))
        ctrl.add('bblpf%d'%i, label='BB Filter, MHz', wdgt='spin', value=Data.spn(1, 30))
    ctrl.add_page('Other', send=True)
    ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'])
    ctrl.add('dlpf', label='Digital LPF, MHz', wdgt='combo', state='readonly', value=['0.1','0.2','0.5','1','1.5','2','5','10','20'])
    return ctrl
Пример #22
0
def get_ctrl(dev):
    ctrl_buttons = OD([('Read', read_cb), ('Write', write_cb), ('Stop', stop_cb)])
    ctrl = Data(name='Setup', buttons=ctrl_buttons)
    ctrl.add('limaz', label='Azimuth max.', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=0), cmd_cb=polus_cmd_cb)
    ctrl.add('limaz2', label='Azimuth min.', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=1))
    ctrl.add('limel', label='Elevation max.', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=2), cmd_cb=polus_cmd_cb)
    ctrl.add('limel2', label='Elevation min.', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=3))
    ctrl.add('ae0', label='New azimuth', wdgt='spin', value=Data.spn(0, 16383), send=True, fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=4), cmd_cb=polus_cmd_cb)
    ctrl.add('ae02', label='New elevation', wdgt='spin', value=Data.spn(0, 16383), fmt_cb=lambda val, read: ae0_fmt_cb(val, read, e=5))
    ctrl.add_page('Move')
    ctrl.add('az', label='Azimuth', wdgt='spin', value=Data.spn(0, 16383), send=True, cmd_cb=polus_cmd_cb)
    ctrl.add('el', label='Elevation', wdgt='spin', value=Data.spn(0, 16383), send=True, cmd_cb=polus_cmd_cb)
    return ctrl
Пример #23
0
def get_ctrl(dev):
    ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb)
    ctrl.add('channel',
             label='Channel selection',
             wdgt='radio',
             value=OD([('Channel A', '1'), ('Channel B', '0')]))
    ctrl.add_page('System')
    ctrl.add('commit',
             label='EFC commit enable',
             wdgt='combo',
             state='readonly',
             value=['ON', 'OFF'],
             text='ON')
    return ctrl
Пример #24
0
def get_mntr(dev):
    mntr = Data(name='status', send=True, io_cb=dev_io_cb)
    mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='Power supply')
    add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val,read,n), msg=msg)
    add_status(1, 'Ch1 (sig)')
    add_status(2, 'Ch2 (aux)')
    add_status(3, 'Ch3 (br)')
    add_status(4, 'Uch1 (sig) < LVL')
    add_status(5, 'Uch3 (br) < LVL')
    mntr.add_page('Vcc')
    mntr.add('3v', wdgt='entry', label='3V', state='readonly', msg='3V')
    mntr.add('11v', wdgt='entry', label='11V', state='readonly', msg='11V')
    mntr.add('2_5v1', wdgt='entry', label='UC 2.5V', state='readonly', msg='UC 2.5V')
    mntr.add('2_5v2', wdgt='entry', label='DC 2.5V', state='readonly', msg='DC 2.5V')
    return mntr
Пример #25
0
Файл: DC.py Проект: ivanovev/tmb
def get_mntr(dev):
    mntr = Data(name='status', send=True, io_cb=dev_io_cb)
    mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='Power supply')
    add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val,read,n), msg=msg)
    add_status(1, 'Ch1 (sig)')
    add_status(2, 'Ch2')
    add_status(3, 'Ch3 (br)')
    add_status(4, '(RXL < Thrs1) || (RXL > Thrs2)')
    add_status(5, 'BRL < ThrsB')
    mntr.add_page('mntr')
    mntr.add('5_5v', wdgt='entry', label='5.5V', state='readonly', msg='5.5V')
    mntr.add('rxl', wdgt='entry', label='RXL', state='readonly', msg='RX signal level')
    mntr.add('brl', wdgt='entry', label='BRL', state='readonly', msg='Beacon signal level')
    mntr.cmds.columns = 3
    return mntr
Пример #26
0
def get_ctrl(dev):
    ctrl = Data(io_cb=dev_io_cb)
    ctrl.add_page('TX', send=True)
    ctrl.add('txfreq', label='Frequency, MHz', wdgt='spin', value={'min':232.5, 'max':3720, 'step':0.01}, text='1000')
    ctrl.add('txlpf', label='LPF, MHz', wdgt='combo', value=LMS6002D.trxlpfbw_list, state='readonly', text='14')
    ctrl.add('txvga1', label='VGA1 Gain, dB', wdgt='spin', value={'min':-35, 'max':-4, 'step':1})
    ctrl.add('txvga2', label='VGA2 Gain, dB', wdgt='spin', value={'min':0, 'max':25, 'step':1})
    ctrl.add_page('RX', send=True)
    ctrl.add('rxfreq', label='Frequency, MHz', wdgt='spin', value={'min':232.5, 'max':3720, 'step':0.01})
    ctrl.add('rxlpf', label='LPF, MHz', wdgt='combo', value=LMS6002D.trxlpfbw_list, state='readonly')
    ctrl.add('rxvga2', label='VGA2 Gain, dB', wdgt='spin', value={'min':0, 'max':30, 'step':3})

    ctrl.menu = get_ctrl_menu(dev)
    #dev['spi'] = '0'
    return ctrl
Пример #27
0
def get_mntr(dev):
    mntr = Data(io_cb=dev_serial_io_cb, send=True)
    mntr.add_page('mntr0')
    aa = lambda k, send, msg: mntr.add(k,
                                       wdgt='alarm',
                                       send=send,
                                       msg=msg,
                                       cmd='ALARM',
                                       fmt_cb=lambda val, read=True, almn=k:
                                       alarm_fmt_cb(val, read, almn),
                                       trace_cb=alarm_trace_cb)
    aa('ALARM0', True, 'General')
    aa('ALARM1', False, 'TEMP')
    aa('ALARM2', False, 'PLL')
    aa('ALARM3', False, 'TX/RX')
    aa('ALARM4', False, 'PWR')
    mntr.add('TEMP',
             wdgt='entry',
             state='readonly',
             msg='Temperature',
             cmd_cb=adc_cmd_cb)
    mntr.add('TXIN',
             wdgt='entry',
             state='readonly',
             pack_forget=True,
             msg='TX In',
             cmd_cb=adc_cmd_cb)
    mntr.add_page('mntr1')
    ae = lambda cmd, label: mntr.add(cmd,
                                     wdgt='entry',
                                     state='readonly',
                                     label=label,
                                     cmd_cb=adc_cmd_cb,
                                     send=True)
    ae('TXIN', 'TX In')
    ae('TXOUT', 'TX Out')
    ae('RXOUT', 'RX Out')
    ae('OSLPLL', 'OSLPLL')
    ae('TXPLL', 'TXPLL')
    ae('RXPLL', 'RXPLL')
    for i in range(1, 7):
        ae('PA%d' % i, 'PA%d, V' % i)
    ae('P12V', '+12V')
    ae('P5V', '+5V')
    ae('LNBV', 'LNBV')
    ae('N5V', '-5V')
    mntr.cmds.columns = 4
    return mntr
Пример #28
0
def get_mntr(dev):
    mntr = Data(io_cb=CDM570.cmd_io_cb, send=True)
    mntr.add_page('mntr0')
    aa = lambda k, send, msg, fltn: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='FLT', fmt_cb=lambda val,read=True: flt_fmt_cb(val, read, fltn=fltn), trace_cb=alarm_trace_cb)
    aa('FLT0', True, 'Unit fault', 0)
    aa('FLT1', False, 'Slot 1', 1)
    aa('FLT2', False, 'Slot 2', 2)
    aa('FLT3', False, 'Slot 3', 3)
    aa('FLT4', False, 'Slot 4', 4)
    mntr.add('TMP', wdgt='entry', msg='Temperature')
    if dev['devdata'] == 'mod':
        return mntr
    if dev['devdata'] == 'demod':
        mntr1 = CDM570.get_mntr(dev)
        mntr.add_page(name=mntr1[1].name, cmds=mntr1[1])
        return mntr
Пример #29
0
def get_mntr(dev):
    data = Data('mntr', send=True, io_cb=util_io_cb)
    data.add('rdy', wdgt='alarm', msg='Status', cmd_cb=rdy_cmd_cb, fmt_cb=rdy_fmt_cb, trace_cb=alarm_trace_cb)
    data.add_page('mntr1')
    refin = float(dev[c_refin])
    data.add('adc0', wdgt='entry', state='readonly', label='ADC0', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=0,a=0x60))
    data.add('adc1', wdgt='entry', state='readonly', label='ADC1', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=1,a=0x60))
    data.add('adc2', wdgt='entry', state='readonly', label='ADC2', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=2,a=0x60))
    data.add('adc3', wdgt='entry', state='readonly', label='ADC3', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=3,a=0x60))
    data.add('adc4', wdgt='entry', state='readonly', label='ADC4', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=4,a=0x60))
    data.add('adc5', wdgt='entry', state='readonly', label='ADC5', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=5,a=0x60))
    data.add('adc6', wdgt='entry', state='readonly', label='ADC6', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=6,a=0x60))
    data.add('adc7', wdgt='entry', state='readonly', label='ADC7', cmd_cb=adc_dac_cmd_cb, fmt_cb=lambda val,read=True: adc_dac_fmt_cb(val,read,refin=refin,n=7,a=0x60))
    data.add('temp', wdgt='entry', state='readonly', label='TEMP', msg='Temperature', cmd_cb=temp_cmd_cb, fmt_cb=temp_fmt_cb)
    data.cmds.columns=4
    return data
Пример #30
0
def get_mntr(dev):
    mntr = Data(io_cb=dev_io_cb)
    mntr.add_page('mntr', send=True)
    mntr.add('synth', wdgt='alarm', trace_cb=alarm_trace_cb, msg='Synthesizer status')
    mntr.add('uout', wdgt='entry', state='readonly', msg='Uout, V')
    mntr.add_page('mntr1', send=True)
    mntr.add('vcm1', label='VCM1', wdgt='entry', state='readonly', msg='VCM1')
    mntr.add('vcm2', label='VCM2', wdgt='entry', state='readonly', msg='VCM2')
    mntr.add('5v_1', label='5V_1', wdgt='entry', state='readonly', msg='5V_1')
    mntr.add('5v_2', label='5V_2', wdgt='entry', state='readonly', msg='5V_2')
    mntr.add('3v3_1', label='3V3_1', wdgt='entry', state='readonly', msg='3V3_1')
    mntr.add('3v3_2', label='3V3_2', wdgt='entry', state='readonly', msg='3V3_2')
    mntr.add('3v3_3', label='3V3_3', wdgt='entry', state='readonly', msg='3V3_3')
    mntr.add('14v', label='14V', wdgt='entry', state='readonly', msg='14V')
    mntr.cmds.columns=2
    return mntr
Пример #31
0
def get_mntr(dev, cc=None):
    mntr = Data(io_cb=lambda d,c,v=None: 'QD2048.cmd %s %s %s' % (d['serial'], d['addr'], c))
    mntr.add_page('mntr0')
    aa = lambda k, send, msg: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='FLT', fmt_cb=flt_fmt_cb)
    aa('CD', True, 'CD')
    aa('DEC', True, 'DEC')
    aa('RSYNTH', True, 'RSYNTH')
    mntr.add('EBNO', wdgt='entry', state='readonly', pack_forget=True, msg='Eb/No')
    mntr.add('BER', wdgt='entry', state='readonly', pack_forget=True, msg='BER')
    mntr.add_page('mntr1')
    mntr.add('EBNO', wdgt='entry', state='readonly', label='Eb/No')
    mntr.add('BER', wdgt='entry', state='readonly', label='BER')
    mntr.add('AGC', wdgt='entry', state='readonly', label='AGC')
    mntr.add('ROFFSET', wdgt='entry', state='readonly', label='ROFFSET')
    mntr.cmds.columns=2
    return mntr
Пример #32
0
def get_mntr(dev):
    mntr = Data(io_cb=cmd_io_cb, send=True)
    mntr.add_page('mntr0')
    aa = lambda k, send, msg, fltn: mntr.add(
        k,
        wdgt='alarm',
        send=send,
        msg=msg,
        cmd='FLT',
        fmt_cb=lambda val, read=True, fltn=fltn: flt_fmt_cb(val, read, fltn),
        trace_cb=alarm_trace_cb)
    aa('FLT0', True, 'Unit fault', 0)
    aa('FLT1', False, 'TX fault', 1)
    aa('FLT2', False, 'RX fault', 2)
    mntr.add('RSL',
             wdgt='entry',
             state='readonly',
             pack_forget=True,
             fmt_cb=rsl_fmt_cb,
             msg='RX Level, dBm')
    mntr.add('EBN',
             wdgt='entry',
             state='readonly',
             pack_forget=True,
             fmt_cb=rfo_ebn_fmt_cb,
             msg='RX Eb/No, dB')
    mntr.add_page('mntr1')
    mntr.add('RSL',
             wdgt='entry',
             state='readonly',
             label='RX Level, dBm',
             fmt_cb=rsl_fmt_cb)
    mntr.add('EBN',
             wdgt='entry',
             state='readonly',
             label='RX Eb/No, dB',
             fmt_cb=rfo_ebn_fmt_cb)
    mntr.add('BFS', wdgt='entry', state='readonly', label='Buffer Fill, %')
    mntr.add('RFO',
             wdgt='entry',
             state='readonly',
             label='Freq Offset, kHz',
             fmt_cb=rfo_ebn_fmt_cb)
    mntr.add('BER', wdgt='entry', state='readonly', label='RX BER')
    mntr.add('TMP', wdgt='entry', state='readonly', label='Temperature')
    mntr.columns = 2
    return mntr
Пример #33
0
def get_mntr(dev):
    mntr = Data(io_cb=cmd_serial_io_cb, send=True)
    mntr.add_page('mntr0')
    aa = lambda k, send, fltn, msg: mntr.add(k,
                                             wdgt='alarm',
                                             send=send,
                                             msg=msg,
                                             cmd='MFS',
                                             fmt_cb=lambda val, read, fltn=
                                             fltn: mfs_fmt_cb(val, read, fltn),
                                             trace_cb=alarm_trace_cb)
    aa('MOD', True, 0, 'Modulator')
    aa('DMD', False, 1, 'Demodulator')
    aa('TX', False, 2, 'Interface transmit side')
    aa('IRX', False, 3, 'Interface receive side')
    aa('CEQ', False, 4, 'Common equipment')
    mntr.add('EBN0',
             wdgt='entry',
             state='readonly',
             pack_forget=True,
             msg='Eb/No')
    mntr.add('CBER',
             wdgt='entry',
             state='readonly',
             pack_forget=True,
             msg='Corrected BER')
    mntr.add_page('mntr1')
    mntr.add('RSL',
             wdgt='entry',
             state='readonly',
             label='RX Level [dBm]',
             fmt_cb=rsl_fmt_cb)
    mntr.add('EBN0', wdgt='entry', state='readonly', label='Eb/No')
    mntr.add('CSV',
             wdgt='entry',
             state='readonly',
             label='Current sweep',
             fmt_cb=csv_fmt_cb)
    mntr.add('CBER', wdgt='entry', state='readonly', label='Corrected BER')
    mntr.add('IBFS',
             wdgt='entry',
             state='readonly',
             label='Buffer fill [%]',
             fmt_cb=ibfs_fmt_cb)
    mntr.add('RBER', wdgt='entry', state='readonly', label='Raw BER')
    mntr.columns = 2
    return mntr
Пример #34
0
def get_mntr(dev):
    mntr = Data(io_cb=cmd_io_cb, send=True)
    mntr.add_page('mntr0')
    aa = lambda k, send, msg, fltn: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='FLT', fmt_cb=lambda val, read=True, fltn=fltn: flt_fmt_cb(val, read, fltn), trace_cb=alarm_trace_cb)
    aa('FLT0', True, 'Unit fault', 0)
    aa('FLT1', False, 'TX fault', 1)
    aa('FLT2', False, 'RX fault', 2)
    mntr.add('RSL', wdgt='entry', state='readonly', pack_forget=True, fmt_cb=rsl_fmt_cb, msg='RX Level, dBm')
    mntr.add('EBN', wdgt='entry', state='readonly', pack_forget=True, fmt_cb=rfo_ebn_fmt_cb, msg='RX Eb/No, dB')
    mntr.add_page('mntr1')
    mntr.add('RSL', wdgt='entry', state='readonly', label='RX Level, dBm', fmt_cb=rsl_fmt_cb)
    mntr.add('EBN', wdgt='entry', state='readonly', label='RX Eb/No, dB', fmt_cb=rfo_ebn_fmt_cb)
    mntr.add('BFS', wdgt='entry', state='readonly', label='Buffer Fill, %')
    mntr.add('RFO', wdgt='entry', state='readonly', label='Freq Offset, kHz', fmt_cb=rfo_ebn_fmt_cb)
    mntr.add('BER', wdgt='entry', state='readonly', label='RX BER')
    mntr.add('TMP', wdgt='entry', state='readonly', label='Temperature')
    mntr.columns=2
    return mntr
Пример #35
0
def get_mntr(dev):
    data = Data('mntra', send=True, io_cb=dev_serial_io_cb)
    for ch in range(1, 9):
        data.add('a%d' % ch,
                 cmd='fetch',
                 wdgt='alarm',
                 msg='CH%d' % ch,
                 fmt_cb=lambda val, read, c=ch: fmt_cb1(val, read, c),
                 send=(ch == 1),
                 trace_cb=alarm_trace_cb)
    data.add_page('mntre', send=True)
    for ch in range(1, 9):
        v = data.add('CH%d' % ch,
                     wdgt='entry',
                     label='CH%d' % ch,
                     msg='CH%d' % ch)
    data.cmds.columns = 4
    return data
Пример #36
0
Файл: DC.py Проект: ivanovev/tmb
def get_ctrl(dev):
    ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb)
    ctrl.add('agc_en', label='AGC Enable', wdgt='radio', value=OD([('ON', '1'), ('OFF', '0')]))
    ctrl.add('agc_lvl', label='AGC Level', wdgt='spin', value=Data.spn(0, 2.5, 0.1))
    ctrl.add('bpf', label='Band Pass Filter', wdgt='combo', state='readonly', value=OD([('11MHz', '0'), ('5.5MHz', '2'), ('250kHz', '3')]))
    ctrl.add('bas', label='BAS output', wdgt='radio', value=OD([('Ch1 (sig)', '0'), ('Ch3 (br)', '1')]))
    ctrl.add('test', label='TEST output', wdgt='combo', state='readonly', value=OD([('Synth1(835-1140,1MHz)', '3'), ('Synth2(150,7MHz)', '1'), ('Synth3(1125-1140,1MHz)', '0'), ('XTAL(26MHz)', '2')]))
    ctrl.add('freq', label='Channel1 freq', wdgt='spin', value=Data.spn(975, 1000, 0.01), cmd_cb=freq_cmd_cb)
    ctrl.add('inv', label='Channel1 inv', wdgt='check', fmt_cb=inv_fmt_cb, trace_cb=inv_trace_cb)
    ctrl.add('gain', label='Channel1 gain', wdgt='spin', value=Data.spn(19, 65, 0.5))
    ctrl.add('freqbr', label='Channel3(br) freq', wdgt='spin', value=Data.spn(975, 1000.1, 0.01))
    ctrl.add('gainbr', label='Channel3(br) gain', wdgt='spin', value=Data.spn(29.5, 77.5, 0.5))
    ctrl.add('thrs1', label='Threshold1', wdgt='spin', value=Data.spn(0, 200, 1))
    ctrl.add('thrs2', label='Threshold2', wdgt='spin', value=Data.spn(0, 200, 1))
    ctrl.add('thrsb', label='Threshold (br)', wdgt='spin', value=Data.spn(0, 10, 0.1))
    ctrl.add_page('System')
    ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON')
    return ctrl
Пример #37
0
def get_mntr(dev):
    mntr = Data(name='status', send=True, io_cb=dev_io_cb)
    mntr.add('status', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=status_fmt_cb, msg='ChA LNA power supply')
    add_status = lambda n, msg: mntr.add('status%d' % n, wdgt='alarm', send=False, trace_cb=alarm_trace_cb, fmt_cb=lambda val, read: status_fmt_cb(val,read,n), msg=msg)
    add_status(1, 'ChB LNA power supply')
    add_status(2, 'Output switch power supply')
    add_status(3, 'AC-DC/DC-DC?')
    add_status(4, 'ChA power supply')
    add_status(5, 'ChB power supply')
    add_status(6, 'MCU power supply')
    mntr.add_page('Vcc')
    mntr.add('5v1', wdgt='entry', label='5V1', state='readonly', msg='5V, ChA LNA power supply')
    mntr.add('5v2', wdgt='entry', label='5V2', state='readonly', msg='5V, ChB LNA power supply')
    mntr.add('2_5v', wdgt='entry', label='2.5V', state='readonly', msg='Output switch power supply')
    mntr.add('26v', wdgt='entry', label='26V', state='readonly', msg='AC-DC/DC-DC?')
    mntr.add('12v1', wdgt='entry', label='12V1', state='readonly', msg='ChA power supply')
    mntr.add('12v2', wdgt='entry', label='12V2', state='readonly', msg='ChB power supply')
    mntr.add('5_5v', wdgt='entry', label='5_5V', state='readonly', msg='MCU power supply')
    return mntr
Пример #38
0
def get_ctrl(dev):
    ctrl = Data(io_cb=cmd_serial_io_cb)
    ctrl.add_page('Modulator', send=True)
    ctrl.add('RF', label='RF Output', wdgt='radio', value=['ON', 'OFF'])
    ctrl.add('MF', label='Modulator Frequency, MHz', wdgt='spin', value=Data.spn(50, 180, .001), fmt_cb=mf_fmt_cb)
    ctrl.add('AMRV', label='Modulation type', wdgt='radio', value=OD([('QPSK 1/2','1/2'),('QPSK 3/4','3/4'),('QPSK 7/8','7/8'),('BPSK 1/2','BP12')]), fmt_cb=amrv_fmt_cb)
    ctrl.add('AMRV2', label='Data rate, kbps', wdgt='spin', value=Data.spn(2.4, 5000, .1), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 1), send=False)
    ctrl.add('MOP', label='Power Level, dBm', wdgt='spin', value=Data.spn(-30, -5), fmt_cb=mop_fmt_cb)
    ctrl.add('SE', label='Scrambler Enable', wdgt='radio', value=['ON', 'OFF'])
    ctrl.add('DENC', label='Dif Decoder Enable', wdgt='radio', value=['ON', 'OFF'])
    ctrl.add_page('Demodulator', send=True)
    ctrl.add('DF', label='Demodulator Frequency', wdgt='spin', value=Data.spn(50, 180, .001), fmt_cb=mf_fmt_cb)
    ctrl.add('ADRV', label='Modulation type', wdgt='radio', value=OD([('QPSK 1/2','1/2'),('QPSK 3/4','3/4'),('QPSK 7/8','7/8'),('BPSK 1/2','BP12')]), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 2))
    ctrl.add('ADRV2', label='Data rate, kbps', wdgt='spin', value=Data.spn(2.4, 5000, .1), fmt_cb=lambda val, read: amrv_fmt_cb(val, read, 3), send=False)
    ctrl.add('SWR', label='Sweep Width, Hz', wdgt='spin', value=Data.spn(0, 70000), fmt_cb=swr_fmt_cb)
    ctrl.add('SR', label='Sweep Reacquision, s', wdgt='spin', value=Data.spn(0, 999))
    ctrl.add('DE', label='Descrambler enable', wdgt='radio', value=['ON', 'OFF'])
    ctrl.add('DDEC', label='Differential decoder', wdgt='radio', value=['ON', 'OFF'])
    return ctrl
Пример #39
0
def get_mntr(dev):
    mntr = Data(io_cb=dev_io_cb)
    mntr.add_page('mntr', send=True)
    mntr.add('synth1',
             wdgt='alarm',
             trace_cb=alarm_trace_cb,
             fmt_cb=synth_fmt_cb,
             msg='Synthesizer 1')
    mntr.add('synth2',
             wdgt='alarm',
             trace_cb=alarm_trace_cb,
             fmt_cb=synth_fmt_cb,
             msg='Synthesizer 2')
    mntr.add('uout1', wdgt='entry', state='readonly', msg='Uout1, V')
    mntr.add('uout2', wdgt='entry', state='readonly', msg='Uout2, V')
    mntr.add('uout3',
             wdgt='entry',
             state='readonly',
             msg='abs(Uout1-Uout2), V')
    return mntr
Пример #40
0
def get_mntr(dev):
    mntr = Data(io_cb=cmd_serial_io_cb, send=True)
    mntr.add_page('mntr0')
    aa = lambda k, send, fltn, msg: mntr.add(k, wdgt='alarm', send=send, msg=msg, cmd='MFS', fmt_cb=lambda val, read, fltn=fltn: mfs_fmt_cb(val, read, fltn), trace_cb=alarm_trace_cb)
    aa('MOD', True, 0, 'Modulator')
    aa('DMD', False, 1, 'Demodulator')
    aa('TX', False, 2, 'Interface transmit side')
    aa('IRX', False, 3, 'Interface receive side')
    aa('CEQ', False, 4, 'Common equipment')
    mntr.add('EBN0', wdgt='entry', state='readonly', pack_forget=True, msg='Eb/No')
    mntr.add('CBER', wdgt='entry', state='readonly', pack_forget=True, msg='Corrected BER')
    mntr.add_page('mntr1')
    mntr.add('RSL', wdgt='entry', state='readonly', label='RX Level [dBm]', fmt_cb=rsl_fmt_cb)
    mntr.add('EBN0', wdgt='entry', state='readonly', label='Eb/No')
    mntr.add('CSV', wdgt='entry', state='readonly', label='Current sweep', fmt_cb=csv_fmt_cb)
    mntr.add('CBER', wdgt='entry', state='readonly', label='Corrected BER')
    mntr.add('IBFS', wdgt='entry', state='readonly', label='Buffer fill [%]', fmt_cb=ibfs_fmt_cb)
    mntr.add('RBER', wdgt='entry', state='readonly', label='Raw BER')
    mntr.columns = 2
    return mntr
Пример #41
0
def get_mntr(dev):
    if dev['devdata'] == 'mod':
        mntr_mod = Data(io_cb=hm_SL2048_io_cb)
        mntr_mod.add_page('mod')
        mntr_mod.add('TFAULT', wdgt='alarm', msg='TFAULT')
        return mntr_mod
    if dev['devdata'] == 'demod':
        mntr_demod = Data(io_cb=hm_SL2048_io_cb)
        mntr_demod.add_page('demod')
        mntr_demod.add('RCD', wdgt='alarm', msg='RCD')
        mntr_demod.add('RDEC', wdgt='alarm', msg='RDEC')
        mntr_demod.add('RSYNTH', wdgt='alarm', msg='RSYNTH')
        mntr_demod.add('REBNO',
                       wdgt='entry',
                       state='readonly',
                       pack_forget=True,
                       msg='Eb/No')
        mntr_demod.add('RBER',
                       wdgt='entry',
                       state='readonly',
                       pack_forget=True,
                       msg='BER')
        mntr_demod.add_page('demod1')
        mntr_demod.add('REBNO', wdgt='entry', state='readonly', label='Eb/No')
        mntr_demod.add('RBER', wdgt='entry', state='readonly', label='BER')
        mntr_demod.add('RAGC', wdgt='entry', state='readonly', label='AGC')
        mntr_demod.add('RROFFSET',
                       wdgt='entry',
                       state='readonly',
                       label='ROFFSET')
        return mntr_demod
Пример #42
0
def get_ctrl(dev):
    ctrl = Data(send=True, io_cb=cmd_io_cb)
    ctrl.add_page('Modulator')
    ctrl.add('EID', label='Turbo', wdgt='entry', state='readonly', text='???', cmd_cb=turbo_cmd_cb, fmt_cb=turbo_fmt_cb, trace_cb=turbo_trace_cb)
    ctrl.add('TFT', label='Tx FEC Type', wdgt='radio', value=OD([('Viterbi','1'),('Turbo','6')]), trace_cb=ft_trace_cb)
    ctrl.add('TMD', label='Tx Modulation Type', wdgt='radio', value=OD([('BPSK',0),('QPSK',1),('16QAM',4)]), trace_cb=md_trace_cb)
    ctrl.add('TCR', label='Tx FEC Code Rate', wdgt='radio', value=OD([('1/2',2),('3/4',4),('7/8',5),('19/20',6),('21/44',1),('5/16',0)]))
    ctrl.add('TXO', label='Tx Carrier State', wdgt='radio', value=OD([('ON',1),('OFF',0)]))
    ctrl.add('TDR', label='Tx Data Rate, kbps', wdgt='spin', value=Data.spn(2.4, 9980, .001), fmt_cb=dr_fmt_cb)
    ctrl.add('TFQ', label='Tx Frequency, MHz', wdgt='spin', value=Data.spn(50, 90, .001), fmt_cb=fq_fmt_cb)
    ctrl.add('TPL', label='Tx Power Level', wdgt='spin', value=Data.spn(-40, 0, .1), fmt_cb=tpl_fmt_cb)
    ctrl.add('TSC', label='Tx Scrambler', wdgt='radio', value=OD([('ON',1),('OFF','0')]))
    ctrl.add_page('Demodulator')
    ctrl.add('EID', label='Turbo', wdgt='entry', state='readonly', text='???', cmd_cb=turbo_cmd_cb, fmt_cb=turbo_fmt_cb, trace_cb=lambda k,d: turbo_trace_cb(k,d,'R'))
    ctrl.add('RFT', label='Rx FEC Type', wdgt='radio', value=OD([('Viterbi',1),('Turbo',6)]), trace_cb=lambda k,d: ft_trace_cb(k,d,'R'))
    ctrl.add('RMD', label='Rx Demod type', wdgt='radio', value=OD([('BPSK',0),('QPSK',1),('16QAM',4)]), trace_cb=lambda k,d: md_trace_cb(k,d,'R'))
    ctrl.add('RCR', label='Rx FEC Code Rate', wdgt='radio', value=OD([('1/2',2),('3/4',4),('7/8',5),('19/20',6),('21/44',1),('5/16',0)]))
    ctrl.add('RDR', label='Rx Data Rate, kbps', wdgt='spin', value=Data.spn(2.4, 9980, .01), fmt_cb=dr_fmt_cb)
    ctrl.add('RFQ', label='Rx Frequency, MHz', wdgt='spin', value=Data.spn(50, 90, .001), fmt_cb=fq_fmt_cb)
    ctrl.add('RSW', label='Rx Sweep Width, kHz', wdgt='spin', value=Data.spn(1, 32), fmt_cb=rsw_fmt_cb)
    ctrl.add('RDS', label='Rx Scrambler', wdgt='radio', value=OD([('ON',1),('OFF',0)]))
    return ctrl
Пример #43
0
 def fircalc_cb1(self):
     cmd = 'read' if self.read else 'write'
     bdata = self.bank_data()
     tdata = Data()
     tdata.add_page('taps',
                    cmds=OD((k, bdata.cmds[k]) for k in ['ntaps', 'nbits']))
     tdata.add('nbank',
               label='bank #',
               wdgt='combo',
               state='readonly',
               text='0',
               value=['0', '1'])
     dlg = Control(data=tdata, parent=self.root, title='%s taps' % cmd)
     dlg.add_buttons_ok_cancel()
     dlg.center()
     dlg.do_modal()
     if not hasattr(dlg, 'kw'):
         return
     ntaps = dlg.kw['ntaps']
     self.nbits = int(dlg.kw['nbits'])
     nbank = int(dlg.kw['nbank'])
     n = ceil(int(ntaps) / 2)
     offset = n if nbank else 0
     dev = self.data.dev
     if self.read:
         self.taps = []
         for i in range(0, n):
             self.qo.put('tap ALT.firii %s %s %d' %
                         (dev['ip_addr'], dev['altname'], i + offset))
     else:
         taps = self.get_taps_fmt(fmt=self.nbits)
         taps[n:] = []
         for i in range(0, n):
             self.qo.put(
                 'tap ALT.firii %s %s %d %s' %
                 (dev['ip_addr'], dev['altname'], i + offset, taps[i]))
     self.pb['maximum'] = self.qo.qsize()
     return True
Пример #44
0
def get_ctrl(dev):
    ctrl_buttons = OD([('Reset', reset_cb), ('Write', write_cb)])
    data = Data(buttons=ctrl_buttons, io_cb=dev_io_cb)
    data.add_page('Generator', send=True)
    data.add('freq',
             label='Frequency, MHz',
             wdgt='spin',
             value={
                 'min': 0.1,
                 'max': 12400,
                 'step': 0.1
             },
             text='1451')
    data.add('amp',
             label='Amplitude, dBm',
             wdgt='spin',
             value={
                 'min': -40,
                 'max': -6,
                 'step': 0.5
             },
             text='-40')
    return data
Пример #45
0
def get_ctrl(dev):
    ctrl = Data(name='RF', send=True, io_cb=dev_io_cb)
    ctrl.add('freq', label='Frequency, MHz', wdgt='spin', value=Data.spn(356.25, 2850, 0.01))
    ctrl.add('rfgain', label='RF Gain, dB', wdgt='spin', text='0.0', value=Data.spn(-13.5, 18, 0.5))
    ctrl.add_page('BB')
    ctrl.add('bbgain', label='Analog Gain, dB', wdgt='spin', value=Data.spn(0, 64.5, 0.5))
    get_lpf_ctrl(ctrl, 'bblpf')
    ctrl.add_page('DSP')
    ctrl.add('dsplpf', label='Filter, MHz', wdgt='combo', state='readonly', value=['10', '20'], text='10')
    ctrl.add_page('TEST')
    ctrl.add('test', label='Nothing', send=False)
    return ctrl
Пример #46
0
def get_mntr(dev):
    if 'devdata' not in dev:
        return
    if dev['devdata'].find('mod') == 0:
        mntr_mod = Data(io_cb=cmd_io_cb, send=True)
        mntr_mod.add_page('Modulator')
        '''
        mod_mntr_pages = []
        mod_mntr = OD()
        #create_alarms('FAULT', mod_mntr, fmt_cb_fault)
        mod_mntr_pages.append(dict([('cmds',mod_mntr), ('update', True)]))
        '''
        return mntr_mod
    elif dev['devdata'].find('demod') == 0:
        mntr_demod = Data(io_cb=cmd_io_cb, send=True)
        mntr_demod.add_page('demod0')
        mntr_demod.add('CD',
                       wdgt='alarm',
                       msg='Carrier detect',
                       fmt_cb=cd_fmt_cb,
                       trace_cb=alarm_trace_cb)
        mntr_demod.add('DEC',
                       wdgt='alarm',
                       msg='Decoder lock',
                       fmt_cb=dec_fmt_cb,
                       trace_cb=alarm_trace_cb)
        mntr_demod.add_page('demod1')
        mntr_demod.add('AGC',
                       label='RX Level, dBm',
                       wdgt='entry',
                       state='readonly',
                       fmt_cb=agc_roffset_fmt_cb)
        mntr_demod.add('EBNO',
                       label='Eb/NO',
                       wdgt='entry',
                       state='readonly',
                       fmt_cb=ebno_ber_fmt_cb)
        mntr_demod.add('ROFFSET',
                       label='Freq. offset, Hz',
                       wdgt='entry',
                       state='readonly',
                       fmt_cb=agc_roffset_fmt_cb)
        mntr_demod.add('BER',
                       label='Bit error rate',
                       wdgt='entry',
                       state='readonly',
                       fmt_cb=ebno_ber_fmt_cb)
        return mntr_demod
Пример #47
0
def get_ctrl(dev):
    data = Data(io_cb=dg_io_cb)
    data.add_page('Channel 1', send=True)
    data.add('FUNC', label='Function (select SIN)', wdgt='combo', state='readonly', value=['SIN','SQU','RAMP','PULS','NOIS','DC','USER'], fmt_cb=func_fmt_cb)
    data.add('FREQ', label='Frequency, kHz', wdgt='spin', value={'min':0.001, 'max':25000, 'step':0.001}, fmt_cb=freq_fmt_cb)
    data.add('VOLT:UNIT', label='Voltage units (select VPP)', wdgt='combo', state='readonly', value=['VPP','VRMS','DBM'], fmt_cb=func_fmt_cb)
    data.add('VOLT', label='Voltage, V', wdgt='spin', value={'min':0.2, 'max':5, 'step':0.1}, text='0.2', fmt_cb=volt_fmt_cb)
    data.add('VOLT:OFFS', label='Voltage offset, V', wdgt='spin', value={'min':0, 'max':5, 'step':0.1}, fmt_cb=volt_fmt_cb)
    data.add('PHAS', label='Phase, deg', wdgt='spin', value={'min':-180, 'max':180, 'step':1})
    data.add('OUTP', label='Output enable', wdgt='combo', state='readonly', value=['ON', 'OFF'])

    data.add_page('Channel 2', cmds=OD((k+':CH2',deepcopy(v)) for k,v in data.cmds.items()))
    data.add_page('DUAL')
    data.add('qfreq', label='Frequency, kHz', wdgt='spin', value={'min':0.001, 'max':25000, 'step':0.001}, send=True)
    data.add('PHAS', label='PHASE:CH2 - PHASE:CH1 = 90', send=False)

    return data
Пример #48
0
def get_ctrl(dev):
    if 'devdata' not in dev:
        return
    if dev['devdata'].find('mod') == 0:
        ctrl_mod = Data(io_cb=cmd_io_cb, send=True)
        ctrl_mod.add_page('Modulator')
        if dev['devdata'][-1] == 't':
            ctrl_mod.add('CODE',
                         label='FEC codec',
                         wdgt='radio',
                         value=['Turbo', 'Viterbi'])
        ctrl_mod.add('MOD',
                     label='TX output',
                     wdgt='radio',
                     value=['Enable', 'Disable'])
        ctrl_mod.add('MT',
                     label='Modulation',
                     wdgt='radio',
                     value=['BPSK', 'QPSK', '8PSK', '16QAM'])
        ctrl_mod.add('RATE',
                     label='Encoder',
                     wdgt='radio',
                     value=['1/2', '3/4', 'C3/4', '7/8', '19/20'])
        ctrl_mod.add('DATA',
                     label='Data rate,kbps',
                     wdgt='spin',
                     value=Data.spn(9.6, 10000, .1),
                     fmt_cb=data_fmt_cb)
        ctrl_mod.add(
            'CARRIER',
            label='Modulator Frequency,MHz',
            wdgt='spin',
            value=Data.spn(52, 176, .001),
            fmt_cb=lambda val, read=True: data_fmt_cb(val, read, coef=1000000))
        ctrl_mod.add('SCRAM',
                     label='Scrabler',
                     wdgt='radio',
                     value=['Enable', 'Disable'])
        return ctrl_mod
    if dev['devdata'].find('demod') == 0:
        ctrl_demod = Data(io_cb=cmd_io_cb, send=True)
        ctrl_demod.add_page('Demodulator')
        if dev['devdata'][-1] == 't':
            ctrl_demod.add('CODE',
                           label='FEC codec',
                           wdgt='radio',
                           value=['Turbo', 'Viterbi'])
        ctrl_demod.add('ACQ',
                       label='Acquisition',
                       wdgt='radio',
                       value=['FFT', 'SWEEP', 'FFT-SWEEP'])
        ctrl_demod.add('MT',
                       label='Demodulation',
                       wdgt='radio',
                       value=['BPSK', 'QPSK', '8PSK', '16QAM'])
        ctrl_demod.add('RATE',
                       label='Encoder',
                       wdgt='radio',
                       value=['1/2', '3/4', 'C3/4', '7/8', '19/20'])
        ctrl_demod.add('DATA',
                       label='Data rate,kbps',
                       wdgt='spin',
                       value=Data.spn(9.6, 10000, .1),
                       fmt_cb=data_fmt_cb)
        ctrl_demod.add(
            'CARRIER',
            label='Modulator Frequency,MHz',
            wdgt='spin',
            value=Data.spn(52, 176, .001),
            fmt_cb=lambda val, read=True: data_fmt_cb(val, read, coef=1000000))
        ctrl_demod.add('SWEEP',
                       label='Sweep width,khz',
                       wdgt='spin',
                       value=Data.spn(1, 512, .001),
                       fmt_cb=data_fmt_cb)
        ctrl_demod.add('DESC',
                       label='Descrabler',
                       wdgt='radio',
                       value=['Enable', 'Disable'])
        ctrl_demod.add('DIFF',
                       label='Differential decoder',
                       wdgt='radio',
                       value=['Enable', 'Disable'])
        ctrl_demod.add('DESMODE',
                       label='Descrambler mode',
                       wdgt='radio',
                       value=['IESS', 'CCITT'],
                       fmt_cb=desmode_fmt_cb)
        return ctrl_demod
Пример #49
0
def get_ctrl(dev):
    ctrl_buttons = OD([('Reset', reset_cb), ('Read', read_cb),
                       ('Write', write_cb)])
    data = Data(buttons=ctrl_buttons, io_cb=dev_io_cb)
    data.add_page('Mode', send=True)
    data.add('COMMON',
             label='Mode',
             wdgt='combo',
             state='readonly',
             value=['INDEPENDENT', 'PARALLEL', 'SERIES', 'DOUBLE'],
             fmt_cb=common_fmt_cb)
    data.add_page('Independent', send=True)
    data.add('SCH1V',
             label='Channel1, V',
             wdgt='spin',
             value=Data.spn(0, 30, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SCH1C',
             label='Channel1, A',
             wdgt='spin',
             value=Data.spn(0, 3, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SW1',
             label='Output1 enable',
             wdgt='combo',
             state='readonly',
             value=OD([('ON', '0'), ('OFF', '1')]))
    data.add('SCH2V',
             label='Channel2, V',
             wdgt='spin',
             value=Data.spn(0, 30, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SCH2C',
             label='Channel2, A',
             wdgt='spin',
             value=Data.spn(0, 3, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SW2',
             label='Output2 enable',
             wdgt='combo',
             state='readonly',
             value=OD([('ON', '0'), ('OFF', '1')]))
    data.add_page('Parallel', send=True)
    data.add('SPARAV',
             label='Output, V',
             wdgt='spin',
             value=Data.spn(0, 30, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SPARAC',
             label='Output, A',
             wdgt='spin',
             value=Data.spn(0, 6, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SW1',
             label='Output enable',
             wdgt='combo',
             state='readonly',
             value=OD([('ON', '0'), ('OFF', '1')]))
    data.add_page('Series', send=True)
    data.add('SSERIV',
             label='Output, V',
             wdgt='spin',
             value=Data.spn(0, 60, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SSERIC',
             label='Output, A',
             wdgt='spin',
             value=Data.spn(0, 3, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SW1',
             label='Output enable',
             wdgt='combo',
             state='readonly',
             value=OD([('ON', '0'), ('OFF', '1')]))
    data.add_page('PlusMinus', send=True)
    data.add('SDUAL1V',
             label='Output1, V',
             wdgt='spin',
             value=Data.spn(0, 30, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SDUAL1C',
             label='Output1, A',
             wdgt='spin',
             value=Data.spn(0, 3, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SDUAL2V',
             label='Output2, V',
             wdgt='spin',
             value=Data.spn(0, 30, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SDUAL2C',
             label='Output2, A',
             wdgt='spin',
             value=Data.spn(0, 3, .01),
             fmt_cb=odp_fmt_cb)
    data.add('SW1',
             label='Output enable',
             wdgt='combo',
             state='readonly',
             value=OD([('ON', '0'), ('OFF', '1')]))
    return data
Пример #50
0
def get_ctrl(dev):
    ctrl = Data(name='Settings', send=True, io_cb=dev_io_cb)
    ctrl.add('channel', label='Channel selection', wdgt='radio', value=OD([('Channel A', '1'), ('Channel B', '0')]))
    ctrl.add_page('System')
    ctrl.add('commit', label='EFC commit enable', wdgt='combo', state='readonly', value=['ON', 'OFF'], text='ON')
    return ctrl
Пример #51
0
def get_ctrl(dev):
    data = Data(io_cb=dg_io_cb)
    data.add_page('Channel 1', send=True)
    data.add('FUNC',
             label='Function (select SIN)',
             wdgt='combo',
             state='readonly',
             value=['SIN', 'SQU', 'RAMP', 'PULS', 'NOIS', 'DC', 'USER'],
             fmt_cb=func_fmt_cb)
    data.add('FREQ',
             label='Frequency, kHz',
             wdgt='spin',
             value={
                 'min': 0.001,
                 'max': 25000,
                 'step': 0.001
             },
             fmt_cb=freq_fmt_cb)
    data.add('VOLT:UNIT',
             label='Voltage units (select VPP)',
             wdgt='combo',
             state='readonly',
             value=['VPP', 'VRMS', 'DBM'],
             fmt_cb=func_fmt_cb)
    data.add('VOLT',
             label='Voltage, V',
             wdgt='spin',
             value={
                 'min': 0.2,
                 'max': 5,
                 'step': 0.1
             },
             text='0.2',
             fmt_cb=volt_fmt_cb)
    data.add('VOLT:OFFS',
             label='Voltage offset, V',
             wdgt='spin',
             value={
                 'min': 0,
                 'max': 5,
                 'step': 0.1
             },
             fmt_cb=volt_fmt_cb)
    data.add('PHAS',
             label='Phase, deg',
             wdgt='spin',
             value={
                 'min': -180,
                 'max': 180,
                 'step': 1
             })
    data.add('OUTP',
             label='Output enable',
             wdgt='combo',
             state='readonly',
             value=['ON', 'OFF'])

    data.add_page('Channel 2',
                  cmds=OD(
                      (k + ':CH2', deepcopy(v)) for k, v in data.cmds.items()))
    data.add_page('DUAL')
    data.add('qfreq',
             label='Frequency, kHz',
             wdgt='spin',
             value={
                 'min': 0.001,
                 'max': 25000,
                 'step': 0.001
             },
             send=True)
    data.add('PHAS', label='PHASE:CH2 - PHASE:CH1 = 90', send=False)

    return data
Пример #52
0
def get_mntr(dev):
    mntr = Data(io_cb=dev_io_cb)
    mntr.add_page('mntr', send=True)
    mntr.add('synth', wdgt='alarm', trace_cb=alarm_trace_cb, fmt_cb=synth_fmt_cb, msg='Synthesizer status')
    mntr.add('uout', wdgt='entry', state='readonly', msg='Uout, V')
    return mntr
Пример #53
0
 def save_fmt_data(self):
     bdata = self.bank_data()
     fdata = Data()
     fdata.add_page('fmt1',
                    cmds=OD((k, bdata.cmds[k]) for k in ['fmt', 'nbits']))
     return fdata
Пример #54
0
class Firfilt(Control):
    def __init__(self, dev=None, parent=None, title='FIR calc'):
        data = Data()
        self.banks = []
        self.fileext = 'txt'
        Control.__init__(self, data=data, dev=dev, parent=parent, title=title)

    def init_layout(self):
        self.init_common_layout()
        self.init_custom_layout()

    def add_menu_bank(self):
        menu = OD()
        mb = OD()
        mb['Add'] = lambda *args: self.bank_add()
        mb['Delete'] = lambda *args: self.bank_del()
        menu['Bank'] = mb
        return self.add_menus(menu)

    def update_menu_bank(self):
        newstate = tk.NORMAL if len(self.data) > 1 else tk.DISABLED
        self.menu_bank['Bank']['m'].entryconfig(1, state=newstate)

    def init_common_layout(self):
        self.add_menu_file(file_save=False)
        self.menu_bank = self.add_menu_bank()
        self.fl = tk.Frame(self.frame)
        self.fl.pack(fill=tk.BOTH, expand=1, side=tk.LEFT)
        self.fr = tk.Frame(self.frame)
        self.fr.pack(fill=tk.BOTH, expand=0, side=tk.RIGHT)
        self.pdata = Data()
        self.ptabs = ttk.Notebook(self.fl)
        self.ptabs.pack(fill=tk.BOTH, expand=1, padx=5, pady=5)
        self.pdata.bind_tab_cb(self.ptabs, self.plot_update)
        self.tabs = ttk.Notebook(self.fr)
        self.tabs.pack(fill=tk.BOTH, expand=1, padx=5, pady=5)
        self.bank_add()
        self.data.bind_tab_cb(self.tabs, self.plot_update)

    def plot_add(self, name, plot_init, plot_upd, subplots=2):
        fp = tk.Frame(self.ptabs)
        self.ptabs.add(fp, text=name, sticky=tk.NSEW)
        f = Figure(figsize=(5,4), dpi=100)
        if subplots == 1:
            f.add_subplot(111)
        if subplots == 2:
            f.add_subplot(211)
            f.add_subplot(212)
            f.subplots_adjust(hspace=0.5)
        plot_init(f)
        canvas = FigureCanvasTkAgg(f, master=fp)
        canvas.show()
        canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
        toolbar = NavigationToolbar2TkAgg(canvas, fp)
        toolbar.update()
        canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
        self.pdata.add_page(name)
        self.pdata.add(name, fig=f, init=plot_init, upd=plot_upd)
        return f

    def plot_init_impz(self, fig):
        ax1, ax2 = fig.get_axes()
        taps = self.get_taps_fmt()
        for ax in [ax1,ax2]:
            ax.clear()
            ax.grid()
            if len(taps) > 1:
                ax.set_xlim(0, len(taps)-1)
        ax1.set_ylabel('Amplitude')
        ax1.set_xlabel(r'n (samples)')
        ax1.set_title(r'Impulse response')
        ax2.set_ylabel('Amplitude')
        ax2.set_xlabel(r'n (samples)')
        ax2.set_title(r'Step response')

    def plot_upd_impz(self, fig, taps, a=1):
        if not signal:
            return
        self.plot_init_impz(fig)
        ax1, ax2 = fig.get_axes()
        l = len(taps)
        impulse = pylab.repeat(0.,l); impulse[0] =1.
        x = arange(0,l)
        response = signal.lfilter(taps,a,impulse)
        ax1.stem(x, response)
        step = pylab.cumsum(response)
        ax2.stem(x, step)

    @taps_dec
    def plot_update(self, *args):
        n = self.ptabs.tabs().index(self.ptabs.select())
        cmds = self.data.cmds
        taps = cmds.taps
        pcmds = self.pdata.cmds
        p = pcmds[pcmds.name]
        p.upd(p.fig, taps)
        pylab.draw()
        p.fig.canvas.draw()

    def exit_cb(self, *args):
        self.root.withdraw()
        self.root.destroy()
        sys.exit(0)

    def bank_data(self):
        data = Data(name='Bank %d' % len(self.data))
        return data

    def bank_add(self):
        bdata = self.bank_data()
        self.data.add_page('Bank %d' % len(self.data), bdata.cmds)
        cmds = self.data.cmds
        self.add_tab(cmds, rowconfigure=False)
        self.tabs.select(cmds.tabid)
        self.update_menu_bank()
        r = len(cmds)
        btn = tk.Button(cmds.f, text='Design filter', command=self.design_filter)
        btn.grid(row=r, column=0, columnspan=2, sticky=tk.NSEW)
        f1 = tk.Frame(cmds.f, borderwidth=5)
        f1.grid(row=r+1, column=0, columnspan=2, sticky=tk.NSEW)
        cmds.f.rowconfigure(r+1, weight=1)
        cmds.lb = tk.Listbox(f1)
        self.add_widget_with_scrolls(f1, cmds.lb)

    def bank_del(self):
        if len(self.data) <= 1:
            return
        cmds = self.data.cmds
        self.tabs.forget(cmds.f)
        self.data.remove_page()
        self.update_menu_bank()
        i = 0
        for p in self.data:
            self.tabs.tab(p.tabid, text='Bank %d'%i)
            i = i + 1

    @taps_dec
    def bank_update(self, page=None):
        taps = self.get_taps_fmt()
        if not taps:
            return
        lb = self.data.cmds.lb
        lb.delete(0, tk.END)
        for t in taps:
            lb.insert(tk.END, t)

    def design_filter(self):
        return

    def get_int_taps(self, taps, nbits):
        return ['%d' % round(t*(1 << (nbits - 1))) for t in taps]

    @taps_dec
    def get_taps_fmt(self, fmt=None):
        taps = self.data.cmds.taps
        if fmt == None:
            fmt = self.data.get_value('fmt')
            if fmt == 'int':
                fmt = self.data.get_value('nbits')
        if fmt in ['double', 'dbl']:
            return ['%f' % t for t in taps]
        elif type(fmt) == str:
            try:
                nbits = int(fmt.replace('b', ''))
            except:
                return
        elif type(fmt) == int:
            nbits = fmt
        else:
            print('!!! bad fmt: ', fmt)
        return self.get_int_taps(taps, nbits)