Per,
Thank you so much for the help, it definitely got me moving along better than I was. So now I am slightly confused on where I need the incoming data to parse to. This is my connection/data receiving/parsing code:
PROC main()
data:=TargetToString(myRobtarget);
TPWrite data;
pTarget:=StringToTarget(data);
MoveJ Home,v150,z0,tool0;
WaitTime 2;
SocketClose client_socket;
Socketcreate client_socket;
SocketConnect client_socket,“192.168.125.5”,3333;
SocketSend client_socket\Str:=“Connection Successful”\NoOfBytes:=21;
! Clear the port of any data
!SocketReceive client_socket\RawData:=parse_data\Time:=1;
IF ERRNO=ERR_SOCK_TIMEOUT THEN
ENDIF
ClearRawBytes parse_data;
i:=1;
WHILE i=1 DO
peek_value:=SocketPeek(client_socket);
IF peek_value>=1 THEN
ClearRawBytes parse_data;
SocketReceive client_socket\RawData:=parse_data\Time:=25;
bytes_available:=RawBytesLen(parse_data);
SocketSend client_socket\RawData:=parse_data;
IF bytes_available>=1 THEN
UnpackRawBytes parse_data,1,command\Hex1;
IF 42=command THEN
! Read a position.
! UnpackRawBytes parse_data\Network,2,read_positionX\Float4;
! UnpackRawBytes parse_data\Network,6,read_positionY\Float4;
! UnpackRawBytes parse_data\Network,10,read_positionZ\Float4;
! ! Read an orientation.
! UnpackRawBytes parse_data\Network,14,orientationRX\Float4;
! UnpackRawBytes parse_data\Network,18,orientationRY\Float4;
! UnpackRawBytes parse_data\Network,22,orientationRZ\Float4;
! Moving relative to the tool coordinates, absolute move from position “Home” (all axes at 0 degrees)
!MoveJ RelTool(Home,read_positionX,read_positionY,read_positionZ,\Rx:=orientationRX,\Ry:=orientationRY,\Rz:=orientationRZ),v200,z0,tool0,\WObj:=wobj0;
!Read a position (x,y,z).
UnpackRawBytes parse_data\Network,2,robtarget.pos.x\Float4;
UnpackRawBytes parse_data\Network,6,robtarget.pos.y\Float4;
UnpackRawBytes parse_data\Network,10,robtarget.pos.z\Float4;
! Read tool orientation (quaternion angles).
UnpackRawBytes parse_data\Network,30,robtarget.orient.q1\Float4;
UnpackRawBytes parse_data\Network,34,robtarget.orient.q2\Float4;
UnpackRawBytes parse_data\Network,38,robtarget.orient.q3\Float4;
UnpackRawBytes parse_data\Network,42,robtarget.orient.q4\Float4;
!Read axes configuration (axis1,axis4,axis6,axisx)(“x” can refer to axis 5 at times).
UnpackRawBytes parse_data\Network,46,robtarget.confdata.cf1\Float4;
UnpackRawBytes parse_data\Network,50,robtarget.confdata.cf4\Float4;
UnpackRawBytes parse_data\Network,54,robtarget.confdata.cf6\Float4;
UnpackRawBytes parse_data\Network,58,robtarget.confdata.cfx\Float4;
!MoveJ vartarget,v100,z10,tool0,\WObj:=wobj0;
WaitTime 2;
ELSE
TPWrite "Unhandled command: "\Num:=command;
ENDIF
ENDIF
IF ERRNO>0 THEN
IF ERRNO=ERR_SOCK_TIMEOUT THEN
ELSE
i:=0;
ENDIF
ENDIF
WaitTime 1;
ENDIF
ENDWHILE
ENDPROC
I included what you posted above, below all of this code. What do I need to change in order to parse the incoming string? In other words, how would I receive a string from LabVIEW, and where what variables do I need to place the data to?
Thanks for all the help!
SM