Exemple #1
0
 def read(self, context):
     task = AnalogInputTask(_task_name(context))
     minimum = context.minimum if context.minimum is not None else -10
     maximum = context.maximum if context.maximum is not None else 10
     task.create_voltage_channel(_phys_channel(context),
                                 terminal="rse",
                                 min_val=minimum,
                                 max_val=maximum)
     task.start()
     raw = task.read(100)
     task.stop()
     return np.average(raw).item()
Exemple #2
0
def runner(parser, options, args):
    task = AnalogInputTask()

    print('Created AnalogInputTask %s (task.value=%s)' % (task, task.value))

    args, kws = get_method_arguments('create_voltage_channel', options)
    print('create_voltage_channel', kws)
    task.create_voltage_channel(**kws)

    channels = task.get_names_of_channels()
    if not channels:
        print('No channels specified')
        return

    args, kws = get_method_arguments('configure_timing_sample_clock', options)
    print('configure_timing_sample_clock', kws)
    clock_rate = kws.get('rate', 1000.0)
    task.configure_timing_sample_clock(**kws)
    print('task')
    task.start()
    args, read_kws = get_method_arguments('ai_read', options)
    kws = read_kws
    fill_mode = kws.get('fill_mode', 'group_by_scan_number')
    print('read', read_kws)

    if options.ai_task == 'show':
        from nidaqmx.wxagg_plot import animated_plot
        start_time = time.time()

        def func(task=task):
            current_time = time.time()
            data = task.read(**read_kws)
            if fill_mode == 'group_by_scan_number':
                data = data.T
            tm = np.arange(data.shape[-1], dtype=float) / clock_rate + (
                current_time - start_time)
            return tm, data, channels

        try:
            animated_plot(func,
                          1000 * (task.samples_per_channel / clock_rate + 0.1))
        finally:
            del task
        return
    elif options.ai_task == 'print':
        try:
            data = task.read(**kws)
        finally:
            del task
        print(data)
    else:
        del task
        raise NotImplementedError(repr(options.ai_task))
Exemple #3
0
 def read(self, context):
     task = AnalogInputTask(_task_name(context))
     minimum = context.minimum if context.minimum is not None else -10
     maximum = context.maximum if context.maximum is not None else 10
     task.create_voltage_channel(_phys_channel(context),
                                 terminal="rse",
                                 min_val=minimum,
                                 max_val=maximum)
     task.start()
     raw = task.read(100)
     task.stop()
     return np.average(raw).item()
Exemple #4
0
def runner (parser, options, args):
    task = AnalogInputTask()

    print('Created AnalogInputTask %s (task.value=%s)' % (task, task.value))

    args, kws = get_method_arguments('create_voltage_channel', options)
    print('create_voltage_channel', kws)
    task.create_voltage_channel (**kws)

    channels = task.get_names_of_channels()
    if not channels:
        print('No channels specified')
        return

    args, kws = get_method_arguments('configure_timing_sample_clock', options)
    print('configure_timing_sample_clock', kws)
    clock_rate = kws.get('rate', 1000.0)
    task.configure_timing_sample_clock(**kws)
    print('task')
    task.start()
    args, read_kws = get_method_arguments('ai_read', options)
    kws = read_kws
    fill_mode = kws.get ('fill_mode', 'group_by_scan_number')
    print('read', read_kws)

    if options.ai_task=='show':
        from nidaqmx.wxagg_plot import animated_plot
        start_time = time.time()
        def func(task=task):
            current_time = time.time()
            data = task.read(**read_kws)
            if fill_mode == 'group_by_scan_number':
                data = data.T
            tm = np.arange(data.shape[-1], dtype=float)/clock_rate + (current_time - start_time)
            return tm, data, channels
        try:
            animated_plot(func, 1000*(task.samples_per_channel/clock_rate+0.1))
        finally:
            del task
        return
    elif options.ai_task=='print':
        try:
            data = task.read (**kws)
        finally:
            del task
        print(data)
    else:
        del task
        raise NotImplementedError (repr(options.ai_task))
Exemple #5
0
class Sensors:

    def __init__(self, channels, minv=-10.0, maxv=10.0, srate=1000, snum=1000):
        self._sensor = AnalogInputTask()
        self._sensor.create_voltage_channel(channels, min_val=minv,
            max_val=maxv)
        self._sensor.configure_timing_sample_clock(rate=srate,
            sample_mode='finite', samples_per_channel=snum)

    def start(self):
        self._sensor.start()

    def stop(self):
        self._sensor.stop()

    def wait_until_done(self, timeout = 10):
        self._sensor.wait_until_done(timeout)

    def read(self):
        return self._sensor.read()
Exemple #6
0
def readPressureAndTemperature(plot=False):
	RATE = 250.0
	DURATION = 5.0
	NUMBER_OF_SAMPLES = (int)(math.ceil(DURATION*RATE))

	task = AnalogInputTask()
	
	#Ion pump
	task.create_voltage_channel('Dev2/ai2', terminal = 'rse', min_val=-1.0, max_val=1.0)
	#Turbo temperature
	task.create_voltage_channel('Dev2/ai4', terminal = 'rse', min_val=0, max_val=1.0)

	task.configure_timing_sample_clock(rate = RATE)
	#print task.get_convert_clock_rate()
	task.set_convert_clock_rate(1000)
	#print task.get_convert_clock_rate()
	task.start()

	#print task.get_ai_convert_max_rate()

	data = task.read(NUMBER_OF_SAMPLES, fill_mode='group_by_channel')
	del task

	if plot:
		from pylab import plot, show
		x = np.arange(0,DURATION,1.0/RATE)
		plot (x,data[0],'ro')
		plot (x,data[1],'bo')
		show ()

	
	a = np.sum(data[0])/NUMBER_OF_SAMPLES
	ionpump = math.exp(a * 1000 * 0.124) * 2.9741e-9
	
	a = np.sum(data[1])/NUMBER_OF_SAMPLES
	turbo_temp = (a-0.4)/0.0195

	return(ionpump,turbo_temp)
    print()
    data = task.read(samples,
                     samples_per_channel=samples,
                     fill_mode='group_by_scan_number')
    print('Acquired %s samples' % (len(data)))
    print(data[:10])
    return 0


def callback_done(task, status, callback_data):
    print('callback_done, status=', status)
    return 0


#task.register_every_n_samples_event(callback, samples = 100)
#task.register_done_event(callback_done)

task.start()

if 1:
    from pylab import plot, show
    data = task.read(3000, fill_mode='group_by_channel')
    plot(data)
    show()

input('Acquiring samples continuously. Press Enter to interrupt..')

#task.stop() # gives 'pure virtual method called' abort message

del task
task.configure_timing_sample_clock(rate = 1000.0)

def callback (task, event_type, samples, callback_data):
    print()
    data = task.read(samples, samples_per_channel=samples,
                     fill_mode='group_by_scan_number')
    print('Acquired %s samples' % (len (data)))
    print(data[:10])
    return 0

def callback_done(task, status, callback_data):
    print('callback_done, status=',status)
    return 0

#task.register_every_n_samples_event(callback, samples = 100)
#task.register_done_event(callback_done)

task.start()

if 1:
    from pylab import plot, show
    data = task.read(3000, fill_mode='group_by_channel')
    plot (data)
    show ()

input('Acquiring samples continuously. Press Enter to interrupt..')

#task.stop() # gives 'pure virtual method called' abort message

del task