Непрерывный входной сигнал чтения - PullRequest
0 голосов
/ 02 апреля 2020

Я настраиваю некоторые базовые c аппаратные интерфейсы, используя NI DAQ (USB 6259), и хочу прочитать канал так же, как осциллограф прочитал бы вход (например, синусоидальную волну в этом примере). Я только учу Python, так что я надеюсь, что это базовый c вопрос.

Вот мой код:

# dynamic graph with input from NI USB-6259 sine wave from signal generator

import scipy.stats as stats
import matplotlib.pyplot as plt
import numpy as np
import time
import nidaqmx
%autoreload 

#initialise the graph and settings
fig, ax = plt.subplots(figsize=(10, 5))
plt.ion()

fig.show()
fig.canvas.draw()

for i in range(0,100):
    with nidaqmx.Task() as task:
        task.ai_channels.add_ai_voltage_chan("Dev1/ai0")
        #task.ai_channels.add_ai_voltage_chan("Dev1/ai1")
        data = task.read(number_of_samples_per_channel=1)
        ax.plot(i, data[0],  '.', color='black', ms=5)
        fig.canvas.draw()   # draw
        i = i+1

Синусоидальная диаграмма

, которая создает синусоидальный график. Ось X в основном расширяется до тех пор, пока 100 итераций чтения канала не будут завершены, и постепенно строит мой график. 100 итераций произвольны, но, по крайней мере, позволили мне увидеть поступающие данные. Я хотел бы, чтобы это выполнялось бесконечно, например, до тех пор, пока не будут соблюдены какие-то другие критерии или ввод pu sh или что-то в этом роде. Сложность состоит в том, что диапазон оси X просто масштабируется все больше и больше, тогда как я хотел бы, чтобы размер окна данных был фиксированным, а также просто перемещался по мере эволюции оси X - точно так же, как осциллограф. Я пробовал довольно много способов через поиск в Google, но пока не удалось. Я уверен, что это решенная проблема, поэтому любые указатели noob были бы хороши. В конечном итоге я планирую отправить сигнал DAQ для управления гальваническими зеркалами.

...