热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ABB实现tcp套接字通讯(客户端程序)

1、了解通讯原理:Tcp通讯:客户端:服务(器)端:1.SocketCreat:创建套接字1.SocketCreat:创建

1、了解通讯原理:

Tcp通讯:
客户端: 服务(器)端:
1.SocketCreat: 创建套接字 1.SocketCreat: 创建套接字
2.Conect: 连接IP地址 2.bind(): 绑定端口
3.Send/Receive: 发送或接收数据 3.listen: 监听
4.Close: 关闭 4.accept:(接收连接,等待客户端的连接)
等待所有输入连接,接受连接请求,并返回已建立连接客户端套接字
5.Send/Receive: 发送或接收数据
6.Close: 关闭

2、实现程序思路:

MODULE BackMainModule
PERS num StN:=25;
PERS num F:=0;
PERS num N:=2;
PERS num R1:=0;
PERS num R2:=0.2;
PERS num N2:=1;
PERS num N3:=24;
PERS num PD:=10;
PERS num NX:=0.513095;
PERS num NY:=1;
PERS num NEZ:=1;
PERS num HN:=6;
PERS num EulerY;
PERS num EZ1;
PERS num EulerX;
CONST robtarget pPickBase:=[[536.62,272.59,131.66],[0.000200255,-0.0156747,-0.999872,-0.00320096],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget pPutBase:=[[530.47,-173.80,153.21],[0.000375863,-0.015006,-0.999885,0.00224063],[-1,-1,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PERS robtarget pCCD1:=[[506.355,-173.472,133.05],[0.000380874,-0.00969365,-0.999945,0.00398781],[0,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PERS robtarget pPut;
PERS robtarget pPick;
PERS robtarget pPJZBase;
PERS robtarget pPJZ;
PERS robtarget pPhotoPos;
VAR socketdev socket_C;
VAR socketdev socket_S;
PERS string Send1:=“DD,608.845,-143.7,178.889”;
PERS string Send2;
PERS string SendJZ;
VAR string Accpet:="";
VAR string client_ip:="";
PERS string PNx:=“608.845”;
PERS string PNy:="-143.7";
PERS string YY;
PERS string PEz:=“178.889”;
CONST string KG:=",";
PERS bool StoN_OK;
PERS bool Auto_JZ;

PROC Backmain()rBackInit;WHILE TRUE DOrAccpet;rSend;WaitTime 0.2;ENDWHILE
ENDPROCPROC rBackInit()SocketClose socket_S;SocketClose socket_C;client_ip:="";SocketCreate socket_S;SocketBind socket_S,"192.168.1.10",8002;SocketListen socket_S;SocketAccept socket_S,socket_C\ClientAddress:=client_ip\Time:=WAIT_MAX;TPWrite client_ip;
ENDPROCPROC rAccpet()Accpet:="";StN:=0;N2:=0;SocketReceive socket_C\Str:=Accpet\Time:=WAIT_MAX;TPWrite Accpet;FOR i FROM 0 TO 3 DON3:=StN+1;StN:=StrFind(Accpet,N3,",");N2:=StN-N3;C:TEST iCASE 0:StoN_OK:=Strtoval(StrPart(Accpet,N3,N2),PD);CASE 1:StoN_OK:=Strtoval(StrPart(Accpet,N3,N2),Nx);CASE 2:StoN_OK:=Strtoval(StrPart(Accpet,N3,N2),Ny);CASE 3:StoN_OK:=Strtoval(StrPart(Accpet,N3,N2),NEZ);DEFAULT:GOTO C;ENDTESTENDFORTEST PDCASE 0:TPWrite "Communication_OK";WaitTime 1;CASE 1:pCCD1.trans.x:=Nx;pCCD1.trans.y:=Ny;IF Auto_JZ THENEulerX:=EulerZYX(\X,pPJZBase.rot);EulerY:=EulerZYX(\Y,pPJZBase.rot);PCCD1.rot:=OrientZYX(NEZ,EulerY,EulerX);pPJZ:=pCCD1;ELSEIF Send2="T1" THEN!+ValToStr(N+1)EulerX:=EulerZYX(\X,pPickBase.rot);EulerY:=EulerZYX(\Y,pPickBase.rot);PCCD1.rot:=OrientZYX(NEZ,EulerY,EulerX);pPick:=pCCD1;ELSEIF Send2="T3"+ValToStr(F+1) THENEulerX:=EulerZYX(\X,pPutBase.rot);EulerY:=EulerZYX(\Y,pPutBase.rot);EZ1:=NEZ;IF F+1=3 THENEulerX:=EulerX+R1;ENDIFIF F+1=4 THENEulerX:=EulerX+R2;ENDIFPCCD1.rot:=OrientZYX(NEZ,EulerY,EulerX);pPut:=pCCD1;ENDIFReset Vo_1;CASE 2:TPWrite "AUTOJZ_OK";Auto_JZ:=FALSE;Stop;CASE -2:TPWrite "CCD,NG!";IF Send2="T1" THENIncr N;TPWrite "Nothing!";YY:="NOthing";IF N>=HN THENClear N;ENDIFReset Vo_1;ELSETPWrite "T1_CW";Stop;ENDIFCASE 3:TPWrite "T2Photo_OK";IF Send2="T2" THENReset Vo_1;ELSETPWrite "DD_CW";Stop;ENDIFCASE -3:TPWrite "T2Photo_NG";IF Send2="T2" THENYY:="NG";Reset Vo_1;ELSETPWrite "DD_CW";Stop;ENDIFCASE 10:TPWrite "3DPhoto_OK";IF Send2="DD" THENEulerX:=EulerZYX(\X,pPut.rot);EulerY:=EulerZYX(\Y,pPut.rot);EulerY:=Nx;pPut.rot:=OrientZYX(EZ1,EulerY,EulerX);TPWrite "3DEY:"\Num:=EulerY;Reset Vo_1;ELSETPWrite "DD_CW";Stop;ENDIFDEFAULT:TPWrite "CCD,NG!";Stop;ENDTEST
ERRORIF ERRNO=ERR_SOCK_CLOSED THENrBackInit;RETRY;ENDIFIF ERRNO=ERR_SOCK_TIMEOUT THENWaitTime 0.2;RETRY;ENDIF
ENDPROCPROC rSend()WaitDI Vi_1,1;PNx:=ValToStr(pPhotoPos.trans.x);PNy:=ValToStr(pPhotoPos.trans.y);PEz:=ValToStr(EulerZYX(\Z,pPhotoPos.rot));Send1:=Send2+KG+PNx+KG+PNy+KG+PEz;WaitTime 0.2;SocketSend socket_C\Str:=Send1;TPWrite Send1;ERRORIF ERRNO = ERR_SOCK_CLOSED OR ERRNO = SOCKET_LISTENING THENrBackInit;RETRY;ENDIF
ENDPROCPROC rTEST1()Accpet:="";StN:=0;N2:=0;SocketReceive socket_C\Str:=Accpet;TPWrite Accpet;
ERRORIF ERRNO=ERR_SOCK_CLOSED THENrBackInit;RETRY;ENDIFIF ERRNO=ERR_SOCK_TIMEOUT THENWaitTime 0.2;RETRY;ENDIF
ENDPROC

ENDMODULE


推荐阅读
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
author-avatar
静乐思
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有