Типы событий и сопоставленные свойства коллбэка, поддержанные объектами последовательного порта, описаны ниже.
Типы событий последовательного порта и свойства коллбэка
Тип события | Связанные свойства |
---|---|
Повредите прерывание | |
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 бинарными символами.