1

同じマシン上の Matlab スクリプトと Qt (C++) アプリの間でやり取りしたいと考えています。Qt では、QLocalServerオブジェクトを作成し、'my_server' (何でもかまいません) のような特定のハンドルで接続をリッスンするように指示します。

Matlab では、関連する MatlabCentral のリスト ( this onethis oneなど) のように見えるものを見てきましたが、どちらの場合もそれらを機能させることはできません。ハンドルを指定する機能はありません。ローカルホストをリッスンするように指示しただけでは、接続しません。

ここで何ができますか?MEX ファイルを介してこれを行うことはおそらく可能ですが、最後の手段として残しています。また、R2009b で立ち往生しているためudp、Matlab にコマンドがありません。

4

2 に答える 2

1

Peter Rydesäter のツールボックスを試してみてください: http://www.mathworks.com/matlabcentral/fileexchange/345-tcpudpip-toolbox-2-0-6かなり古いですが、まだ機能します。

2 つの Matlab インスタンスの例:

送信者:

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

レシーバー:

size = pnet(sock, 'readpacket'); % Get Data from sock, and load to buffer
data = pnet(sock, 'read'); % Read Data from buffer
于 2013-01-16T13:30:34.813 に答える
1

そのため、Qt のQLocalServer/QLocalSocketは、その名前にもかかわらず、これを行うための適切なクラスではないことがわかりました。むしろ、私が参照したMatlabCentralファイル(そしておそらく@Frederikが言及したものですが、すぐに機能させることはできませんでした)はQTcpServer、対応するを作成しQTcpSocket、両端でホストをlocalhostに設定し、ポートを4444(または何でも)。Qt のLoopback exampleに従って、必要なものを簡単に作成できることがわかりました。

于 2013-01-16T20:39:30.260 に答える