我在 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 中尝试了服务器客户端并给出了相同的错误。
在 Matlab 一侧(客户端或服务器),它无法扫描书面文本。其中,以下代码
fprintf(t,'Hi')
text = fscanf(t)
结果: 警告:读取失败:在读取之前发生超时 终结者已到。 并打印一个空文本。
请大家帮忙! 谢谢。
最佳答案
通过在客户端打开连接和写入 t 之间添加暂停来解决。
所以 Matlab 客户端如下:
t=tcpip('localhost', 4000, 'NetworkRole', 'client');
fopen(t);
pause(1);
fprintf(t,'Hi');
关于Matlab 和 C 使用套接字进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20468411/