Типы событий и сопоставленные свойства коллбэка, поддержанные объектами последовательного порта, описаны ниже.
Типы событий последовательного порта и свойства коллбэка
Тип события | Связанные свойства |
|---|---|
Повредите прерывание | |
BytesAvailable | |
Ошибка | |
Выведите пустой | |
PinStatus | |
Таймер | |
Прерывание пропуска и события изменения состояния контакта описаны ниже. Для описания других типов событий обратитесь к Event Types and Callback Properties.
Вы не можете использовать значения ASCII, больше, чем 127 символов с fgetl, fgets или BytesAvailableFnc. Функции ограничиваются 127 бинарными символами.
Событие прерывания пропуска сразу сгенерировано после того, как прерывание пропуска сгенерировано последовательным портом. Последовательный порт генерирует прерывание пропуска, когда полученные данные были в неактивном состоянии дольше, чем время передачи для одного символа.
Это событие выполняет функцию обратного вызова, заданную для свойства BreakInterruptFcn. Это может быть сгенерировано и для синхронных и для асинхронных операций чтения и операций записи.
Событие изменения состояния контакта сразу сгенерировано после состояния (значение контакта) изменения для CD, CTS, DSR или контактов RI. Обратитесь к Сигналам Последовательного порта и Назначениям контактов для описания этих контактов.
Это событие выполняет функцию обратного вызова, заданную для свойства PinStatusFcn. Это может быть сгенерировано и для синхронных и для асинхронных операций чтения и операций записи.
Можно ответить на информацию о событии в функции обратного вызова или в файле записи. Информация о событии, сохраненная в функции обратного вызова, использует два поля: Type и Data. Поле Type содержит тип события, в то время как поле Data содержит привязанную к конкретному событию информацию. Как описано в Создании и Выполнении Функций обратного вызова, эти два поля сопоставлены со структурой, которую вы задаете в заголовке функции обратного вызова. Обратитесь к Отладке: Запись информации к Диску, чтобы узнать о хранении информации о событии в файле записи.
Типы событий и значения для полей Type и Data приведены ниже.
Информация о событии последовательного порта
Тип события | Поле | Значение поля |
|---|---|---|
Повредите прерывание |
|
|
| дневной год месяца hour:minute:second | |
BytesAvailable |
|
|
| дневной год месяца hour:minute:second | |
Ошибка |
|
|
| дневной год месяца hour:minute:second | |
| Строка ошибки | |
Выведите пустой |
|
|
| дневной год месяца hour:minute:second | |
PinStatus |
|
|
| дневной год месяца hour:minute:second | |
|
| |
|
| |
Таймер |
|
|
| дневной год месяца hour:minute:second |
Значения полей Data следующие.
| Имя поля | Значение |
|---|---|
AbsTime |
|
Pin |
|
PinValue |
|
Message |
|
Этот пример использует функцию обратного вызова instrcallback, чтобы отобразить событийную информацию к командной строке, когда доступное байтам событие или пустое от вывода событие происходят:
Этим примером является конкретный Windows®.
Создайте инструментальный объект — Создают объект последовательного порта s, сопоставленный с последовательным портом COM1.
s = serial('COM1');Сконфигурируйте свойства — Конфигурируют s, чтобы выполнить функцию обратного вызова instrcallback, когда доступное байтам событие или пустое от вывода событие происходят.
s.BytesAvailableFcnMode = 'terminator';
s.BytesAvailableFcn = @instrcallback;
s.OutputEmptyFcn = @instrcallback;Соединитесь с инструментом — Подключение s к осциллографу Tektronix® TDS 210. Поскольку значением по умолчанию для свойства ReadAsyncMode является continuous, данные асинхронно возвращены во входной буфер, как только это доступно от инструмента.
fopen(s)
Запишите и считайте данные — Запись команда RS232? асинхронно к осциллографу. Эта команда запрашивает настройки RS-232 и возвращает скорость в бодах, установку программного управления потоком, установку аппаратного управления потоками, тип контроля четности и терминатор строки.
fprintf(s,'RS232?','async')
instrcallback называется после того, как команда RS232? отправляется, и когда терминатор строки читается. Получившиеся отображения показывают ниже.
OutputEmpty event occurred at 17:37:21 for the object: Serial-COM1. BytesAvailable event occurred at 17:37:21 for the object: Serial-COM1.
Считайте данные из входного буфера.
out = fscanf(s)
out = 9600;0;0;NONE;LF
Разъединитесь и вымойтесь — Когда вам больше не нужен s, необходимо отключить его от инструмента и удалить его из памяти и из рабочего пространства MATLAB.
fclose(s)
delete(s)
clear sДля общего обзора событий и коллбэков, включая то, как создать и выполнить функции обратного вызова, относятся к Событиям и Коллбэкам.
Вы не можете использовать значения ASCII, больше, чем 127 символов с fgetl, fgets или BytesAvailableFnc. Функции ограничиваются 127 бинарными символами.