BytesAvailableFcn

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

Описание

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

Примечание

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

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

  • Тип события как BytesAvailable

  • Время событие произошло с помощью дневного года месяца формата hour:minute:second:millisecond

Примечание

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

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

Характеристики

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

Любой инструментальный объект

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

Никогда

Тип данных

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

Значения

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

Примеры

Создайте объект последовательного порта s на машине Windows® для 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