几个月前,我实现了一个功能,该功能可将数据从Matlab发送到Weiss WSG50抓手。这是一个机械手抓取工具,使用二进制代码作为命令。我与tcpip函数建立了连接。我编写了命令,并以uint8-data的形式将“ fwrite”与“ 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对象配置上做错了什么?