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