BytesAvailableFcn

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

Описание

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

Примечание

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

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

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

  • Время событие произошло с помощью дневного года месяца формата 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?')

Отображения MATLAB®:

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?')

Отображения MATLAB:

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