Пользовательский Дейтаграммный Протокол (UDP или UDP/IP) является транспортным протоколом, разделенным на уровни сверху межсетевого протокола (IP). UDP является протоколом без установления соединения. Приложение с помощью UDP готовит пакет и отправляет его в адрес получателя без первой проверки, чтобы видеть, готов ли получатель получить пакет. Если приемный конец не готов получить пакет, пакет потерян.
UDP поддерживается на этих платформах:
Linux® 64-bit
macOS 64-bit
Microsoft® Windows® 64-bit
Интерфейс UDP поддерживается на тех же платформах как MATLAB®. Для обновлений списка в настоящее время поддерживаемых платформ см. https://www.mathworks.com/support/sysreq/current_release/.
Убедитесь, что у вас есть правильный инструментальный драйвер, установленный для вашего устройства. Обратитесь к своей документации устройства и веб-сайту поставщика.
Убедитесь, что ваше устройство поддерживается в Instrument Control Toolbox™. Смотрите, что Мое Оборудование Поддержано?.
Убедитесь, что Instrument Control Toolbox распознает ваше устройство, при помощи instrhwinfo
функция с udp
'interfaceName' . Например:
instrhwinfo('udp')
ans = HardwareInfo with properties: LocalHost: {6x1 cell} JarFileVersion: 'Version 3.7'
Убедитесь, что можно создать объект UDP. Вы создаете объект UDP с udp
функция, которая не требует имени удаленного хоста как входной параметр. Однако, если вы используете объект связаться с определенным инструментом, необходимо задать удаленный хост и номер порта.
Несмотря на то, что UDP является связью не сохраняющей состояние, открытие объекта UDP с недопустимым именем хоста сгенерирует ошибку. Можно сконфигурировать значения свойств во время создания объекта, такие как LocalPort
свойство, если вы будете использовать объект считать данные из инструмента. Например, создать объект UDP сопоставило с удаленным хостом 127.0.0.1
, удаленный порт 4012
, и локальный порт 3533
:
u = udp('127.0.0.1', 4012, 'LocalPort', 3533);
Можно проверить объект путем рассмотрения свойств объектов, использования имени, которое вы присвоили объекту, u
в этом случае.
disp(u) UDP Object : UDP-127.0.0.1 Communication Settings RemotePort: 4012 RemoteHost: 127.0.0.1 Terminator: 'LF' Communication State Status: closed RecordStatus: off Read/Write State TransferStatus: idle BytesAvailable: 0 ValuesReceived: 0 ValuesSent: 0
Убедитесь, что можно соединиться с удаленным хостом, с помощью fopen
функция с именем объекта.
fopen(u);
Если компьютер или хост не будут существовать, вы получите предупреждение. Можно попытаться проверить с помощью ping-запросов компьютер, чтобы видеть, отвечает ли он:
!ping hostname
Когда вы соединились, можно связаться с устройством. Если отправка и получение не работают, можно проверять следующее:
Убедитесь, что имя узла/IP существует. Попробуйте !ping hostname
.
Убедитесь RemotePort
и LocalPort
правильны. RemotePort
порт, который другой компьютер или приложение слушают для трафика UDP. LocalPort
порт на компьютере, который MATLAB слушает для трафика UDP.
Посмотрите на установку DatagramTerminateMode
свойство. Настройка по умолчанию on
заставляет UDP вести себя по-другому, чем другие интерфейсы. Попробуйте обе настройки. Вы также, возможно, должны установить другие свойства, такие как buffer size. Смотрите Функции и Свойства (ASCII) и Функции и Свойства (Двоичный файл) для получения дополнительной информации о свойствах и значениях.
UDP не является надежным протоколом, и пакеты могут быть пропущены. Вы, возможно, должны попытаться отправить или получить многократно.
Смотрите Данные о ASCII Рида и Записи по UDP и Двоичные данные Рида и Записи по UDP для примеров коммуникации по UDP и информации об использовании свойств.