Задайте функцию обратного вызова, которая должна выполняться, когда указанное количество байтов доступно во входном буфере или считывается терминатор строки
Вы конфигурируете 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