2
0
forked from awendt/pyrelacs

adding sending analaog output to repo function

This commit is contained in:
wendtalexander 2024-09-20 17:37:22 +02:00
parent 0e0262a3af
commit cd414da6de

View File

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