figure(1);
kpressed = 0;
HF=figure(1);
set(HF,'KeyPressFcn','global kpressed; global HF; kpressed = get(HF,''CurrentChar'');');
exitflag = 0; while (exitflag == 0)
tic
if kpressed ~= 0
switch kpressed
case ' '
exitflag = 1;
end
end
tic
fprintf(s1,'TX:0001031A')
datastr=fscanf(s1);
data.NumberOfhandles=hex2dec(datastr(1:2));
data.HandleID=hex2dec(datastr(3:4));
if isequal(datastr([5:11,31:37]), 'MISSINGMISSING' )
data.Q0=0;
data.Qx=0;
data.Qy=0;
data.Qz=0;
data.Tx=0;
data.Ty=0;
data.Tz=0;
data.rmsError=0;
data.PortStatus=hex2dec(datastr(12:19));
data.FrameNumber=hex2dec(datastr(20:27));
data.RotMatrix=zeros(3,3);
data.HomogeneousMatrix=zeros(4,4);
data.Euler=zeros(3,1);
data.Yaw=0;
data.Pitch=0;
data.Roll=0;
data.Q02=0;
data.Qx2=0;
data.Qy2=0;
data.Qz2=0;
data.Tx2=0;
data.Ty2=0;
data.Tz2=0;
data.rmsError2=0;
data.PortStatus2=hex2dec(datastr(12:19));
data.FrameNumber2=hex2dec(datastr(20:27));
data.RotMatrix2=zeros(3,3);
data.HomogeneousMatrix2=zeros(4,4);
data.Euler2=zeros(3,1);
data.Yaw2=0;
data.Pitch2=0;
data.Roll2=0
elseif datastr(5:11)=='MISSING'
data.Q0=0;
data.Qx=0;
data.Qy=0;
data.Qz=0;
data.Tx=0;
data.Ty=0;
data.Tz=0;
data.rmsError=0;
data.PortStatus=hex2dec(datastr(12:19));
data.FrameNumber=hex2dec(datastr(20:27));
data.RotMatrix=zeros(3,3);
data.HomogeneousMatrix=zeros(4,4);
data.Euler=zeros(3,1);
data.Yaw=0;
data.Pitch=0;
data.Roll=0;
data.Q02=str2double(datastr(31:36))/10000;
data.Qx2=str2double(datastr(37:42))/10000;
data.Qy2=str2double(datastr(43:48))/10000;
data.Qz2=str2double(datastr(49:54))/10000;
data.Tx2=str2double(datastr(55:61))/100;
data.Ty2=str2double(datastr(62:68))/100;
data.Tz2=str2double(datastr(69:75))/100;
data.rmsError2=str2double(datastr(76:81));
data.PortStatus2=hex2dec(datastr(82:89));
data.FrameNumber2=hex2dec(datastr(90:97));
data.RotMatrix2=Quat2RotMat(data.Q02,data.Qx2,data.Qy2,data.Qz2);
data.HomogeneousMatrix2=HomoMatrix(data.Q02,data.Qx2,data.Qy2,data.Qz2,data.Tx2,data.Ty2,data.Tz2);
data.Euler2=RotMat2Euler(data.RotMatrix2);
data.Yaw2=data.Euler2(1);
data.Pitch2=data.Euler2(2);
data.Roll2=data.Euler2(3);
elseif datastr(75:81)=='MISSING'
data.Q0=str2double(datastr(5:10))/10000;
data.Qx=str2double(datastr(11:16))/10000;
data.Qy=str2double(datastr(17:22))/10000;
data.Qz=str2double(datastr(23:28))/10000;
data.Tx=str2double(datastr(29:35))/100;
data.Ty=str2double(datastr(36:42))/100;
data.Tz=str2double(datastr(43:49))/100;
data.rmsError=str2double(datastr(50:55));
data.PortStatus=hex2dec(datastr(56:63));
data.FrameNumber=hex2dec(datastr(64:71));
data.RotMatrix=Quat2RotMat(data.Q0,data.Qx,data.Qy,data.Qz);
data.HomogeneousMatrix=HomoMatrix(data.Q0,data.Qx,data.Qy,data.Qz,data.Tx,data.Ty,data.Tz);
data.Euler=RotMat2Euler(data.RotMatrix);
data.Yaw=data.Euler(1);
data.Pitch=data.Euler(2);
data.Roll=data.Euler(3);
data.Q02=0;
data.Qx2=0;
data.Qy2=0;
data.Qz2=0;
data.Tx2=0;
data.Ty2=0;
data.Tz2=0;
data.rmsError2=0;
data.PortStatus2=hex2dec(datastr(82:89));
data.FrameNumber2=hex2dec(datastr(90:97));
data.RotMatrix2=zeros(3,3);
data.HomogeneousMatrix2=zeros(4,4);
data.Euler2=zeros(3,1);
data.Yaw2=0;
data.Pitch2=0;
data.Roll2=0;
else
data.Q0=str2double(datastr(5:10))/10000;
data.Qx=str2double(datastr(11:16))/10000;
data.Qy=str2double(datastr(17:22))/10000;
data.Qz=str2double(datastr(23:28))/10000;
data.Tx=str2double(datastr(29:35))/100;
data.Ty=str2double(datastr(36:42))/100;
data.Tz=str2double(datastr(43:49))/100;
data.rmsError=str2double(datastr(50:55));
data.PortStatus=hex2dec(datastr(56:63));
data.FrameNumber=hex2dec(datastr(64:71));
data.RotMatrix=Quat2RotMat(data.Q0,data.Qx,data.Qy,data.Qz);
data.HomogeneousMatrix=HomoMatrix(data.Q0,data.Qx,data.Qy,data.Qz,data.Tx,data.Ty,data.Tz);
data.Euler=RotMat2Euler(data.RotMatrix);
data.Yaw=data.Euler(1);
data.Pitch=data.Euler(2);
data.Roll=data.Euler(3);
data.Q02=str2double(datastr(75:80))/10000;
data.Qx2=str2double(datastr(81:86))/10000;
data.Qy2=str2double(datastr(87:92))/10000;
data.Qz2=str2double(datastr(93:98))/10000;
data.Tx2=str2double(datastr(99:105))/100;
data.Ty2=str2double(datastr(106:112))/100;
data.Tz2=str2double(datastr(113:119))/100;
data.rmsError2=str2double(datastr(120:125));
data.PortStatus2=hex2dec(datastr(126:133));
data.FrameNumber2=hex2dec(datastr(134:141));
data.RotMatrix2=Quat2RotMat(data.Q02,data.Qx2,data.Qy2,data.Qz2);
data.HomogeneousMatrix2=HomoMatrix(data.Q02,data.Qx2,data.Qy2,data.Qz2,data.Tx2,data.Ty2,data.Tz2);
data.Euler2=RotMat2Euler(data.RotMatrix2);
data.Yaw2=data.Euler2(1);
data.Pitch2=data.Euler2(2);
data.Roll2=data.Euler2(3);
end
figure(1)
plot3(data.Tx2,data.Ty2,data.Tz2,'b*',data.Tx,data.Ty,data.Tz,'r*')
xlim([-200 200]);
ylim([-200 200]);
zlim([-1000 -500]);
drawnow
toc
end