【问题标题】:Communication between Matlab and C using socketsMatlab 和 C 之间使用套接字进行通信
【发布时间】:2014-02-18 17:22:28
【问题描述】:

我在 Matlab 和 C 之间的通信中遇到问题。我在 C 中使用 client.c 创建了一个客户端,并在 Matlab 中使用 TCP/IP 创建了一个服务器:

t=tcpip('0.0.0.0', 30000, 'NetworkRole', 'server');
fopen(t);
data=fread(t, t.BytesAvailable);

但服务器收到一个空缓冲区并在 fread 处出错:

Error using icinterface/fread (line 163)
SIZE must be greater than 0.

------------------------------------------ -------------------------------------------------------

已编辑:C 中的服务器客户端运行良好。问题出在 Matlab TCP/IP 对象中,我在 Matlab 中尝试了 server-client 并给出了相同的错误。

在 Matlab 一侧(客户端或服务器),它无法扫描书面文本。其中,以下代码

fprintf(t,'Hi')
text = fscanf(t)

结果: 警告:读取失败:在读取之前发生超时 到达终结者。 并打印一个空文本。

请帮忙! 谢谢。

【问题讨论】:

    标签: c matlab sockets


    【解决方案1】:

    通过在客户端打开连接和写入 t 之间添加暂停来解决。

    所以Matlab客户端如下:

    t=tcpip('localhost', 4000, 'NetworkRole', 'client');
    fopen(t);
    pause(1);
    fprintf(t,'Hi');
    

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多