如何通过UDP将数据从C ++应用程序发送到Matlab并进行绘制

时间:2019-07-05 12:46:14

标签: c++ matlab udp winsock datagram

我想使用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个数字,然后关闭。 我希望它就像每执行一次循环就收到一个数字。

0 个答案:

没有答案