이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
사용자 데이터그램 프로토콜(UDP)을 사용하여 두 MATLAB 세션 간 통신하기
이 예제는 udpport 함수를 사용하여 동일한 컴퓨터상의 두 MATLAB® 세션 간에 UDP(User Datagram Protocol)를 통해 데이터를 전송하는 방법을 보여줍니다.
첫 번째 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 콜백 함수는 데이터를 수신하면 두 번째 MATLAB 세션에 있는 udpport 인스턴스로 확인 응답 문자열을 전송합니다.
다른 udpport 인스턴스와 일치하도록 Terminator 속성을 "CR/LF"로 설정하십시오.
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 acknowledgment string. data = "COMMAND RECEIVED - """ + data + """. SENDING ACKNOWLEDGEMENT."; % Send the acknowledgment 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"
두 번째 MATLAB 세션
udpport 인스턴스 생성
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
콜백 함수 준비
configureCallback 함수를 사용하여 수신된 데이터를 읽도록 readAcknowledgement 콜백 함수를 설정하십시오. 이 콜백 함수는 종결자가 수신되면 트리거됩니다. 이 예제에서 사용된 종결자 값은 "CR/LF"입니다.
configureTerminator 함수를 사용하여 Terminator 속성을 "CR/LF"로 설정하십시오.
configureTerminator(uSecond,"CR/LF");Terminator 속성을 "CR/LF"로 설정해야 합니다.
uSecond.Terminator
ans = "CR/LF"
지정된 종결자가 수신되면 트리거되도록 readAcknowledgement 콜백 함수를 설정합니다.
configureCallback(uSecond,"terminator",@readAcknowledgement);readAcknowledgement.m 콜백 함수는 다음과 같습니다.
function readAcknowledgement(u, ~) % Read the acknowledgment data. readline removes the Terminator from the % data read. data = readline(u); % Display the acknowledgment string read. disp(data); end
이제 BytesAvailableFcn 속성은 콜백 함수로 설정되어야 하며, BytesAvailableFcnMode는 "terminator"로 설정되어야 합니다.
uSecond.BytesAvailableFcn
ans = function_handle with value:
@readAcknowledgement
uSecond.BytesAvailableFcnMode
ans = "terminator"
첫 번째 MATLAB 세션에 명령을 전송
writeline를 사용하여 첫 번째 MATLAB 세션에서 udpport 인스턴스인 uFirst에 "START" 명령을 전송합니다. uFirst는 포트 2020에 바인딩되어 있습니다. writeline는 "START" 명령 뒤에 Terminator "CR/LF"를 자동으로 추가합니다.
disp("Sending Command - START");Sending Command - START
writeline(uSecond, "START", "127.0.0.1", 2020);
동일한 수신 주소와 수신 포트로 또 다른 명령을 전송하십시오. "STOP" 명령어 뒤에는 자동으로 Terminator "CR/LF"가 추가됩니다.
disp("Sending Command - STOP");Sending Command - STOP
writeline(uSecond, "STOP");udpport 지우기
첫 번째 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