read

Считайте данные, полученные оборудованием

Описание

пример

scanData = read(d) читает один входной скан из всех входных каналов на DataAcquisition и возвращает расписание в scanData.

scanData = read(d,span) читает промежуток входных сканов от интерфейса DataAcquisition и возвращает расписание в scanData. Можно задать span как длительность, много сканов или "all".

  • Если DataAcquisition не запускает и не имеет никаких полученных данных, DataAcquisition запускает приоритетный конечный захват, чтобы считать требуемое количество сканов. MATLAB блокируется до захвата и читается, завершены.

  • Если DataAcquisition запускается, когда вы вызываете эту функцию, он считывает данные, уже полученные, если необходимое ожидание до конкретного количества сканов доступно. MATLAB блокируется до захвата и читается, завершены. Это типично когда start называется, чтобы запустить фоновый захват до вызова read.

  • Если DataAcquisition не запускает, но получил данные из предыдущего запуска, это читает конкретное количество сканов или всех данных, какой бы ни меньше.

[scanData,triggerTime] = read(___) выполняет заданное чтение и возвращает расписание в scanData и отсканируйте триггерное время к triggerTime как datetime.

пример

scanData = read(___,"OutputFormat","Matrix") выполняет заданное чтение и возвращается, матрица M на n удваивается до scanData, где M является количеством сканов, и N является количеством входных каналов. Каждый столбец содержит данные из одного канала.

[scanData,timeStamp,triggerTime] = read(___,"OutputFormat","Matrix") выполняет заданное чтение и возвращает метки времени скана в timeStamp, когда вектор M-1 из удваивает представление относительного времени в секундах после первого скана. Строки timeStamp вектор соответствует строкам scanData матрица. Триггерное время скана возвращено в triggerTime как datenum дважды.

Примеры

свернуть все

Не задавая длительность или количество сканов, read функция получает сингл, по требованию сканируют на всех каналах.

d = daq("ni")
addinput(d,"Dev1",1,"Voltage"); % add more channels as needed
scanData = read(d)
data =

  timetable

    Time     Dev1_ai1
    _____    ________

    0 sec    -1.9525

Если нет никаких доступных данных, которые будут считаны из устройства, read функция инициирует приоритетный захват, блокируя MATLAB до завершенный.

d = daq("ni");
ch = addinput(d,"Dev1",1:2,"Voltage")
ch = 

    Index    Type    Device    Channel    Measurement Type          Range              Name   
    _____    ____    ______    _______    ________________    __________________    __________

      1      "ai"    "Dev1"     "ai1"     "Voltage (Diff)"    "-10 to +10 Volts"    "Dev1_ai1"
      2      "ai"    "Dev1"     "ai2"     "Voltage (Diff)"    "-10 to +10 Volts"    "Dev1_ai2"

Считайте пять сканов данных по всем каналам.

scanData = read(d,5)
scanData =

  5×2 timetable

      Time       Dev1_ai1    Dev1_ai2
    _________    ________    ________

    0 sec         0.1621     0.62579 
    0.001 sec    0.42124     0.56955 
    0.002 sec    0.51069     0.56002 
    0.003 sec    0.54193     0.56166 
    0.004 sec    0.55377     0.56396

Считайте 5 миллисекунд данных по всем каналам.

d.Rate = 1000;
scanData = read(d,seconds(0.005))
scanData =

  5×2 timetable

      Time       Dev1_ai1    Dev1_ai2
    _________    ________    ________

    0 sec         0.2259     0.33278 
    0.001 sec    0.28871     0.31699 
    0.002 sec     0.3068     0.31633 
    0.003 sec     0.3137     0.31929 
    0.004 sec    0.31732     0.32028

Можно также считать данные в массивы двойных значений. Пять сканов на двух каналах приводят к 5 2 матрица со столбцом для каждого канала.

scanData = read(d,5,"OutputFormat","Matrix")
scanData =

    0.0424    0.0644
    0.0572    0.0621
    0.0605    0.0638
    0.0618    0.0641
    0.0631    0.0648

Когда фоновый захват инициируется с start функция, использовать read импортировать данные.

d = daq("ni");
ch = addinput(d,"Dev1",1:2,"Voltage")
start(d,"NumScans",5)
Background operation has started.
Background operation will stop after 0.005 s.
To read acquired scans, use read.
scanData = read(d,"all")
scanData =

  5×2 timetable

      Time       Dev1_ai1    Dev1_ai2
    _________    ________    ________

    0 sec        0.012466    0.023977
    0.001 sec    0.019373    0.023319
    0.002 sec    0.021017     0.02299
    0.003 sec    0.021346     0.02299
    0.004 sec    0.022661    0.023648

Входные параметры

свернуть все

Интерфейс DataAcquisition в виде DataAcquisition объект, созданное использование daq функция.

Пример: d = daq()

Продолжительность операции чтения в виде длительности или дважды. Если это - тип длительности, он задает длительность времени захвата; если двойное, это задает количество сканов.

Пример: seconds(5)

Типы данных: double | duration

Выходные аргументы

свернуть все

Введите данные сканирования от устройства, возвращенного как расписание, или матрица удваивается, в зависимости от OutputFormat установка.

Можно получить доступ к триггерному времени скана в свойстве scanData.Properties.CustomProperties.TriggerTime расписания, возвращенный как datetime.

Время, когда захват начался, возвратилось как datetime если OutputFormat istimetable (значение по умолчанию), или как двойное, если OutputFormat ismatrix. Эта информация также доступна как значение datetime в свойстве scanData.Properties.CustomProperties.TriggerTime расписания.

Времена захватов скана, возвращенных как матрица, удваиваются. Каждое значение представляет относительное время в секундах после первого скана. Этот аргумент возвращен только когда OutputFormat задан как "Matrix".

Смотрите также

Функции

Введенный в R2020a