Генерация непрерывного сигнала с помощью Matlab и NI-устройства - PullRequest
0 голосов
/ 02 октября 2018

Я работаю над передатчиком с Ni Daq, и у меня есть небольшая проблема.Я генерирую период моего сигнала, и я получаю его с выходом очереди, и я помещаю слушателя, чтобы снова вызвать выходной сигнал очереди, но этот процесс занимает 0,1 секунды (вызовите очередь снова), так что это большая задержка для 1 кГцнапример, сигнал, как я могу уменьшить эту задержку.

Вот мой код:

clc;
clear all;
clc;

s = daq.createSession('ni');
s.addAnalogOutputChannel('Dev1',0,'Voltage');
s.IsContinuous = true;
fs=1000;
quality= 15;
fd=48000;
fs= fd * quality;
s.Rate = fs;
n=1;
A= 2;
y1=0;
y2=0;
wo= 2*pi*(fd/fs);
x=A*sin(wo);
pcos= 2*cos(wo);
out = [];
tic();
while(n<=quality),
    y= ((x)+(pcos*y1)-(y2));
    y2=y1;
    y1=y;
    out(n,1) = y+2.1;
    x=0;
    n=n+1;
end
toc()
plot(out,'*r');
grid on;
s.NotifyWhenScansQueuedBelow = lim;
lh = addlistener(s,'DataRequired', ...
        @(src,event) src.queueOutputData(out)); % Here is the delay
queueOutputData(s,out) 
startBackground(s);
...