В этом примере показано, как сохранить данные, полученные в фоновом режиме к файлу. Используйте основанный на сеансе интерфейс, и получает команды неблокирования использования данных об аналоговом входе. Если вы используете устаревший интерфейс, обратитесь к "Регистрации Данных К Диску" в списке примеров Аналогового входа
Создайте сеанс и добавьте два канала аналогового входа с Voltage тип измерения. Поскольку этот пример использует Национальное устройство сбора данных Instruments® X Series, NI карта PCIe-6363 с ID Dev1.
d = daq.getDevices; s = daq.createSession('ni'); addAnalogInputChannel(s,'Dev1',0:1, 'Voltage'); s
s =
Data acquisition session using National Instruments hardware:
Will run for 1 second (1000 scans) at 1000 scans/second.
Number of channels: 2
index Type Device Channel MeasurementType Range Name
----- ---- ------ ------- --------------- ---------------- ----
1 ai Dev1 ai0 Voltage (Diff) -10 to +10 Volts
2 ai Dev1 ai1 Voltage (Diff) -10 to +10 Volts
Создайте файл log.bin и откройте его. Вы запишете полученные данные в этот файл в двоичном формате. Сохраните идентификатор файла в переменной fid1.
fid1 = fopen('log.bin','w');
Когда вы получаете данные в фоновом режиме, можно обеспечить направления сеанса приобретения, чтобы обработать входящие данные, с помощью прослушивателей и событий. DataAvailable событие имеет место, когда определенный объем данных доступен для сеанса. Прослушиватель может ответить на то событие и инициировать заданную функцию.
Используйте addlistener добавить анонимную функцию в сеанс. Эта функция вызвана каждый раз DataAvailable событие имеет место и регистрирует полученные данные к файлу. По умолчанию этот прослушиватель называется 10 раз в секунду.
Анонимная функция logData требует трех входных параметров:
src- источник события
event- имя события
fid1- идентификатор файла для регистрации данных
Когда вы добавляете прослушиватель, указатель на прослушиватель возвращен. Сохраните указатель в переменной lh и удалите его позже.
lh = addlistener(s,'DataAvailable',@(src, event)logData(src, event, fid1));
Получайте данные постоянно в не блокирующемся режиме.
s.IsContinuous = true; s.startBackground;
Непрерывное фоновое приобретение запускается параллельно с другими операциями на MATLAB®. Можно выполнить команды MATLAB, в то время как приобретение запускается. В целях этого примера симулируйте долгий расчет путем вызова pause.
pause(5);
Явным образом вызовите остановку после 5 секунд, чтобы закончить фоновое приобретение и удалить прослушиватель.
Закройте файл журнала.
s.stop; delete(lh); fclose(fid1);
Считайте файл журнала.
Загрузите содержимое файла как 3 матрицы столбца в data.
Закройте файл журнала.
fid2 = fopen('log.bin','r'); [data,count] = fread(fid2,[3,inf],'double'); fclose(fid2);
Присвойте каждый столбец data к следующим переменным:
t- время
ch- образуйте канал 0 и канал 1
Постройте ch против t.
t = data(1,:); ch = data(2:3,:); plot(t, ch);

Создайте многострочный функциональный logData и сохраните в отдельном файле MATLAB.
type logData.m
function logData(src, evt, fid) % Add the time stamp and the data values to data. To write data sequentially, % transpose the matrix. % Copyright 2011 The MathWorks, Inc. data = [evt.TimeStamps, evt.Data]' ; fwrite(fid,data,'double'); end