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 无法做到的。

这真的是怎么回事吗?如果是这样,有什么办法可以解决这个问题,以便我可以同时从两个单独的 UDP 数据包中读取同时发送的深度数据?

谢谢!

更新

我想知道我是否需要并行计算工具箱才能执行此操作。我在 Python 中有一个类似的程序,它的执行方式基本相同,但是没有问题。我假设它一定是 Matlab 不能在没有并行计算工具箱的情况下运行同时功能

4

1 回答 1

0

以为我应该更新这个以防万一有人关心。这并不是我的问题的真正答案,但我目前正在做的事情正在发挥作用。

我没有将数据发送到不同的 UDP 端口,而是将它们发送到同一个端口,然后按顺序读取它们。因此,我没有同步阅读它们,尽管这并没有真正减慢操作速度。

于 2012-09-27T22:57:42.623 回答