我在Matlab和C之间的通信方面遇到了问题。我使用client.c在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)
结果: 警告:读取失败:在超时之前发生超时 达成了终结者。 并打印一个空文本。
请帮忙! 感谢。
答案 0 :(得分:0)
通过在打开连接和写入t之间在客户端中添加暂停来解决。
所以Matlab客户端如下:
t=tcpip('localhost', 4000, 'NetworkRole', 'client');
fopen(t);
pause(1);
fprintf(t,'Hi');