主要是把机器人当客户端对服务端的通讯,下面是机器人程序
MODULE CameraScoketCom VAR socketdev socket3; VAR string string1; VAR string string9; VAR string string10; VAR string one; VAR string two; VAR string there; VAR string four; VAR num char1; VAR num char2; VAR num end1; VAR num end2; VAR num star2; VAR num star3; VAR num end3; VAR num star4; VAR num end4; VAR bool ok; VAR pos pos1; PROC pkcamera3() SocketClose socket3; SocketCreate socket3; SocketConnect socket3, "192.168.100.91", 3000; SocketSend socket3\Str:=string1; SocketReceive socket3\Str:=string10; char1 := StrLen(string9); char2 := StrLen(string10); IF char1 >= char2 THEN GOTO guo1; ENDIF end1 := StrFind(string10,1,")"); end2 := StrFind(string10,1,"}"); star2 := StrFind(string10,1,"{"); !star3 := StrFind(string9,1,"*"); !end3 := StrFind(string9,1,"#"); star3 := StrFind(string10,1,"C"); end3 := StrFind(string10,1,"c"); star4 := StrFind(string10,1,"A"); end4 := StrFind(string10,1,"a"); !star5 := StrFind(string9,1,"B"); !end5 := StrFind(string9,1,"b"); one := StrPart(string10,2,end1 - 2); two := StrPart(string10,star2 + 1,end2 - star2 - 1); there:=StrPart(string10,star3 + 1,end3 - star3 - 1); four:=StrPart(string10,star4 + 1,end4 - star4 - 1); !five:=StrPart(string9,star5 + 1,end5 - star5 - 1); !there := StrPart(string9,star3+1 ,2); !six := StrPart(string9,star3 + 3,end3 - 3 - star3); ok := StrToVal(one,pos1); ok := StrToVal(two,pos1); ok := StrToVal(there,pos1); ok := StrToVal(four,pos1); guo1: ENDPROC ENDMODULE
其中socket通讯为两种,第一种是作客户端就是图上的编写方法,第二种是作服务器如下图所示,推荐第一种方法,第二种每次连接后再次连接前面必须关闭创建的套接字
SocketCreate server_socket; SocketBind server_socket,"192.168.0.1", 1025; SocketListen server_socket; SocketAccept server_socket, client_socket;
得到外部设备发过来的字符串需要进行相应的处理,上面用到了strFind()、StrPart()、StrToVal()函数,下面进行相应解释