几个月前,我实现了一个将数据从 Matlab 发送到 Weiss WSG50 抓取器的函数。这是一个机器人抓手工具,使用二进制代码作为命令。我与 tcpip 函数建立了连接。我编写了我的命令,并将它们作为 uint8-data 以“fwrite”形式发送到抓手。我的 tcpip 对象是一个客户端。夹具服务器。夹持器成功运行命令完美。直到这里一切都按我的预期工作。
当我试图从抓手接收数据时,麻烦就开始了。抓手对每个发送的命令(可能不止一条消息)都会对 awnser 消息做出反应。但我的“BytesAvailable”保持空白。
我知道这可能很难重现,因为可能有必要接触到抓手。但最终我在设置 TCPIP 对象时做了一些基本错误。我已经尝试使用“tcpclient”,但是使用此功能发送也不起作用。
%% WORKING PART
%Preparing the gripper
gripper = tcpip('172.16.6.72',1000);
gripper.OutputBufferSize = 3000;
gripper.ByteOrder = 'littleEndian';
gripper.Timeout = 1;
fopen(gripper);
%Command
release = [170; 170; 170; 38; 8; 0; 0; 0; 160; 64; 0; 0; 210; 67; 0; 0];
release = hex2dec(release);
fwrite(gripper, uint8(release), 'uint8');
fclose(gripper);
%% NOT WORKING PART
readdata = fread(gripper,gripper.BytesAvailable);
如果“BytesAvailable”为空,那绝对是有道理的,这是行不通的。无数据无读数。我的问题是抓手有问题还是我在 tcpip 对象配置上做错了什么?