-
目的
***新发布的RobotWare6.10添加了一个新功能,该功能使示教器的用户交互指令如UIMessageBox等支持Unicode字符,我们知道在此之前,使用Rapid语言编程,如果需要使用UIMessageBox等指令和用户进行交互时,只能使用ISO8859-1字符集也就是西文字符显示给用户,对于英语掌握不太好的操作人员,这增加了操作机器人系统的难度。但是从RW6.10开始,工程师或开发人员在开发系统时,可以把中文字符添加到UIMessageBox等指令中,在需要和用户交互信息的场景时,极大简化了操作人员使用系统的难度。
需要注意的是,该功能并不只支持中文字符,它支持多语言切换,也就是说,开发人员需要对系统支持的所有语言提供字符支持,如果其中某一个语言没有提供数据文档,那么系统会自动使用英语显示,所以英语格式的字符串数据文档必须提供。
2.使用方法
2.1.编制多语言字符数据文档
2.1.1.英语XML数据文档
前面提到,英语是默认格式,所以在创建所有其他语言的数据文档前,首先要创建标准的英语格式字符数据文档。数据文档以XML格式保存,下面是一个文件名为“holiday.xml”的英语XML数据文档内容:
该数据文档是以资源的形式导入到机器人系统中的,所以其中需要注意的是该数据的资源名必须在系统中***,不能和其他命名冲突。上面文档的资源名为holiday。所有的字符串均有一个数字格式的ID,通常从1开始编号,依次增加,不能重复。
2.1.2.中文XML数据文档
有了默认的英文字符串XML数据文档,我们就可以编制同样格式的中文字符串XML数据文档,下面同样是一个文件名为“holiday.xml”的中文XML数据文档内容
除了语言和字符串的值不一样外,其他均需保持一致。如果还需要支持其他种类的语言,如日语、俄语等,可以以此类推,逐个编制对应的语言数据XML文档。当然也可以不编制,这样当示教器切换到日语、俄语等其它语言时,UIMessageBox上显示的还是英语。
2.2.文档结构
创建一个文件夹,文件夹名为“WACDemoCfg”,在里面再创建一个子文件夹“language”,然后在文件夹“language”里创建两个语言文件夹“en”和“zh”,语言文件夹命名需符合ISO 639标准。把前面创建的两个“holiday.xml”放到对应的语言文件夹中。目录和文件结构如下所示:
WACDemoCfg
│ install.cmd
│
└─language
├─en
│ holiday.xml
│
└─zh
holiday.xml
2.3.Install.cmd
上面显示的文件结构还有一个名称为“install.cmd”没有说明,它的内容如下:
setstr -strvar $TMP_ARC -value $BOOTPATH
setstr -strvar $BOOTPATH -value "$HOME/WACDemoCfg"
register -type rapid_text -resource holiday -min 1 -max 6 -prepath$BOOTPATH/language/ -postpath /holiday.xml
setstr -strvar $BOOTPATH -value "$TMP_ARC"
该段指令的目的就是把刚刚创建的多语言资源文件加载到机器人系统中,资源名为“holiday”,多语言字符串ID从1到6。
2.4.Home文件夹
为了让系统自动加载语言文件包,我们需要把前面创建好的“WACDemoCfg”文件夹复制到机器人系统Home目录下,并新建一个“ext_install.cmd”命令文件,该文件的内容如下:
#
include -path $HOME/WACDemoCfg/install.cmd
整个加载文件的目录结构如下:
Home
│ ext_install.cmd
│
└─WACDemoCfg
│ install.cmd
│
└─language
├─en
│ holiday.xml
│
└─zh
holiday.xml
当所有文件准备好并放到对应的目录位置后,我们需要重置系统,只有在系统重置后,多语言字符资源文件才会导入到机器人系统中,供程序使用。
2.5.Rapid程序
系统重启后,我们就可以在程序中自由使用资源文件中字符串了,示例代码如下:
PROC HolidayRoutine()
VAR string strHeader;
VAR string strMessage1;
VAR string strMessage2;
VAR string strMessage3;
VAR string strMessage4;
VAR string strMessage5;
strHeader:="{{holiday:1}}";
strMessage1:="{{holiday:2}}";
strMessage2:="{{holiday:3}}";
strMessage3:="{{holiday:4}}";
strMessage4:="{{holiday:5}}";
strMessage5:="{{holiday:6}}";
UIMsgBox\Header:=strHeader,strMessage1\MsgLine2:=strMessage2\MsgLine3:=strMessage3\MsgLine4:=strMessage4\MsgLine5:=strMessage5\Buttons:=btnOKCancel\Icon:=iconInfo;
ENDPROC
从上面代码我们可以看到,如果需要调用资源文件中的字符串,需要使用"{{holiday:1}}"格式,其中hodilay为资源名,1为对应的字符串ID。