欢迎光临散文网 会员登陆 & 注册

基于川崎仿真软件K-ROSET和SOCKET-TOOL软件对川崎机器人的TCP-IP通讯功能进行仿真测试

2022-06-08 11:29 作者:Yuki_Chau  | 我要投稿

链接:https://pan.baidu.com/s/1y1jS8IhQGoWBfeH-VrzSTg 

提取码:9696

;****************************华丽丽的分割线********************************

.PROGRAM open_socket1() #8537;B 创建通信程序

re_connect:

.er_count = 1

connect:

;TCP_CONNECT 套接字号,端口号,IP地址,超时时间

  TCP_CONNECT sock_id1,port1,ip1[1],tout_open1

  IF sock_id1<0 THEN

    IF .er_count>=connect_count1 THEN

      PRINT "无法创建通信"

    ELSE

      .er_count = .er_count+1

      PRINT "创建连接错误  返回值:",sock_id1," 尝试次数:",.er_count

      ;IFPWPRINT 1,1,1,6,10="创建连接错误"

      GOTO connect  ;返回重新连接

    END

  ELSE

    PRINT "创建连接成功 返回值:",sock_id1

  END

.END

;****************************华丽丽的分割线********************************

.PROGRAM com_init1() #7998;B TCP端口号IP设定程序

  port1 = 60000          ;端口号

  ip1[1] = 192          ;IP地址数组

  ip1[2] = 168

  ip1[3] = 0

  ip1[4] = 3

;

  max_length1 = 255     ;recv数据长度

 tout_open1 = 20       ;connect超时时间

  tout1 = 10            ;send超时时间

  tout_rec1 = 10        ;recv超时时间

  sret1 = 0             ;send返回值

  ret1 = 0              ;recv返回值

  text_id1 = 0          ;判断recv的数据是否正常

  connect_count1 = 5      ;connect尝试次数

  status1=1

  finish=0

.END

;****************************华丽丽的分割线********************************

.PROGRAM close_socket1() #7856;B 中断通信程序

;TCP_CLOSE 执行结果,套接字号

  TCP_CLOSE ret1,sock_id1; 正常的套接字关闭

  IF ret<0 THEN

    PRINT "断开连接错误 返回值:(",ret1," )","错误代码:",$ERROR(ret1)

;IFPWPRINT 1,1,1,6,10="断开连接错误"

    TCP_CLOSE ret1,.sock_id1; 套接字的强制关闭 (shutdown关机)

    IF ret1<0 THEN

      PRINT "强制断开连接错误 返回值:",sock_id1

;IFPWPRINT 1,1,1,6,10="强制断开连接错误"

    END

  ELSE

    PRINT "断开连接成功 返回值:",sock_id1

  END

.END

;****************************华丽丽的分割线********************************

.PROGRAM send1() #14916560;B 发送数据程序

$send_data=”123456789”

 $send_buf1[1] = $send_data

  buf_n1 = 1 ;send元素数

;TCP_SEND 执行结果,Socket ID,发送数据字符串变量,元素数,超时时间

  TCP_SEND sret1,sock_id1,$send_buf1[1],buf_n1,tout1

    IF sret1<0 THEN

    PRINT "发送失败  返回值:",sret1

finish=0

    ;IFPWPRINT 1,2,1,6,10="发送失败"

    ELSE

    PRINT "发送成功  返回值:",sret1

finish=1

    END

.END

;****************************华丽丽的分割线********************************

.PROGRAM reCV1() #13326971;B 接收数据程序

  .num = 0 ;接收元素数

;TCP_RECV 执行结果,Socket ID,接收数据字符串变量,元素数,超时时间,数据长度

  TCP_RECV ret1,sock_id1,$recv_buf1[1],.num,tout_rec1,255

  IF ret1<0 THEN

    PRINT "接收失败 返回值:",ret1

    .$recv_buf[1] = ""

  ELSE

    IF .num>0 THEN

    PRINT "接收成功 返回值:",ret1

    PRINT "接收数据:",$recv_buf1[1]

    ELSE

    PRINT "接收数据清空"

      .$recv_buf[1] = ""

    END

  END

.END

;****************************华丽丽的分割线********************************

.PROGRAM com_test() #7117; 接受数据处理程序

  PRINT 2: "$recv_buf1[1]==",$recv_buf1[1]

  $ccdtext1=$recv_buf1[1]

   FOR .i = 0 TO 2

    $temp0 = $DECODE($ccdtext1,",",0)

    value1[.i] = VAL($temp0)

   if $ccdtext1==" " goto 10

    $temp0 = $DECODE($ccdtext1,",",1)

  END

  10

  PRINT "value[0]==",value1[0]

  PRINT "value[1]==",value1[1]

  PRINT "value[2]==",value1[2]

.END

;****************************华丽丽的分割线********************************

.PROGRAM tcpmain() #6968; 通信主程序

  CALL com_init1;端口号参数

re_connect:

;TCP_STATUS 返回值,端口号,套接字号,错误代码,错误子代码,IP地址

  TCP_STATUS .tcp_cnt1,.port1[0],.sock1[0],.err1[0],.sub1[0],.$ip_add1[0]

  PRINT "TCP_STATUS 返回值:",.tcp_cnt1

  ;PRINT "端口号",.port1[0]

  CALL open_socket1

IF sock_id1<0 THEN

    CALL close_socket1

    end

     if sock_id1==0 then

    PRINT "无法创建sock连接"

  END

  again:

  DO

  CALL send1

  until finish==1

  20

  CALL reCV1

  IF ret1<0 THEN

    GOTO 20

    status1 = 1

    PRINT "机器人接受数据是=",VAL(.$recv_buf[1])

  END

  TWAIT 0.3

  IF status1>0 THEN

    ;CALL com_test

  END

  GOTO again

.END


基于川崎仿真软件K-ROSET和SOCKET-TOOL软件对川崎机器人的TCP-IP通讯功能进行仿真测试的评论 (共 条)

分享到微博请遵守国家法律