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