2

UDPパケットを介してブロードキャストされている複数の周波数で海の深さの値を読み取ろうとしています。私が行っているのは、ロギングプログラムに深度値を特定のUDPポートに返すように指示し、DatagramReceivedFcnを使用して、データの受信時に関数を実行し、基本的にその深度を保存することです。

u1 = udp(remoteip,dataport18,'ByteOrder','littleEndian','LocalPort',dataport18,'DatagramTerminateMode','off');
set(u1,'InputBufferSize',6000);
u1.DatagramReceivedFcn = {@receivedata18};
fopen(u1);

したがって、「dataport18」で指定されたポートでデータを受信すると、関数receivedata18()が実行されます。ただし、複数の周波数の深度データを読み取ろうとしているため、追加のUDPオブジェクトを作成します。

u2 = udp(remoteip,dataport38,'ByteOrder','littleEndian','LocalPort',dataport38,'DatagramTerminateMode','off');
set(u2,'InputBufferSize',6000);
u2.DatagramReceivedFcn = {@receivedata38};
fopen(u2);

私が見つけたのは、u1(18 kHz)のデータのみが保存されているということです。私の推測では、両方の周波数が同時にpingを実行するため、両方ともUDPパケットを送信し、それぞれの機能を同時に評価しようとしますが、Matlabでは実行できません。

これは本当に何が起こっているのですか?もしそうなら、2つの別々のUDPパケットから同時に送信されている深度データを同時に読み取ることができるように、この問題を回避する方法はありますか?

ありがとう!

アップデート

これを実行するためにParallelComputingToolboxが必要かどうか疑問に思っています。基本的に同じ方法で実行されるPythonの同様のプログラムがありますが、問題はありません。私は、MatlabがParallelComputingToolboxなしでは同時機能を実行できないことを前提としています。

4

1 に答える 1

0

誰かが気になる場合に備えて、これを更新する必要があると思いました。私の質問に対する答えではありませんが、私が現在行っていることは機能しています。

データを別の UDP ポートに送信する代わりに、同じポートに送信してから順番に読み取るだけです。したがって、私はそれらを同期して読んでいませんが、それによって操作がまったく遅くなることはありません。

于 2012-09-27T22:57:42.623 に答える