利用socket实现Python与RobotStudio的TCP通讯
一、RobotStudio 6.08作为客户端代码
MODULE Module1
VAR socketdev socket1;
VAR string recived_string;
PROC main()
SocketClose socket1;
SocketCreate socket1;
!IP地址填本地IP,端口号一定要与Python端一致
SocketConnect socket1,"192.168.*.***",8080;
TPWrite "client and server connect successful";
WHILE OpMode()=OP_AUTO DO
SocketSend socket1\Str:="Hello server ";
SocketReceive socket1\Str:=recived_string;!接受字符串
TPWrite "Server show "+recived_string;
SocketSend socket1\Str:=recived_string;!将接受到的字符串再发送回服务器端
ENDWHILE
!报错处理
ERROR
IF ERRNO=ERR_SOCK_TIMEOUT THEN !如果长时间不操作报错,重连
RETRY;
ENDIF
IF ERRNO=ERR_SOCK_CLOSED THEN !如果意外关闭等待5s尝试重连
SocketClose socket1;
WaitTime 5;
SocketCreate socket1;
SocketConnect socket1,"192.168.*.***",8080;
ENDIF
ENDPROC
ENDMODULE
二、Python作为服务器的代码
from socket import *
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind('192.168.*.***',8080)//评论区说bind有问题的可以加个括号,感谢指正tcpSerSock.bind(('192.168.*.***',(8080)))
tcpSerSock.listen(5)
while True:
print('waiting for connection...')
tcpCliSock, addr = tcpSerSock.accept()
print('...connnecting from:', addr)
data_recv = tcpCliSock.recv(1024)
print(data_recv.decode())
while True:
message = input('>')
tcpCliSock.send(message.encode('utf-8'))
三、测试通讯
先启动Python代码,等待连接。
后启动RobotStudio的示教器自动连接。
python作为服务器端发送:Hello
RobotStudio作为客户端接受讯息:
注意事项
RobotStudio的Communication中选中616-1 PC interface,一定要打开