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