程序上设置的是先接收,然后在发送数据。
主程序
PROC main()
SocketIni;// 调用Socket初始化子程序
WHILE TRUE DO
SocketReceiveData;// 调用接收数据子程序
Start_Stop;
RobotState;
SocketSendData;// 调用发送数据子程序
ENDWHILE
Socket初始化
PROC SocketIni()
SocketClose socketServer;!close server
SocketClose client_socket;!close client connection
Client_Ip := "";
SocketCreate socketServer;!create socket
SocketBind socketServer, Sever_IP_Address, Sever_Port;!bind Ip and port
SocketListen socketServer;
SocketAccept socketServer,client_socket\ClientAddress:=Client_Ip\Time:=WAIT_MAX;!accept client connection
ENDPROC
Socket数据接收
PROC SocketReceiveData()
ReceiveData :=[0,0,0,0,0,0,0,0,0,0];
SocketReceive client_socket \Data:= ReceiveData;!Receive Data
arrReceiveData:=ReceiveData;
arrSendData{3} := arrReceiveData{3};
arrSendData{4} := arrReceiveData{4};
!TPWrite ByteToStr(ReceiveData{1});
!WaitTime 0.1;
!TPWrite ByteToStr(ReceiveData{3});
!Start_Stop;
ProgramName;
ERROR
IF ERRNO=ERR_SOCK_CLOSED THEN
SocketIni;
RETRY;
ENDIF
IF ERRNO=ERR_SOCK_TIMEOUT THEN
SocketIni;
WaitTime 0.2;
RETRY;
ENDIF
ENDPROC
Socket数据发送
PROC SocketSendData()
IF SendData{1}=0 THEN
WaitTime 0.2;
arrSendData{1}:=1;
ELSE
WaitTime 0.2;
arrSendData{1}:=0;
ENDIF
SendData:=arrSendData;
SocketSend client_socket\Data:=SendData;
ERROR
IF ERRNO = ERR_SOCK_CLOSED OR ERRNO = SOCKET_LISTENING THEN
SocketIni;
RETRY;
ENDIF
ENDPROC
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
我的知识库
本文地址: ABB机器人||Socket服务器程序代码
本文地址: ABB机器人||Socket服务器程序代码