Основной рабочий процесс, чтобы читать и запись данных по UDP

Этот пример показывает основной рабочий процесс текстовых операций чтения и операций записи с объектом UDP, соединенным с удаленным инструментом.

Используемый инструмент является сервером эха на основанном на Linux PC. Сервер эха является сервисом, доступным от операционной системы, которая возвращается (повторяет) полученные данные к отправителю. Именем хоста является daqlab11, и номером порта является 7. Имя хоста присвоено вашим администратором сети.

  1. Создайте инструментальный объект — Создают объект UDP, сопоставленный с daqlab11.

    u = udp('daqlab11',7);
  2. Соединитесь с инструментом — Подключение u к серверу эха.

    fopen(u)
  3. Запишите и считайте данные — Вы используете функцию 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
  4. Разъединитесь и вымойтесь — Когда вам больше не нужен u, необходимо отключить его от хоста и удалить его из памяти и из рабочей области MATLAB®.

    fclose(u)
    delete(u)
    clear u

Примечание

Порты UDP могут быть совместно использованы другими приложениями, чтобы позволить, чтобы несколько приложений слушали дейтаграммы UDP на том порте. Это допускает способность слушать широковещательные сообщения UDP на том же локальном номере порта и в MATLAB и в других приложениях. Можно включить и отключить эту возможность с новым свойством объекта UDP под названием EnablePortSharing. Смотрите Включают Совместное использование Порта по UDP.