- 使用软件: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