diff --git a/examples/analog_in/voltage_acq_int_clk_plot_wfm.py b/examples/analog_in/voltage_acq_int_clk_plot_wfm.py new file mode 100644 index 000000000..913e40e5f --- /dev/null +++ b/examples/analog_in/voltage_acq_int_clk_plot_wfm.py @@ -0,0 +1,31 @@ +"""Example of generating visualizations for acquired data using the AnalogWaveform data type. + +This example demonstrates how to plot the acquired waveform data. +This example requires the matplotlib module. +Run 'pip install matplotlib' to install the matplotlib module. +""" + +import os + +os.environ["NIDAQMX_ENABLE_WAVEFORM_SUPPORT"] = "1" + +import matplotlib.pyplot as plot # noqa: E402 # Must import after setting environment variable + +import nidaqmx # noqa: E402 +from nidaqmx.constants import READ_ALL_AVAILABLE, AcquisitionType # noqa: E402 + +with nidaqmx.Task() as task: + task.ai_channels.add_ai_voltage_chan("Dev1/ai0") + task.timing.cfg_samp_clk_timing(1000.0, sample_mode=AcquisitionType.FINITE, samps_per_chan=50) + + waveform = task.read_waveform(READ_ALL_AVAILABLE) + + timestamps = list(waveform.timing.get_timestamps(0, waveform.sample_count)) + time_offsets = [(ts - timestamps[0]).total_seconds() for ts in timestamps] + plot.plot(time_offsets, waveform.scaled_data) + plot.xlabel("Seconds") + plot.ylabel(waveform.units) + plot.title(waveform.channel_name) + plot.grid(True) + + plot.show() diff --git a/examples/analog_out/gen_voltage_wfm_int_clk.py b/examples/analog_out/gen_voltage_wfm_int_clk.py index f823c7408..065deebb9 100644 --- a/examples/analog_out/gen_voltage_wfm_int_clk.py +++ b/examples/analog_out/gen_voltage_wfm_int_clk.py @@ -5,19 +5,27 @@ sample clock. """ -import nidaqmx -from nidaqmx.constants import AcquisitionType +import os + +os.environ["NIDAQMX_ENABLE_WAVEFORM_SUPPORT"] = "1" + +from nitypes.waveform import AnalogWaveform # noqa: E402 + +import nidaqmx # noqa: E402 # Must import after setting environment variable +from nidaqmx.constants import AcquisitionType # noqa: E402 with nidaqmx.Task() as task: - data = [] total_samples = 1000 task.ao_channels.add_ao_voltage_chan("Dev1/ao0") task.timing.cfg_samp_clk_timing( 1000.0, sample_mode=AcquisitionType.FINITE, samps_per_chan=total_samples ) - data = [5.0 * i / total_samples for i in range(total_samples)] - number_of_samples_written = task.write(data, auto_start=True) + waveform = AnalogWaveform(sample_count=total_samples) + waveform.raw_data[:] = [5.0 * i / total_samples for i in range(total_samples)] + waveform.units = "Volts" + + number_of_samples_written = task.write(waveform, auto_start=True) print(f"Generating {number_of_samples_written} voltage samples.") task.wait_until_done() task.stop() diff --git a/examples/digital_out/cont_gen_dig_port_int_clk_wfm.py b/examples/digital_out/cont_gen_dig_port_int_clk_wfm.py new file mode 100644 index 000000000..f3ed016c4 --- /dev/null +++ b/examples/digital_out/cont_gen_dig_port_int_clk_wfm.py @@ -0,0 +1,29 @@ +"""Example for generating digital signals using the DigitalWaveform data type. + +This example demonstrates how to output a continuous digital +pattern using the DAQ device's clock. +""" + +import os + +os.environ["NIDAQMX_ENABLE_WAVEFORM_SUPPORT"] = "1" + +from nitypes.waveform import DigitalWaveform # noqa: E402 + +import nidaqmx # noqa: E402 # Must import after setting environment variable +from nidaqmx.constants import AcquisitionType, LineGrouping # noqa: E402 + +with nidaqmx.Task() as task: + waveform = DigitalWaveform(sample_count=100, signal_count=16) + for i in range(100): + for j in range(16): + waveform.data[i][j] = (i >> j) & 1 + + task.do_channels.add_do_chan("Dev1/port0", line_grouping=LineGrouping.CHAN_FOR_ALL_LINES) + task.timing.cfg_samp_clk_timing(1000.0, sample_mode=AcquisitionType.CONTINUOUS) + task.write(waveform) + task.start() + + input("Generating voltage continuously. Press Enter to stop.\n") + + task.stop()