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