HELLO 各位小伙伴,好几个月没和大家聊机器人了,一是自己的时间问题,二是自己觉得没什么可写的了,很多内容都可以在历史推文中找到了。但毕竟我们建立了这样的联系,我们虽然没见面,但依然是朋友。所以相信大家不建议我会有些灌水行为吧。
今天聊点什么呢,,, 聊一下信息编程吧。聊聊怎么编辑中文信息
信息编程大致分为这么几步,
1 建立中文信息脚本
2 设置信息相关的变量,并付值
3 输出信息
最后我们再聊聊机器人自带的函数如何简单编辑输出一个信息
脚本文件
建立脚本文件
脚本文件编写格式:
<?xml version="1.0" encoding="utf-8"?>
<resources xml:lang="zh" xmlns="http://www.kuka.com/schemas/kxr/2009">
<module name="txttest">
<message key="text1" number="1">
<text>第%1个方块运输完成,是否继续</text>
</message>
<message key="text2" number=“2">
<text>打完成第%1个</text>
</message>
</module>
</resources>
注意!!脚本编写完成导入后需要重新读入文件(关机)
引用脚本信息
信息中包含的内容:
作者、编号、内容
声明结构工作变量
DECL KrlMsg_T mymessage
作者:mymessage. Modul[ ]=脚本module name
编号:Nr ;整数类型
内容:Msg_txt[ ] ;脚本的message key
赋值:
mymessage = {Modul[ ] " testMessage ", Nr 1906, Msg_txt[ ] " message1"}
信息类型: 声明枚举工作变量:
DECL EKrlMsgType Type
#Quit: 将该信息提示作为确认信息发出
#STATE: 将该信息提示作为状态信息发出
#NOTIFY: 将该信息提示作为提示信息发出
赋值
Type = #Quit
信息中的变量(最多支持3个通配符)
声明结构工作变量
DECL KrlMsgPar_T Parameter[3]
Par_Type: 参数/ 通配符的类型
#VALUE: 启用变量传递文本参数(即作为字符串、INT、REAL 或 BOOL 值)
#EMPTY: 参数是空的
Parameter[3].Par_txt[26]: 在信息中的变量为文本类型,并且接受变量值
Parameter[3].Par_Int: 在信息中的变量为整数类型,并且接受变量值
Parameter[3].Par_Real: 在信息中的变量为实数类型,并且接受变量值
Parameter[3].Par_Bool: 在信息中的变量为bool类型,并且接受变量值
赋值:
Parameter[1]={ Par_Type#VALUE,Par_txt[] “jaalh”}
Parameter[2]={ Par_Type#VALUE,Par_int 2}
Parameter[3]={ Par_Type#VALUE,Par_bool TRUE}
在信息中用%1,%2,%3通配符代谢
信息选项
声明结构工作变量
DECL KrlMsgOpt_T Option
VL_Stop: TRUE 触发一次预进停止,
默认值: TRUE
Clear_P_Reset : 当复位或反选了程序后, TRUE 将删除所有状态、确认和等待信息,
默认值: TRUE
Clear_P_SAW: 通过按键“ 选择语句” (Satzanwahl) 执行了语句选择后,
TRUE 将删除所有状态、确认和等待信息
缺省值: FALSE
Log_To_DB: TRUE 使该信息提示记录在 Log 数据库中
缺省值: FALSE
赋值(默认值可省略):
Option={ VL_Stop TRUE,Clear_P_Reset TRUE, Clear_P_SAW FALSE,Log_To_DB FALSE }
生成信息
系统函数
INT Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
返回值为正数,用于确定信息是否成功发出,和发出的信息号
-1: 无法生成信息提示。(例如因为信息缓存器已过满。)
> 0: 信息提示已成功生成并以相应的识别号保存在信息缓存器中管理。
调用:
INT handle
handle = Set_KrlMsg(Type, MyMessage, Parameter[ ], Option)
删除信息:
系统函数:
BOOL Clear_KrlMsg(INT:IN)
输入值:生成信息返回的正数值
返回值:TRUE: 该信息已删除、FALSE:该信息不可删除
调用函数:
BOOL erase
Erase = Clear_KrlMsg(handle)
用机器人自带函数实现中文信息
其实机器人自带函数也能生成信息,下面几个函数就可以直接使用。
sModul[] 脚本名称
sText[] 脚本Key
;MsgNotify(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN, MsgOpt:IN)
;MsgNotifyTextPar(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, sTextPar2[]:IN, nMsgNr:IN,MsgOpt:IN)
;MsgQuit(sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
;MsgState(nHandle:OUT, sText[]:IN, sModul[]:IN, nNumPar:IN, sTextPar[]:IN, nMsgNr:IN,MsgOpt:IN)
;MsgLoop(sText[]:IN,sModul[]:IN)
;MsgDialog(nAnswer:OUT,sText[]:IN,sModul[]:IN,sTextPar[]:IN,sDialogSK1[]:IN,sDialogSK2[]:IN,sDialogSK3[]:IN,sDialogSK4[]:IN,sDialogSK5[]:IN,sDialogSK6[]:IN,sDialogSK7[]:IN,NoBrakes:IN, nMsgNr:IN,MsgOpt:IN)