Я пытаюсь прочитать значения глубины океана на нескольких частотах, которые передаются через пакеты 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 кГц). Я предполагаю, что, поскольку обе частоты пингуются одновременно, они оба отправляют свои UDP-пакеты и пытаются одновременно оценить свои соответствующие функции, на что Matlab не способен.
Это действительно то, что происходит? Если да, то есть ли способ обойти эту проблему, чтобы я мог одновременно читать данные о глубине, которые отправляются одновременно из двух отдельных пакетов UDP?
Спасибо!
Обновить
Мне интересно, понадобится ли мне Parallel Computing Toolbox для выполнения этого. У меня есть аналогичная программа на Python, которая выполняется практически так же, но проблем с ней нет. Я предполагаю, что Matlab не может выполнять одновременные функции без Parallel Computing Toolbox.