EtherNet Krl 续--XML文件扩展
Posted 机器人小农
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EtherNet Krl 续--XML文件扩展相关的知识,希望对你有一定的参考价值。
接上回说的XML文件,并且说说我们怎么使用这个文件工作
如果你看到了上一期的最后,你肯定记得我们最后试着写的那一段,细心的你一定会发现和这个图上的稍有不同,
“@”是干啥的呢?
“/”是干啥的呢?
为啥这里面只有“Tag”,类型都不写吗?
那么我们继续上一期来聊聊
我们来看看这个图:
左边是用于和机器人通讯的工控机;
右边是机器人;
中间则是我们虚拟出来的存储区;
在EtherNetKrl通讯中我们需要想象一个这样的存储区,这个区域是用来我们讲数据打包或者临时存储的区域,这个区域就是我们在XML文件中定义的文字(数据类型及格式)
比如这个文件:
首先这里定义了<SEND>表示用于发送,
<XML>表示一下定义通过数据为xml数据。
<ELEMENT Tag="Robot/Data/ActPos/@X"/>表示声明了一个存储区这个区域是类似于金字塔形状的
意思是这样的,robot下面的data下面的actpos下面的x元素。
接下来我们看看如何控制这个存储区
此时需要我们在机器人程序中建立一个专门用于控制的程序,这里叫做运行程序;
在写运行程序前我们要认识几个相关的指令,或者说函数
这里面的xxx需要填写上面编写的XML文件名称
RET = EKI_Init("xxx")初始化一个通道;
RET = EKI_Open("xxx")打开一个通道;
RET = EKI_Close("xxx")关闭一个通道;
RET = EKI_Clear("xxx")清空一个通道;
RET=EKI_SetString("xxx","Buffer",Bytes[])将Bytes[]中的字符型数据存储到xxx文件中的Buffer内
RET=EKI_Set...("xxx","aaa", bbb)指令同上,数据类型不同,...处填写数据类型比如Bool,Frame,Int,Real
RET = EKI_GetBool("xxx","aaa",bbb)读取xxx文件的aaa数据,并且存储到变量bbb
RET = EKI_Get...("xxx","aaa",bbb)同样这个函数支持Bool,Frame,Int,Real还支持数组的读取
RET = EKI_Get...Array(CHAR[], CHAR[], INT[])还支持数组的读取
还有一个非常重要的函数
RET = EKI_Send("xxx", "", )发送
好了有了这些函数的支持 我们就可以开始写我们的运行程序了。
运行程序必须根据xml文件来编写。
我们根据软件包中的例子程序来研究一下吧
RET=EKI_GetString("XmlCallBack","Sensor/Message",vChar[])
读取Sensor/Message中的字符串并存储在vChar[]中
RET=EKI_GetReal("XmlCallBack","Sensor/Positions/Current/@X",vReal)
读取Sensor/Positions/Current中的x元素值并存储在vReal中
RET=EKI_GetInt("XmlCallBack","Sensor/Nmb",vInt)
读取Sensor/Nmb中的值并存储在vInt中
RET=EKI_GetBool("XmlCallBack","Sensor/Status/IsActive" ,vBOOL)
读取Sensor/Status/IsActive中的值并存储在vBOOL中
RET=EKI_GetBool("XmlCallBack","Sensor/Show/@error" ,vBOOL)
读取Sensor/Show/@error中的值并存储在vBOOL中
RET=EKI_GetFrame("XmlCallBack","Sensor/Read/xyzabc",vFrame)
读取Sensor/Read/xyzabc中的值并存储在vFrame中
RET=EKI_SetFrame("XmlCallBack","Robot/Data/LastPos", TOOL_DATA[1])
将工具1的值存储到obot/Data/LastPos中
RET=EKI_SetReal("XmlCallBack","Robot/Data/ActPos/@X", 1000.12)
将1000.12存储到Robot/Data/ActPos/的X中
RET=EKI_SetInt("XmlCallBack","Robot/Status", 12345678)
将12345678存储到Robot/Status中
RET=EKI_SetString("XmlCallBack","Robot/Mode","ConnectSensor")
将字符ConnectSensor存储到Robot/Mode中
RET=EKI_SetBool("XmlCallBack","Robot/RobotLamp/GrenLamp/LightOn",true)
将true存储到Robot/RobotLamp/GrenLamp/LightOn中
RET = EKI_Send("XmlCallBack","Robot")
发送Robot下存储的所有数据
当然首先要初始化和打开通道,结尾要关闭通道
RET=EKI_Init("XmlCallBack")
RET=EKI_Open("XmlCallBack")
发送部分
接收部分
RET=EKI_Close("XmlCallBack")
RET=EKI_Clear("XmlCallBack")
长按二维码关注
以上是关于EtherNet Krl 续--XML文件扩展的主要内容,如果未能解决你的问题,请参考以下文章