Этот пример показывает основной рабочий процесс текстовых операций чтения и операций записи с объектом UDP, соединенным с удаленным инструментом.
Используемый инструмент является сервером эха на основанном на Linux PC. Сервер эха является сервисом, доступным от операционной системы, которая возвращается (повторяет) полученные данные к отправителю. Именем хоста является daqlab11
, и номером порта является 7
. Имя хоста присвоено вашим администратором сети.
Создайте инструментальный объект — Создают объект UDP, сопоставленный с daqlab11
.
u = udp('daqlab11',7);
Соединитесь с инструментом — Подключение u
к серверу эха.
fopen(u)
Запишите и считайте данные — Вы используете функцию fprintf
, чтобы записать текстовые данные в инструмент. Например, запишите следующую строку в сервер эха.
fprintf(u,'Request Time')
UDP отправляет и получает данные в блоках, которые называются дейтаграммами. Каждый раз, когда вы пишете или считываете данные с объектом UDP, вы пишете или читаете дейтаграмму. Например, строка, отправленная в сервер эха, составляет дейтаграмму с 13-байтовыми — 12 байтами ASCII плюс терминатор строки перевода строки.
Вы используете функцию fscanf
, чтобы считать текстовые данные из сервера эха.
fscanf(u) ans = Request Time
Свойство DatagramTerminateMode
указывает, останавливается ли операция чтения, когда дейтаграмма получена. По умолчанию DatagramTerminateMode
является on
, и операция чтения останавливается, когда дейтаграмма получена. Чтобы возвратить несколько дейтаграмм в одной операции чтения, установите DatagramTerminateMode
на off
.
Следующие команды пишут две дейтаграммы. Обратите внимание на то, что только вторая дейтаграмма отправляет символ терминатора строки.
fprintf(u,'%s','Request Time') fprintf(u,'%s\n','Request Time')
Поскольку DatagramTerminateMode
является off
, чтения fscanf
через дейтаграммные контуры, пока символ терминатора строки не получен.
u.DatagramTerminateMode = 'off' data = fscanf(u) data = Request TimeRequest Time
Разъединитесь и вымойтесь — Когда вам больше не нужен u
, необходимо отключить его от хоста и удалить его из памяти и из рабочей области MATLAB®.
fclose(u) delete(u) clear u
Порты UDP могут быть совместно использованы другими приложениями, чтобы позволить, чтобы несколько приложений слушали дейтаграммы UDP на том порте. Это допускает способность слушать широковещательные сообщения UDP на том же локальном номере порта и в MATLAB и в других приложениях. Можно включить и отключить эту возможность с новым свойством объекта UDP под названием EnablePortSharing
. Смотрите Включают Совместное использование Порта по UDP.