exponenta event banner

readasync

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

Синтаксис

readasync(obj)
readasync(obj,size)

Аргументы

obj

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

size

Количество байтов, считываемых с прибора.

Описание

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

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

Примеры

В этом примере создается объект последовательного порта s, подключает s на осциллограф Tektronix ® TDS 210, конфигурируетs на компьютере Windows ® для асинхронного чтения данных только в том случае, если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. По завершении операции чтения верните данные в рабочую область 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.

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

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

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

Примечание

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

Правила выполнения асинхронной операции чтения

Асинхронная операция чтения с помощью 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