From 0e0262a3af79b23d09245d718071de9aedbe6208 Mon Sep 17 00:00:00 2001
From: wendtalexander <wendtalexander@protonmail.com>
Date: Fri, 20 Sep 2024 11:08:32 +0200
Subject: [PATCH] example of reading input

---
 pyrelacs/repros/input.py | 48 +++++++++-------------------------------
 1 file changed, 11 insertions(+), 37 deletions(-)

diff --git a/pyrelacs/repros/input.py b/pyrelacs/repros/input.py
index 51577d2..8728f41 100644
--- a/pyrelacs/repros/input.py
+++ b/pyrelacs/repros/input.py
@@ -1,54 +1,28 @@
-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
+from .repos import Repos
 
 log = config_logging()
 
 
-class ReadData:
+class ReadData(Repos):
     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")
-        self.daq_device = uldaq.DaqDevice(devices[0])
-        self.daq_device.connect()
-        log.debug("Connected")
+        super().__init__()
 
-    def read_analog_in(self, channel: Annotated[Optional[int], typer.Argument()] = 0):
+    def analog_in(self) -> None:
         # Get the Ananlog In device and Analog Info
-        ai_device = self.daq_device.get_ai_device()
-        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,
+        data = self.read_analog_daq(
+            [0, 0],
+            10,
+            3000.0,
         )
-        ai_device.scan_wait(uldaq.WaitType.WAIT_UNTIL_DONE, timeout=-1)
-        log.debug("Scanning")
-
-        self.daq_device.disconnect()
-        self.daq_device.release()
-        plt.plot(buf)
+        plt.plot(data)
         plt.show()
+        self.disconnect_dac()
 
 
 if __name__ == "__main__":
     daq_input = ReadData()
-    typer.run(daq_input.read_analog_in)
+    daq_input.analog_in()