Опитвам се да прочета стойности на дълбочината на океана на множество честоти, които се излъчват чрез 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). Предполагам, че тъй като и двете честоти пингват едновременно, и двете изпращат своите UDP пакети и се опитват да оценят съответните си функции едновременно, което Matlab не е в състояние да направи.
Това наистина ли се случва? Ако е така, има ли някакъв начин да се заобиколи този проблем, така че да мога едновременно да чета данни за дълбочина, които се изпращат едновременно от два отделни UDP пакета?
Благодаря!
Актуализация
Чудя се дали ще имам нужда от Parallel Computing Toolbox, за да изпълня това. Имам подобна програма в Python, която се изпълнява по същество по същия начин, но няма проблеми. Предполагам, че трябва да е така, че Matlab не може да изпълнява едновременни функции без Parallel Computing Toolbox