NI acquisition#

[1]:
import os
import sys
sys.path.insert(0, os.path.realpath('../'))
[2]:
import LDAQ
[3]:
# Create a NI task:
# (if you defined a task in NI MAX you can skip this step)
task_in = LDAQ.NITask("input_task", sample_rate=25600)
task_in # prints available devices, here we will use virtual device predefined in NI MAX
[3]:
Task name: input_task
Connected devices:
        (0) - VirtualDevice
        (1) - VirtualDevice2
Channels: []
[4]:
# add channels to the task:
task_in.add_channel(channel_name="Voltage", device_ind=0, channel_ind=0, sensitivity=None, sensitivity_units=None, units="V", scale=1., min_val=-3, max_val=3)
task_in.add_channel(channel_name="Acceleration", device_ind=0, channel_ind=1, sensitivity=100, sensitivity_units="mV/g", units="g", min_val=-4, max_val=4)
[5]:
# use created input task in acquisition source:
# (if you created a task using NI MAX, you can just use the task name in a string as the first argument)
acq_ni = LDAQ.national_instruments.NIAcquisition(task_name=task_in, acquisition_name="NI")
[6]:
# create core object and add acquisition source:
ldaq = LDAQ.Core(acquisitions=[acq_ni])
# set trigger:
ldaq.set_trigger(
    source="NI",
    channel="Voltage",
    level=1.5,
    duration=1.0,
    presamples=1000,
    trigger_type='abs'
)
# run acquisition:
ldaq.run()
+--------+-------------------------------------------------+
| HOTKEY |                   DESCRIPTION                   |
+--------+-------------------------------------------------+
|   s    | Start the measurement manually (ignore trigger) |
+--------+-------------------------------------------------+
|   q    |              Stop the measurement               |
+--------+-------------------------------------------------+

Waiting for trigger...
triggered.
        Recording...Measurement finished.
[7]:
# Retrieve the measurement data:
measurement = ldaq.get_measurement_dict()
measurement
[7]:
{'NI': {'time': array([0.00000000e+00, 3.90625000e-05, 7.81250000e-05, ...,
         9.99882812e-01, 9.99921875e-01, 9.99960938e-01]),
  'channel_names': ['Voltage', 'Acceleration'],
  'data': array([[-1.29528113, -1.95764911],
         [-1.20128996, -2.0144583 ],
         [-1.34819754, -1.87521588],
         ...,
         [-2.6492937 , -3.15299053],
         [-2.51784757, -3.1706037 ],
         [-2.64967457, -3.19743772]]),
  'sample_rate': 25600}}