赞
踩
1. 编写XML格式通讯配置文件
配置文件示例(KUKA_EKL.xml):
- <ETHERNETKRL>
- <CONFIGURATION>
- <EXTERNAL>
- <IP>192.168.0.1</IP>
- <PORT>8080</PORT>
- </EXTERNAL>
- <INTERNAL>
- <ALIVE Set_Flag="100"/>
- </INTERNAL>
- </CONFIGURATION>
- <RECEIVE>
- <RAW>
- <ELEMENT Tag="recv" Type="STREAM" EOS="13" Set_Flag="101"/>
- </RAW>
- </RECEIVE>
- <SEND>
- <RAW>
- <ELEMENT Tag="send" Type="STREAM" EOS="13"/>
- </RAW>
- </SEND>
- </ETHERNETKRL>
配置文件结构如下:
配置文件完成后需要拷贝到机器人的C:/KRC/ROBOTER/Config/User/Common/EthernetKRL文件夹内。
2. 编写机器人SRC程序
通讯使用到的EKI函数:
EKI_STATUS=EKI_Init(CHAR[]) ; 初始化连接
EKI_STATUS=EKI_Open(CHAR[]) ; 打开连接
EKI_STATUS=EKI_Close(CHAR[]) ; 关闭连接
EKI_STATUS=EKI_Clear(CHAR[]) ; 删除连接
EKI_STATUS=EKI_Send(CHAR[],CHAR[],INT) ; 发送数据
EKI_STATUS=EKI_GetString(CHAR[],CHAR[],CHAR[]) ; 读取数据
案例程序流程:
案例程序代码:
- _ret=EKI_Init(XML_KRL[])
-
- _ret=EKI_Open(XML_KRL[])
-
- wait for $flag[100]
-
- Offset = 0
- SWRITE(_byte_send[], State, Offset,"%d,%d,%d", 100, 200, 300)
-
- _ret = EKI_Send(XML_KRL[], _byte_send[])
-
- wait for $flag[101]
-
- _ret=EKI_GetString(XML_KRL[],"recv",_byte_recv[])
-
- halt
-
- ;parse received data
- cnt=-1
- i=1
- indx=1
- while(cnt<>0)
- delim=44
- cnt=StrFind(i, _byte_recv[], delim, #NOT_CASE_SENS)
- if cnt<>0 then
- for j=1 to cnt-1
- _recv_buffer[j]=_byte_recv[i+j-1]
- endfor
- ok=STRTOREAL(_recv_buffer[], _recv_data[indx])
- if ok then
- indx=indx+1
- else
- halt
- endif
- for j=1 to cnt-1
- _recv_buffer[j]=0
- endfor
- i=i+cnt
- halt
- else
- 6
- cnt=StrLen(_byte_recv[])
- for j=1 to cnt-i+1
- _recv_buffer[j]=_byte_recv[i+j-1]
- endfor
- ok=STRTOREAL(_recv_buffer[], _recv_data[indx])
- if ok then
- indx=indx+1
- else
- halt
- endif
- for j=1 to cnt-i+1
- _recv_buffer[j]=0
- endfor
- cnt=0
- halt
- endif
- ENDWHILE
-
- _ret=EKI_Close(XML_KRL[])
- _ret=EKI_Clear(XML_KRL[])
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。