我正在尝试读取通过 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 不能在没有并行计算工具箱的情况下运行同时功能