BytesAvailableFcn

Задайте функцию обратного вызова, которая должна выполняться, когда указанное количество байтов доступно во входном буфере или считывается терминатор строки

Описание

Вы конфигурируете BytesAvailableFcn выполнение функции обратного вызова при возникновении события, доступного в байтах. Событие, доступное в байтах, происходит, когда количество байтов, заданное BytesAvailableFcnCount свойство доступно в буфере входа или после чтения терминатора строки, как определяется BytesAvailableFcnMode свойство.

Примечание

Событие, доступное в байтах, может быть сгенерировано только для операций асинхронного чтения.

Если на RecordStatus значение свойства onи происходит событие, доступное в байтах, файл записи записывает эту информацию:

  • Тип события следующим BytesAvailable

  • Время наступления события с использованием формата day-month-year hour: minute: second: millisecond

Примечание

Вы не можете использовать значения ASCII, больше 127 символов. Функция ограничена 127 двоичными символами.

Чтобы узнать, как создать функцию обратного вызова, смотрите Создание и Выполнение функций обратного вызова.

Особенности

Использование

Любой объект прибора

Только для чтения

Никогда

Тип данных

Функция обратного вызова

Значения

Значение по умолчанию является пустым символьным вектором.

Примеры

Создайте объект последовательного порта s в окнах® машина для Tektronix® Двухканальный осциллограф TDS 210, соединенный с последовательным портом COM1.

s = serial('COM1');

Сконфигурируйте s для выполнения функции обратного вызова instrcallback когда в буфере входа доступно 40 байт.

s.BytesAvailableFcnCount = 40;
s.BytesAvailableFcnMode = 'byte';
s.BytesAvailableFcn = @instrcallback;

Соедините s к осциллографу.

fopen(s)

Напишите *IDN? команда, которая инструктирует возможности для возврата идентификационной информации. Потому что значение по умолчанию для ReadAsyncMode свойство continuous, данные считываются, как только они доступны с инструмента.

fprintf(s,'*IDN?')

Результат выхода instrcallback показан ниже.

BytesAvailable event occurred at 18:33:35 for the object: 
Serial-COM1.

56 байт считываются и instrcallback вызывается один раз. Результат отображения показан выше.

s.BytesAvailable
ans =
    56

Предположим, вы удалите 25 байтов из буфера входа и выпустите MEASUREMENT? команда, которая инструктирует возможности, чтобы вернуть ее настройки измерения.

out = fscanf(s,'%c',25);
fprintf(s,'MEASUREMENT?')

Результат выхода instrcallback показан ниже.

BytesAvailable event occurred at 18:33:48 for the object: 
Serial-COM1.

BytesAvailable event occurred at 18:33:48 for the object: 
Serial-COM1.

Теперь во входном буфере 102 байта, 31 из которых остаются от *IDN? команда. instrcallback вызывается дважды; один раз, когда доступно 40 байтов, и один раз, когда доступно 80 байтов.

s.BytesAvailable
ans =
    102