我想使用Winsock通过UDP将数据从我的C ++应用程序发送到Matlab,并实时绘制数字。 例如: 我得到了从1到10的数字,我想从C ++发送1,在Matlab中接收它,将其放在图形上(图,条等),然后发送2,将其接收,放在图形上,依此类推。
现在,我只能一次发送和接收全部10个号码,并在收到它们后将其绘制出来。 是否可以将单个数字作为单个数据报发送并分别接收?
在C ++中,我初始化winsock,创建一个套接字,完成该套接字的数据,绑定该套接字并发送循环:
while (i<10)
{
error_code = sendto(sock, (const char*)&i, 2, 0, (SOCKADDR*)&sockaddr, sizeof(sockaddr));
if(error_code == SOCKET_ERROR)
{
printf("\nError code: %d\n", WSAGetLastError());
}
else
{
printf("\nMessage sent: %d", i);
i++;
}
}
毕竟我要关闭插座。
在Matlab中,我制作UDP对象,将其打开并循环扫描。整个功能如下:
UDPsock=udp('127.0.0.1', 'LocalPort', 7766, 'Timeout', 2);
set(UDPsock, 'DatagramTerminateMode','off');
figure();
fopen(UDPsock);
while length(data) < 10
disp('recieving')
data = fscanf(UDPsock);
data_num = double(data);
plot(data_num);
end
fclose(UDPsock);
在Matlab调试器中,我看到while循环执行一次,它收集所有10个数字,然后关闭。 我希望它就像每执行一次循环就收到一个数字。