雅马哈机器人通信


  1. 使用软件:RCX-Studio 2020 CL
  2. 打开软件RCX-Studio 2020 CL
  3. 新建项目

 

 

 4.新建控制器

 

 

5.选择机器人

 

 

 6.等待创建完成

 

 

 7.新建一个客户端

 

 

 

注意:不要使用GP0

8.新建程序

 

 

 

9.编写程序

CLOSE  GP1
OPEN GP1
KEY1$=""   '接收KEY
XX$=""      '接收X
YY$=""      '接收Y
ZZ$=""       '接收Z
RR$=""       '接收R
TXT0$=""    '接收字符串
*LOOP1:
IF DI(20)=1 THEN
    '################################################下面的测试是请求上位机发送点位数据####################################
    '*****************请求第0点数据
    SEND "P1" TO GP1
    SEND GP1 TO TXT0$
    CALL *GP1SOCKET(TXT0$,REF KEY1$,REF XX$,REF YY$,REF ZZ$,REF RR$)
    '将接收到的数据给具体点位,,,,这个点位可以给任意P,例如P20
    LOC1(P20)=VAL(XX$)'设置P20X
    LOC2(P20)=VAL(YY$)'设置P20Y
    LOC3(P20)=VAL(ZZ$)'设置P20Z
    LOC4(P20)=VAL(RR$)'设置P20R
    DELAY 1000    
    '****************************************************
     '*****************请求第1点数据
    SEND "P2" TO GP1
    SEND GP1 TO TXT0$
    CALL *GP1SOCKET(TXT0$,REF KEY1$,REF XX$,REF YY$,REF ZZ$,REF RR$)
    '将接收到的数据给具体点位,,,,这个点位可以给任意P,例如P21
    LOC1(P21)=VAL(XX$)'设置P21X
    LOC2(P21)=VAL(YY$)'设置P21Y
    LOC3(P21)=VAL(ZZ$)'设置P21Z
    LOC4(P21)=VAL(RR$)'设置P21R
    DELAY 1000
     '****************************************************
     '*****************请求第2点数据
    SEND "P3" TO GP1
    SEND GP1 TO TXT0$
    CALL *GP1SOCKET(TXT0$,REF KEY1$,REF XX$,REF YY$,REF ZZ$,REF RR$)
    '将接收到的数据给具体点位,,,,这个点位可以给任意P,例如P22
    LOC1(P22)=VAL(XX$)'设置P22X
    LOC2(P22)=VAL(YY$)'设置P22Y
    LOC3(P22)=VAL(ZZ$)'设置P22Z
    LOC4(P22)=VAL(RR$)'设置P22R
    DELAY 1000
     '****************************************************
      '*****************请求第3点数据
    SEND "P4" TO GP1
    SEND GP1 TO TXT0$
    CALL *GP1SOCKET(TXT0$,REF KEY1$,REF XX$,REF YY$,REF ZZ$,REF RR$)
    '将接收到的数据给具体点位,,,,这个点位可以给任意P,例如P23
    LOC1(P23)=VAL(XX$)'设置P23X
    LOC2(P23)=VAL(YY$)'设置P23Y
    LOC3(P23)=VAL(ZZ$)'设置P23Z
    LOC4(P23)=VAL(RR$)'设置P23R
    DELAY 1000
     '****************************************************
ENDIF
IF DI(21)=1 THEN 
    '************下面的测试是请求视觉拍照*********
    '视觉发送的数据格式:KEY,X,Y,Z,R     
    'KEY:任意ASCII字符  例如OK,NG
    'X,Y,Z,R 坐标点
    '完整示例:   OK,111.45,-123.55,56,78,10.89
    '*********************************************
    SEND "V1" TO GP1   '请求视觉拍照     //随便发什么字符,只要定义好就行了
    SEND GP1 TO TXT0$  
    CALL *GP1SOCKET(TXT0$,REF KEY1$,REF XX$,REF YY$,REF ZZ$,REF RR$)
    IF KEY1$="OK" THEN
       '视觉拍照OK   下面将点位给具体的P点 随便哪个P点  ,例如P30
        LOC1(P30)=VAL(XX$)'设置P30X
        LOC2(P30)=VAL(YY$)'设置P30Y
        LOC3(P30)=VAL(ZZ$)'设置P30Z
        LOC4(P30)=VAL(RR$)'设置P30R
    ELSE
        '视觉拍照NG
        '**********进行NG处理  
    ENDIF    
ENDIF
GOTO *LOOP1
'*****************接收数据处理子函数*******
'V0.0:2021.132.29
'解析的数据格式为:KEY,X,Y,Z,R 总共4个逗号  上位机发送的数据严格按照该格式
'*********************************************
SUB *GP1SOCKET(HTXT$,KEY$,MX$,MY$,MZ$,MR$)  
'
    '******************变量初始化
    KEY$=""
    MX$=""
    MY$=""
    MZ$=""
    MR$="" 
    '*************************************
    '
    '
    '***************报文解析*******************
    RL%=LEN(HTXT$)+1    '接收报文长度   
    M%=0  '已检索到逗号的数量
    FOR I%=1 TO RL%
      TXT1$=MID$(HTXT$,I%,1)'提取一个字符
      IF TXT1$<>"," THEN      
          SELECT M%             '判断是第几个逗号,如果是第0个,说明还没检索到逗号,
            CASE 0
                KEY$=KEY$+TXT1$ '没检索到逗号前的内容属于KEY
            CASE 1
               MX$=MX$+TXT1$  '第一个逗号后和第二个逗号之间的内容属于X
            CASE 2
                MY$=MY$+TXT1$ '第二个逗号后和第三个逗号之间的内容属于Y
            CASE 3
                MZ$=MZ$+TXT1$ '第三个逗号后和第四个逗号之间的内容属于Z
            CASE 4
                MR$= MR$+TXT1$ '第四个逗号后和第5个逗号之间的内容属于R,如果没有第五个逗号,那么第四个逗号后面的所有内容属于R
        END SELECT
      ELSE                
        M%=M%+1   '检索到逗号加1
      ENDIF 
    NEXT
    '**********************************
END SUB

 

10使用TCP IP调试软件

使用调试软件打开一个服务端,然后再运行接携手程序

 

 

 

11:所用软件链接:

链接:https://pan.baidu.com/s/1XUUbh6Vg_KI_rN9mVUfMTg

提取码:bnkb

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM