readasync

Считывайте данные асинхронно с прибора

Синтаксис

readasync(obj)
readasync(obj,size)

Аргументы

obj

Объект интерфейса.

size

Количество байтов для чтения с инструмента.

Описание

readasync(obj) инициирует операцию асинхронного чтения.

readasync(obj,size) асинхронно считывает самое большее количество байтов, заданных size. Если size больше, чем различие между InputBufferSize значение свойства и BytesAvailable значение свойства, возвращается ошибка.

Примеры

Этот пример создает объект последовательного порта s, соединяет s в Tektronix® Осциллограф TDS 210, конфигурирует s в окнах® машина для чтения данных асинхронно только в том случае, если readasync выдается и конфигурирует прибор для возврата пикового значения к пиковому значению сигнала в канале 1.

s = serial('COM1');
fopen(s)
s.ReadAsyncMode = 'manual';
fprintf(s,'Measurement:Meas1:Source CH1')
fprintf(s,'Measurement:Meas1:Type Pk2Pk')
fprintf(s,'Measurement:Meas1:Value?')

Первоначально в входном буфере нет данных.

s.BytesAvailable
ans =
     0

Начните чтение данных асинхронно с инструмента, используя readasync. Когда операция read будет завершена, верните данные в MATLAB® рабочая область с использованием fscanf.

readasync(s)
s.BytesAvailable
ans =
     15
out = fscanf(s)
out =
2.0399999619E0
fclose(s)

Совет

Прежде чем вы сможете считать данные, вы должны подключиться obj к инструменту с fopen функция. Связанный объект интерфейса имеет Status значение свойства open. Ошибка возвращается, если вы пытаетесь выполнить операцию чтения во время obj не соединяется с прибором.

Для последовательных портов, TCPIP, UDP и VISA-последовательных объектов необходимо использовать readasync только когда вы конфигурируете ReadAsyncMode свойство к manual. readasync игнорируется, если используется при ReadAsyncMode является continuous.

The TransferStatus свойство указывает, выполняется ли асинхронная операция чтения или записи. Для всех объектов интерфейса вы не можете использовать readasync в то время как операция чтения находится в прогрессе. Для последовательных портов и VISA-последовательных объектов можно записать данные во время прогресса асинхронного чтения, поскольку последовательные порты имеют отдельные контакты чтения и записи. Можно остановить асинхронные операции чтения и записи с stopasync функция.

Можно контролировать объем данных, хранящихся в входе буфере, с помощью BytesAvailable свойство. Кроме того, можно использовать BytesAvailableFcn свойство для выполнения функции обратного вызова при считывании терминатора строки или заданного объема данных.

Асинхронная операция не поддерживается для объектов NI VISA в UNIX® платформы. Так что, если вы используете readasync функция с объектом NI VISA, вы получите ошибку.

Примечание

Чтобы получить список опций, которые можно использовать для функции, нажмите клавишу Tab после ввода функции в командной строке MATLAB. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой расширенной функции заполнения клавишей Tab, смотрите Использование заполнения клавишей Tab для функций.

Правила завершения операции асинхронного чтения

Операция асинхронного чтения с readasync завершается при выполнении одного из следующих условий:

  • Считался терминатор строки. Для последовательных портов, TCPIP, UDP и VISA-последовательных объектов, терминатор строки задаётся Terminator свойство. Обратите внимание, что для объектов UDP, DatagramTerminateMode должен быть off.

    Для всех других объектов интерфейса, кроме VISA-RSIB, терминатор строки задаётся EOSCharCode свойство.

  • Время, заданное как Timeout проходит свойство.

  • Считалось указанное количество байтов.

  • Входной буфер заполнен.

  • Получена дейтаграмма (объекты UDP только если DatagramTerminateMode является on)

  • Задана линия EOI (только приборы GPIB и VXI).

Для последовательных портов, TCPIP, UDP и VISA-последовательных объектов, readasync может быть медленным, потому что он проверяет на терминатора строки. Чтобы увеличить скорость, вы, возможно, захотите сконфигурировать ReadAsyncMode на continuous и непрерывно возвращают данные во входной буфер, как только они доступны с прибора.

Вопросы совместимости

расширить все

Не рекомендуемый запуск в R2019b

Не рекомендуемый запуск в R2020b

Не рекомендуемый запуск в R2020b

Не рекомендуемый запуск в R2020b

Не рекомендуемый запуск в R2021a

См. также

Функции

Свойства

Представлено до R2006a