From cd414da6deb62cad1391b19c68593eca417764a2 Mon Sep 17 00:00:00 2001 From: wendtalexander Date: Fri, 20 Sep 2024 17:37:22 +0200 Subject: [PATCH] adding sending analaog output to repo function --- pyrelacs/repros/repos.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/pyrelacs/repros/repos.py b/pyrelacs/repros/repos.py index 0de3d1b..2fc7c60 100644 --- a/pyrelacs/repros/repos.py +++ b/pyrelacs/repros/repos.py @@ -1,4 +1,6 @@ from ctypes import Array, c_double +from typing import Union +import numpy.typing as npt import uldaq import numpy as np @@ -51,11 +53,43 @@ class Repos: data=data_analog_input, ) ai_device.scan_wait(uldaq.WaitType.WAIT_UNTIL_DONE, timeout=-1) - log.info(f"Sampled with {er}") log.debug("Scanning") return data_analog_input + def send_analog_dac( + self, + data: Union[list, npt.NDArray], + channels: list[int], + duration: int, + samplerate: float, + AiInputMode: uldaq.AiInputMode = uldaq.AiInputMode.SINGLE_ENDED, + Range: uldaq.Range = uldaq.Range.BIP10VOLTS, + ScanOption: uldaq.ScanOption = uldaq.ScanOption.DEFAULTIO, + AInScanFlag: uldaq.AOutScanFlag = uldaq.AOutScanFlag.DEFAULT, + ) -> Array[c_double]: + + buffer = c_double * len(data) + data_analog_output = buffer(*data) + + log.debug(f"Created C_double data {data_analog_output}") + ao_device = self.daq_device.get_ao_device() + ao_info = ao_device.get_info() + + err = ao_device.a_out_scan( + channels[0], + channels[1], + Range, + int(len(data)), + samplerate, + ScanOption, + AInScanFlag, + data_analog_output, + ) + ao_device.scan_wait(uldaq.WaitType.WAIT_UNTIL_DONE, 11) + + return data_analog_output + def disconnect_dac(self): self.daq_device.disconnect() self.daq_device.release()