exponenta event banner

BytesAvailableFcn

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

Описание

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

Примечание

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

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

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

  • Время возникновения события с использованием формата день-месяц-год час: минута: секунда: миллисекунда

Примечание

Нельзя использовать значения 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