雅馬哈機器人通信


  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