diff --git a/pyrelacs/input.py b/pyrelacs/input.py index 12a341a..c1515bc 100644 --- a/pyrelacs/input.py +++ b/pyrelacs/input.py @@ -1,12 +1,17 @@ +from typing import Optional + import uldaq from IPython import embed import typer +from typing_extensions import Annotated +import matplotlib.pyplot as plt from pyrelacs.util.logging import config_logging log = config_logging() -class ReadData(): + +class ReadData: def __init__(self) -> None: devices = uldaq.get_daq_device_inventory(uldaq.InterfaceType.USB) log.debug(f"Found daq devices {len(devices)}, connecting to the first one") @@ -14,16 +19,35 @@ class ReadData(): self.daq_device.connect() log.debug("Connected") - def read_analog_in(self): + def read_analog_in(self, channel: Annotated[Optional[int], typer.Argument()] = 0): # Get the Ananlog In device and Analog Info ai_device = self.daq_device.get_ai_device() - ai_info = self.daq_device.get_info() - - - - - - -if __name__ == '__main__': - daq_input = Input_daq() - + ai_info = ai_device.get_info() + log.debug( + f"Analog info,\n Channels available {ai_info.get_num_chans()}, \n Max Samplerate: {ai_info.get_max_scan_rate()}" + ) + buffer_len = 1_000_000 + buf = uldaq.create_float_buffer(1, buffer_len) + + er = ai_device.a_in_scan( + 1, + 1, + uldaq.AiInputMode.SINGLE_ENDED, + uldaq.Range.BIP10VOLTS, + buffer_len, + 500_000, + uldaq.ScanOption.DEFAULTIO, + uldaq.AInScanFlag.DEFAULT, + data=buf, + ) + ai_device.scan_wait(uldaq.WaitType.WAIT_UNTIL_DONE, timeout=-1) + log.debug("Scanning") + embed() + + self.daq_device.disconnect() + self.daq_device.release() + + +if __name__ == "__main__": + daq_input = ReadData() + typer.run(daq_input.read_analog_in)