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()
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))
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))
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()
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