2013-01-16 2 views
1

동일한 컴퓨터에서 Matlab 스크립트와 Qt (C++) 응용 프로그램 사이를 오가며 통신하고 싶습니다. Qt에서 QLocalServer 개체를 만들고 'my_server'와 같은 특정 핸들에서 연결을 수신 대기하도록 지시합니다 (아무거나 될 수 있음). 매트랩 Matlab의 로컬 서버에 연결

가 나는 등 this onethis one 등 관련 MatlabCentral 목록,처럼 보일 것을 보았다했지만, 어느 경우에 나는 그들이 일을 얻을 수 있고, 심지어이 항아리를 수행하는 방법에 표시되지 않습니다 핸들을 지정할 수있는 기능이 없습니다. 방금 로컬 호스트에 귀를 기울이라고 말하면 연결하지 않습니다.

그래서 여기서 뭘 할 수 있습니까? 아마도 MEX 파일을 통해이 작업을 수행 할 수는 있지만 최후의 수단으로 남겨 두었습니다. 또한 R2009b가 붙어있어서 Matlab에 udp 명령이 없습니다.

+1

Java 소켓 사용을 고려하십시오. http://www.mathworks.com/matlabcentral/fileexchange/25249-tcpip-socket-communications-in-matlab-using-java-classes – slayton

+0

@slayton 기본적으로 두 번째 목록과 동일합니다 나는 언급했다. 같은 문제. –

답변

0

는 그래서 자신의 이름에도 불구하고, Qt의 QLocalServer/QLocalSocket이 일에 적합한 클래스가없는 것으로 나타났다. 오히려 내가 언급 한 MatlabCentral 파일 (그리고 아마도 @Frederik이 언급했듯이)은 QTcpServer과 그에 해당하는 QTcpSocket을 만들고 양쪽 끝에서 localhost에 호스트를 설정하면 제대로 작동합니다. 포트 4444 (또는 무엇이든). Qt의 Loopback example에 따라 필요한 것을 제작하는 것이 매우 쉽다는 것을 알았습니다.

1

피터 Rydesäter에서 도구 상자를 시도하십시오 : http://www.mathworks.com/matlabcentral/fileexchange/345-tcpudpip-toolbox-2-0-6 아주 오래된하지만 여전히 작동합니다.

발신자 :

function sendudp(host, port, data) 
    udp=pnet('udpsocket',1111);   % open local socket on port 1111 
    pnet(udp,'write',data);    % write data to buffer 
    pnet(udp,'writepacket',host,port); % send udp-packet 
    pnet(udp,'close');     % close connection 
end 

광기 :

sock = pnet('udpsocket', 950) % open socket on port 950 

발신자 :

sendudp('127.0.0.1', 950, 'Hello World') % Call function defined above, send Hello World to localhost, port 950 

광기 :

01,235,164 개의 matlab에-인스턴스

size = pnet(sock, 'readpacket'); % Get Data from sock, and load to buffer 
data = pnet(sock, 'read'); % Read Data from buffer 
+0

바로 그 부분을 보았습니다.하지만 같은 이야기입니다. 어떻게 핸들을 지정해야합니까? 내가 말할 수있는 한 IP 주소 또는 'localhost'만 입력 할 수 있습니다. 그러나 나는 다른 프로세스에 구체적으로 연결하는 방법을 모른다. –