События и обратные вызовы

Event Types and Callback Properties

Типы событий и сопоставленные свойства коллбэка, поддержанные TCP/IP и объектами UDP, описаны ниже.

TCP/IP и Типы событий UDP и Свойства Коллбэка

Тип события

Связанные свойства

BytesAvailable

BytesAvailableFcn

BytesAvailableFcnCount

BytesAvailableFcnMode

Дейтаграмма получена

DatagramReceivedFcn (UDP возражает только),

Ошибка

ErrorFcn

Выведите пустой

OutputEmptyFcn

Таймер

TimerFcn

TimerPeriod

Полученное из дейтаграммы событие описано ниже. Для описания других типов событий обратитесь к Event Types and Callback Properties.

Примечание

Вы не можете использовать значения ASCII, больше, чем 127 символов с fgetl, fgets или BytesAvailableFnc. Функции ограничиваются 127 бинарными символами.

Примечание

Чтобы получить список опций, можно использовать на функции, нажать клавишу Tab после ввода функции на командной строке MATLAB®. Список расширяется, и можно прокрутить, чтобы выбрать свойство или значение. Для получения информации об использовании этой функции завершения вкладки "Дополнительно" смотрите Используя Заполнение клавишей Tab для Функций.

Полученное из дейтаграммы событие

Полученное из дейтаграммы событие сразу сгенерировано после того, как полная дейтаграмма получена во входном буфере.

Это событие выполняет функцию обратного вызова, заданную для свойства DatagramReceivedFcn. Это может быть сгенерировано и для синхронных и для асинхронных операций чтения.

Ответ на информацию о событии

Можно ответить на информацию о событии в функции обратного вызова или в файле записи. Информация о событии, сохраненная в функции обратного вызова, использует два поля: Type и Data. Поле Type содержит тип события, в то время как поле Data содержит привязанную к конкретному событию информацию. Как описано в Создании и Выполнении Функций обратного вызова, эти два поля сопоставлены со структурой, которую вы задаете в заголовке функции обратного вызова. Обратитесь к Отладке: Запись информации к Диску, чтобы узнать о хранении информации о событии в файле записи.

Типы событий и значения для полей Type и Data приведены ниже.

TCP/IP и Информация о событии UDP

Тип события

Поле

Значение поля

BytesAvailable

Type

BytesAvailable

Data.AbsTime

дневной год месяца hour:minute:second

Дейтаграмма получена

Type

DatagramReceived

Data.AbsTime

дневной год месяца hour:minute:second

Data.DatagramAddress

Вектор символов IP-адреса

Data.DatagramLength

Количество байтов, полученных как дважды

Data.DatagramPort

Номер порта отправителя как дважды

Ошибка

Type

Error

Data.AbsTime

дневной год месяца hour:minute:second

Data.Message

Строка ошибки

Выведите пустой

Type

OutputEmpty

Data.AbsTime

дневной год месяца hour:minute:second

Таймер

Type

Timer

Data.AbsTime

дневной год месяца hour:minute:second

Значения полей Data описаны ниже.

Поле AbsTime

AbsTime задан для всех событий и указывает абсолютное время, которое имело место событие. Абсолютное время возвращено с помощью окна MATLAB Command формат clock.

дневной год месяца hour:minute:second

Поле DatagramAddress

DatagramAddress является IP-адрес дейтаграммного отправителя.

Поле DatagramLength

DatagramLength является длиной дейтаграммы в байтах.

Поле DatagramPort

DatagramPort является номером порта отправителя от который порожденная дейтаграмма.

Обмен сообщениями поля

Message используется ошибочным событием, чтобы хранить описательное сообщение, которое сгенерировано, когда ошибка происходит.

Используя События и коллбэки

Этот пример расширяет Связь UDP Между Двумя Хостами, чтобы включать полученный коллбэк дейтаграммы. Функцией обратного вызова является instrcallback, который отображает информацию к командной строке, указывающей, что дейтаграмма была получена.

Следующая команда конфигурирует коллбэк для объекта UDP u2.

u2.DatagramReceivedFcn = @instrcallback;

Когда дейтаграмма получена, следующее сообщение отображено.

DatagramReceived event occurred at 10:26:20 for the object: 
UDP-doetom.dhpc.
25 bytes were received from address 192.168.1.12, port 8844.

Примечание

Вы не можете использовать значения ASCII, больше, чем 127 символов с fgetl, fgets или BytesAvailableFnc. Функции ограничиваются 127 бинарными символами.