- 使用軟件:RCX-Studio 2020 CL
- 打開軟件RCX-Studio 2020 CL
- 新建項目
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$)'設置P20的X
LOC2(P20)=VAL(YY$)'設置P20的Y
LOC3(P20)=VAL(ZZ$)'設置P20的Z
LOC4(P20)=VAL(RR$)'設置P20的R
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$)'設置P21的X
LOC2(P21)=VAL(YY$)'設置P21的Y
LOC3(P21)=VAL(ZZ$)'設置P21的Z
LOC4(P21)=VAL(RR$)'設置P21的R
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$)'設置P22的X
LOC2(P22)=VAL(YY$)'設置P22的Y
LOC3(P22)=VAL(ZZ$)'設置P22的Z
LOC4(P22)=VAL(RR$)'設置P22的R
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$)'設置P23的X
LOC2(P23)=VAL(YY$)'設置P23的Y
LOC3(P23)=VAL(ZZ$)'設置P23的Z
LOC4(P23)=VAL(RR$)'設置P23的R
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$)'設置P30的X
LOC2(P30)=VAL(YY$)'設置P30的Y
LOC3(P30)=VAL(ZZ$)'設置P30的Z
LOC4(P30)=VAL(RR$)'設置P30的R
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