В этом примере показано, как отправить данные по Пользовательской дейтаграмме Protcol (UDP) между двумя сеансами работы с MATLAB на том же самом, использующем компьютеры udpport функция.
Создайте udpport экземпляр и связывает, чтобы портировать 2020.
uFirst = udpport("LocalPort",2020)uFirst =
UDPPort with properties:
IPAddressVersion: "IPV4"
LocalHost: "0.0.0.0"
LocalPort: 2020
NumBytesAvailable: 0
Show all properties, functions
Сконфигурируйте функцию обратного вызова, чтобы считать полученное использование данных configureCallback функция. Эта функция обратного вызова инициирует каждый раз, когда терминатор строки получен. sendAcknowledgement функция обратного вызова передает строку подтверждения обратно в udpport экземпляр во втором сеансе работы с MATLAB, когда это получает данные.
Установите Terminator свойство к "CR/LF", совпадать с тем из другого udpport экземпляр.
configureTerminator(uFirst, "CR/LF");Terminator свойство должно теперь быть установлено в "CR/LF".
uFirst.Terminator
ans = "CR/LF"
Настройте функцию обратного вызова sendAcknowledgement инициировать, когда присвоенный терминатор строки получен.
configureCallback(uFirst,"terminator",@sendAcknowledgement);sendAcknowledgement.m функция обратного вызова приведена ниже.
function sendAcknowledgement(u, ~) % Read the data received from the other udpport instance. readline removes % the terminator from the data read. data = readline(u); % Prepare the acknowledgement string. data = "COMMAND RECEIVED - """ + data + """. SENDING ACKNOWLEDGEMENT."; % Send the acknowledgement string, followed by the Terminator "CR/LF", to the % udpport instance bound to port 3030 in the first MATLAB instance. writeline(u, data, "127.0.0.1", 3030); end
BytesAvailableFcn свойство должно быть теперь установлено в функцию обратного вызова и BytesAvailableFcnMode установите на "terminator".
uFirst.BytesAvailableFcn
ans = function_handle with value:
@sendAcknowledgement
uFirst.BytesAvailableFcnMode
ans = "terminator"
Создайте udpport экземпляр и связывает, чтобы портировать 3030.
uSecond = udpport("LocalPort", 3030)uSecond =
UDPPort with properties:
IPAddressVersion: "IPV4"
LocalHost: "0.0.0.0"
LocalPort: 3030
NumBytesAvailable: 0
Show all properties, functions
Сконфигурируйте функцию обратного вызова readAcknowledgement считывать данные получило использование configureCallback функция. Эта функция обратного вызова инициирована, когда терминатор строки получен. Значением терминатора строки, используемым для этого примера, является "CR/LF".
Установите Terminator свойство к "CR/LF" использование configureTerminator функция.
configureTerminator(uSecond,"CR/LF");Terminator свойство должно теперь быть установлено в "CR/LF".
uSecond.Terminator
ans = "CR/LF"
Настройте функцию обратного вызова readAcknowledgement инициировать, когда присвоенный терминатор строки получен.
configureCallback(uSecond,"terminator",@readAcknowledgement);readAcknowledgement.m функция обратного вызова приведена ниже.
function readAcknowledgement(u, ~) % Read the acknowledgement data. readline removes the Terminator from the % data read. data = readline(u); % Display the acknowledgement string read. disp(data); end
BytesAvailableFcn свойство должно быть теперь установлено в функцию обратного вызова и BytesAvailableFcnMode установите на "terminator".
uSecond.BytesAvailableFcn
ans = function_handle with value:
@readAcknowledgement
uSecond.BytesAvailableFcnMode
ans = "terminator"
Отправьте "НАЧИНАТЬ" команду в udpport экземпляр uFirst на первом сеансе работы с MATLAB с помощью writeline. uFirst обязан портировать 2020. writeline автоматически добавляет "НАЧИНАТЬ" команду с Terminator "CR/LF".
disp("Sending Command - START");Sending Command - START
writeline(uSecond, "START", "127.0.0.1", 2020);
Отправьте другую команду в тот же адрес назначения и целевой порт. "ОСТАНОВИТЬ" команда автоматически добавлена с Terminator "CR/LF".
disp("Sending Command - STOP");Sending Command - STOP
writeline(uSecond, "STOP");Сделайте паузу прежде, чем очистить объект для ответов, чтобы возвратиться из первого сеанса работы с MATLAB.
pause(0.3);
Сконфигурируйте коллбэки, чтобы быть выключенными.
configureCallback(uSecond, "off");BytesAvailableFcn свойство должно быть теперь установлено в пустой function_handle, и BytesAvailableFcnMode установите на "off".
uSecond.BytesAvailableFcn
ans = 0×0 empty function_handle array
uSecond.BytesAvailableFcnMode
ans = "off"
Очистите udpport экземпляр.
clear uSecond