KUI脚本语法

KUI脚本语法与系统宏程序语法基本相同,不同之处在下面列出

  • KUI脚本强制规定每一个语句占一行
  • KUI脚本的使用场景有switch/data/combobox/textbox/button/menu中的action参数和menu的生成程序功能。可以将若干KUI脚本语句写成一个编码格式 为"带BOM的UTF-8"或"GBK"的文件,将文件名作为"运行脚本文件",“生成程序"函数的参数,或者直接将若干KUI脚本语句写在一个三引号 ''' '''中, 作为"运行脚本"函数的参数。具体使用方法见相应控件的说明。

KUI脚本中的字符串需要用双引号括起表示
从V2.5开始,未初始化的宏变量和KUI自定义变量在KUI脚本中使用其值时会报错"脚本执行错误"

简介

KUI脚本语法仅支持在KUI的执行脚本或执行脚本文件中使用。脚本同时支持KUI脚本语法和lua语法

语法分类:

1.宏程序中支持的常用数学函数,KUI脚本仅支持其"双精度"的形式,用法和含义相同。
2.不支持GOTO 3.不支持OPENWRITE、CLOSEWRITE、WRITE
4.不支持位操作,如<<>>、&、XOR 5.不支持CALL和PARAMS

IF语句

包括IF、ELSEIF、ELSE、ENDIF

IFxxxTHEN             // 此行为一个语句,占一行
xxx
ELSEIFxxxTHEN         // 此行为一个语句,占一行
xxx
ELSE
xxx
ENDIF

WHILE语句

WHILE语句使用ENDWHILE结束,WHILE语句可以嵌套使用,ENDWHILE与上边距离最近的未组合的WHILE DO组合。

WHILExxxDO        // 此行为一个语句,占一行
xxx
ENDWHILE 

FOR语句

支持FOR循环,语法为:

FOR a=b TO c BY d DO // a只能是一个自定义变量或宏变量中的局部变量,
xxx     //[b,c]是一个闭区间。d为变量a每次的递增值,默认为1,可正、可负也可以是浮点数
ENDFOR  // 当a不在[b,c]区间之内时结束循环

FOR #a1= 1 TO 20 DO           // 此行为一个语句,占一行
xxx                           //中间代码循环20次
ENDFOR

FOR #1= 10 TO 1 BY -1.9 DO    // 此行为一个语句,占一行
xxx                           //中间代码循环5次
ENDFOR

REPEAT语句

支持REPEAT重复,语法为:

REPEAT  //重复开始
xxx //中间代码重复执行
UNTIL xxx ENDREPEAT //满足条件时退出循环

循环和条件语句嵌套

上面的三种 “条件” 及 “循环” 语句可以嵌套使用,例如IF语句中嵌套一个FOR循环

IFxxxTHEN                    // 此行为一个语句,占一行
FOR #1= 10 TO 1 BY -1.9 DO   // 此行为一个语句,占一行
xxx                          //中间代码循环5次
ENDFOR
ELSE
xxx
ENDIF

BREAK/EXIT跳出

针对循环、重复语句,提供了BREAK和EXIT跳出功能。BREAK/EXIT跳出当前循环。

REPEAT
#500=#500+1
IF #500==50 THEN
BREAK   //当满足条件执行到BREAK语句时,跳出当前循环
ENDIF
UNTIL #500==100 ENDREPEAT

自定义变量

支持自定义变量,自定义变量的名字由小写字母或小写字母+数字组成。自定义变量在KUI脚本中的使用方法为将变量名前面加上”#" 直接使用,自定义变量语法格式与宏程序中的宏变量语法格式相同;自定义变量也可以在data控件中使用,格式为{变量名}。

data("{v2}", (1, 2))  # 自定义变量为v2,在KUI脚本中使用格式为#v2,#v2的使用语法与宏程序中宏变量相同

设置和读取数控系统数据

KUI脚本支持设置和读取数控系统数据。(系统参数、宏变量、诊断参数(只有KDTC和F区的部分参数可以赋值)、伺服参数)

格式为:#["参数名称"]
// 这种直接使用的形式对诊断参数有一定限制,因为无法指定诊断参数的位数,均默认为u8。
// 可以使用下面介绍的PLC函数指定诊断参数的位数。
#103=#["P1115"]         //读取系统参数P1115到#103
#["P1105.5-3"]=1        //系统参数P1105.5-3设置为1 
#500=#["D5"]            //读取D5的值到#500
#["K0.3"]=1             //K0.3设置为1
#["PA5-4"]=50           //伺服参数PA5-4设为50

宏变量读写

VAR函数: 读取或设置某个宏变量的值,语法为:

第1个参数为宏变量号,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量;第2个参数为要赋给此宏变量的值,值的类型和第1个参数一样(可选)。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=VAR[12] //将宏变量#12的值赋给自定义变量v2。
#v2=VAR[12, 233] //将233赋值给宏变量#12,再赋值给自定义变量v2。
#v2=VAR[#v1, #v3] //将自定义变量v3的值赋给自定义变量v1表示的宏变量号。
#v2=VAR[#v1, PLC["D1", "u8"]] //将PLC参数D1的值赋值给自定义变量v1表示的宏变量号

通道宏变量PVAR函数: 可以读取多通道系统的宏变量的值,语法为:PVAR[100, 0, 0]

通道宏变量: PVAR[100, 0, 0]第一个参数表示宏变量号,第二个参数表示通道索引,第三个参数表示通道类型(0:主通道,1:辅助通道)

#500=PVAR[5401, 1, 0] //将主通道2的宏变量#5401的值赋给宏变量#500。
#501=PVAR[5401, 0, 1] //将辅助通道1的宏变量#5401的值赋给宏变量#501。

通道宏变量VARALIAS (变量名称),可以读取多通道系统的宏变量的值,语法为:VARALIAS["参数1", 参数2, 参数3, 参数4, 参数5]

其中,参数1: 表示为宏变量别名 参数2: 表示轴号或偏移 参数3: 表示通道索引 参数4: 表示通道类型(0:多通道,1:辅助通道) 参数5: 表示需要赋值的值

例如:读1轴机床坐标语法为#502=VARALIAS["ABSMT", 1, 0, 0]。写G54坐标系的第2轴值为100,其语法为 #503=VARALIAS["WZG54", 2, 0, 0, 100]

#502=VARALIAS["ABSOT",1]   
#503=VARALIAS["WZG54", 2, 0, 0, VARALIAS["ABSOT",1]]

PLC数据读写

  • PLC函数,读取或设置某个PLC参数的值,语法为:
第1个参数为PLC参数地址,可以是写在双引号中的地址字符串、表示字符串的KUI自定义变量或者STRCONCAT函数的返回值(此处不能将函数返回值赋值给变量), 支持位型地址;第2个参数为PLC参数的类型,当第1个参数为位型地址时此处类型写"u8";第3个参数为赋给PLC参数的值,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量(第3个参数是可选的)。
被赋值的PLC参数必须是可被赋值的。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=PLC["K1.1", "u8", 1]  // 将PLC参数K1.1赋值为1,再将#v2赋值为1。
#v2=PLC["D1", "u8"]     // 将PLC参数的D1的值赋给v2, D1数据类型为u8。
#v2=PLC["D1", "u8", 122]// 将PLC参数的D1的值设置为122,再赋给v2, D1数据类型为u8
#v2=PLC["D1", "u8", #v3]// 将自定义变量v3的值赋给D1,再赋给v2。
#v2=PLC["D88", "u32", PLC["D96", "u32"]] //将D96的值赋给D88。
#v2=PLC["D1", "u8", #["P1115"]] //将系统参数P1115赋值给D1,再赋给v2。
  • PLCCFG函数,读写PLC配置,语法为:
第1个参数为索引,第二个参数为值,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量(可选)
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=PLCCFG[0]    //获取PLCCEG[0]的值赋给v2
#v2=PLCCFG[0,33] //获取PLCCEG[0]设置为33,再赋给v2

系统参数读写

PRM函数,读取或设置某个系统参数的值,语法为:

第1个参数为参数号;第2个参数为位型索引,不是位型时需要将此参数设置为8;第3个参数为轴号,非轴型参数需要将此参数设置为0;第4个参数为赋给系统参数的值,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量(可选)。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=PRM[1105, 1, 2]    //获取系统参数P1105.1-2的值赋给v2
#v2=PRM[1105, 1, 2, 1 ] //系统参数P1105.1-2设置为1,再赋给v2
#v2=PLC["D88", "u32", PRM[1115, 8, 0]] //将P1115的值赋给D88。

伺服参数读写

SVPRM函数,读取或设置某个伺服参数的值,语法为:

第1个参数为参数号;第2个参数为位型索引,不是位型时需要将此参数设置为8;第3个参数为轴号;第4个参数为赋给伺服参数的值,此参数可以是任何KUI脚本中支持的数字类型的值,函数结果及其组成的表达式,例如一个字面值、宏变量、KUI自定义变量(可选)。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2=SVPRM["PA10", 1, 2]//获取系统参数PA10.1-2的值赋给v2
#v2=SVPRM["PA10", 1, 2, 1 ]//系统参数PA10.1-2设置为1,再赋给v2

IO配置读写

DIOCFG函数,读取或设置某个IO配置的值,语法为DIOCFG[参数1, 参数2, 参数3, 参数4]

其中:参数1: 范围0-3,分别表示DI、DO、DI-Valid、DO-Valid 参数2: 范围0-16,0表示本地模块,1-8表示总线模块1-8,32表示远程模块 参数3: 表示模块数据位,本地模块0-96,总线模块0-64,远程模块0-320 参数4: 表示写入的值,仅当参数1为0或1时可写入

#v2= DIOCFG[0, 0, 2, 50] //写入功能码50到本地DI配置的X0.2中

读取总线诊断

BUSDGN函数,读取或设置某个IO配置的值,语法为BUSDGN[参数1, 参数2, 参数3]

其中:参数1: 总线诊断的参数号 参数2: 参数的位数,若为单字节参数,则该位应设为8 参数3: 参数的轴号,1表示为第1轴,2表示为第2轴,以此类推

#v2= BUSDGN[554, 8, 2] //读取总线诊断第2轴的参数554的值赋给#v2

读取轴名称

COOR_NAME函数,获取通道内轴的绝对名称,语法为COOR_NAME[参数1, 参数2, 参数3]

其中:参数1: 表示通道内轴号 参数2: 表示通道index,默认为0,表示通道1 参数3: 表示通道类型,默认为0表示主通道,1表示辅助通道

例如:第2轴名为Z,第3轴名为Y,#501=501,#502=502,执行脚本后生成程序:G0 X100;Z501;Y502;

menu("生成", 生成程序('''G00 X100
LINE[STRCONCAT[COOR_NAME[2], #501]]
LINE[STRCONCAT[COOR_NAME[3,0,0], #502]]''', is_file=False))

内部变量读写

CNC_DATA函数,获取通道内轴的绝对名称,语法为CNC_DATA[参数1, 参数2, 参数3, 参数4, 参数5]

其中:参数1: 表示CNC_DATA变量名称如sp_m3_code 参数2: 轴号或主轴号 参数3: 表示通道index,默认为0,表示通道1 参数4: 表示通道类型,默认为0表示主通道,1表示辅助通道 参数5: 表示设置值。

例如:读取内部变量系统时间年__sys_time[0]、读写内部变量目标件数__goal_count、读写内部变量通道1的主轴1的M03代码 __sp_m3_code[1]

menu("读取", 运行脚本('''#500= CNC_DATA["sys_time", 0]'''))   # 读取系统时间
menu("赋值", 运行脚本('''#500= CNC_DATA["goal_count", 0, 0, 0, 100]'''))  # 设置目标件数为100并赋值给#500
menu("赋值", 运行脚本('''#500= CNC_DATA["sp_m3_code", 1, 0, 0, 33]'''))   # 设置主通道1的主轴1的M03代码为33

EXPORT函数

EXPORT函数,输出数控系统的参数到U盘,目前只支持输出PLC配置参数,语法为:

menu("执行脚本", 运行脚本("EXPORT[\"plccfg\"]")  # 菜单名称"执行脚本",键按下时向U盘输出PLC配置参数

执行伺服指令

V1.5新增

执行伺服命令以TU2指令为例,语法为:

SVOPR["TU2",  XXX]  // XXX可以是轴名字符串,如"A";可以是轴号数字,如 1;也可以是KUI的自定义变量

#v1=#["D5"]        // 在此处定义KUI自定义变量v1,赋值为系统诊断参数D区5号参数
SVOPR["TU2", #v1]  // 此处操作的是v1代表的轴号

支持的伺服指令有DEF/BA/RS/TU1/TU2/TU3/B-TU3/TU4/TU5/TU6/TU7/A-TU7/B-TU7/TU8/TU9/TUF/D/CL

弹出对话框

弹出对话框一般要根据操作者按下的软按键执行不同操作,故多和IF语句同时使用,格式如下:

KUI脚本文件换行符号为\n,但是KUI脚本字符串中换行符号为\\n,例如下方为字符串时的换行写法。

IF RESULT_OK==MSGBOX["是否给宏变量#500赋值\\n确认: #500=100\\n取消: 取消操作", MB_OKCANCEL, "提示"] THEN
    #500=100
ENDIF

MSGBOX函数用于定义对话框的内容,MSGBOX[参数1,参数2,参数3],例如:MSGBOX["提示内容", MB_OKCANCEL, "标题名称"]

  • 参数1:为对话框中间部分显示的字符串,\n表示另起一行,设计对话框时根据系统的显示结果调整换行情况;
  • 参数2:为弹出对话框时在下方软按键处显示的选项,共有
    • MB_OK:软按键处仅显示"确定 “一个选项,其选项值为0
    • MB_OKCANCEL:软按键处显示"确定”、“取消” 两个选项,其选项值为1
    • MB_ABORTRETRYIGNORE:软按键处显示"终止"、 “重试” 、“忽略” 三个选项,其选项值为2
    • MB_CANCELRETRYCONTINUE:软按键处显示"取消"、 “重试” 、“继续” 三个选项,其选项值为3
    • MB_RETRYCANCEL:软按键处显示"重试"、“取消” 两个个选项,其选项值为4
    • MB_YESNO:软按键处显示"是"、“否"两个选项,其选项值为5
    • MB_YESNOCANCEL:软按键处显示"是”、 “否” 、“取消” 三个选项,其选项值为6
  • 参数3:为对话框的标题栏内容;
  • 参数4:为对话框的相对/绝对位置,目前仅支持最新V7软件,默认居中显示

MSGBOX函数的返回值取决于操作者按下的软按键。下方表格列出了软按键名称、其对应的中文和按下之后的返回值。上面的七种组合形式为目前支持的所有形式,用户不能自定义新的组合。

软按键名称(参数2) 中文名称 返回值 返回值数据
MB_OK 确定 RESULT_OK 1
MB_CANCEL 取消 RESULT_CANCEL 2
MB_ABORT 终止 RESULT_ABORT 3
MB_RETRY 重试 RESULT_RETRY 4
MB_IGNORE 忽略 RESULT_IGNORE 5
MB_CONTINUE 继续 RESULT_CONTINUE 6
MB_YES RESULT_YES 7
MB_NO RESULT_NO 8
相对位置 写法 相对位置 写法 相对位置 写法
左上 ALIGN_TL 左中 ALIGN_ML 左下 ALIGN_MB
中上 ALIGN_TM 中中 ALIGN_MM 中下 ALIGN_MM
右上 ALIGN_TR 右中 ALIGN_MR 右下 ALIGN_MR

如下所示,对话框的标题为"提示",中间的文字内容在\\n处换行,下方软按键处有两个选项为"确定"和"取消"。按下"确定"软按键时的返回值为 RESULT_OK,将执行#500=100赋值操作。

menu("赋值", 运行脚本('''IF RESULT_OK==MSGBOX["是否给宏变量#500赋值\\n确认: #500=100\\n取消: #500=0", MB_OKCANCEL, "提示"] THEN
    #500=100
ELSE
    #500=0
ENDIF'''))

# 相对位置写法
menu("弹窗", 运行脚本('''IF RESULT_OK==MSGBOX["是否给宏变量#500赋值\\n确认: #500=100\\n取消: 取消操作", MB_OKCANCEL, "报警", ALIGN_BL] THEN
    #500=100
ENDIF'''))

# 绝对位置写法
menu("弹窗", 运行脚本('''IF RESULT_OK==MSGBOX["是否给宏变量#500赋值\\n确认: #500=100\\n取消: 取消操作", MB_OKCANCEL, "报警", 100, 56] THEN
    #500=100
ENDIF'''))

servp-opr

页面跳转函数

PAGE函数,跳转至某个自定义页面。

PAGE[xxx]     // xxx为相应页面的id,运行此函数时将跳转到id为xxx的页面,xxx可以是双引号括起的字符串也可以是数字,取决于跳转到的页面的id。

面板函数

脚本里支持打开和关闭面板 (v3.4新增)

PANEL["dlg1"]  # 打开面板dlg1
CLOSE_PANEL[""]  # 关闭面板

定时脉冲函数

脚本里支持设置定时脉冲,可以增加弹窗提示 (v3.6新增),写法为:TIMER_PULSE["K1.1", 1000]

其中:参数1: 表示脉冲信号 参数2: 表示脉冲时间间隔

menu("脉冲脚本", action=运行脚本('''IF RESULT_YES==MSGBOX["是否执行K1.1定时脉冲,有疑问请咨询KND", MB_YESNOCANCEL, "提示"] THEN
                                    TIMER_PULSE["K1.1", 1000]
                                    ENDIF'''))

MSG函数

脚本里支持在程序页面中MSG信息中打印信息,语法为:MSG["xxx"]

menu("MSG", 运行脚本('''MSG["KUI"]'''))   # 打印MSG信息内容为KUI

ERR函数

脚本里支持报警弹窗信息,该报警弹窗不会影响系统的程序运行,语法为:ERR[参数1, 参数2]

其中:参数1: 表示报警号 参数2: 表示报警内容信息

menu("ERR", 运行脚本('''ERR[100, "KUI", "报警内容2"]'''))   # 打印报警信息

坐标系测量

脚本里支持直接对坐标系进行测量操作,写法为:MEASURE_COOR[5501,0,0,0]

其中:参数1: 表示工件坐标系(仅坐标系宏变量号) 参数2: 表示通道索引(默认为0) 参数3: 表示通道类型(0:多通道, 1:辅助通道, 默认为0) 参数4: 表示测量数值(默认为0)

menu("坐标测量", 运行脚本('''MEASURE_COOR[5401, 0, 0, 10]'''))   # 主通道1的G54坐标系进行坐标测量

角度转换

一般在脚本中配合三角函数时使用,例如:SIN[RAD[30]]

  • DEG函数,弧度值转角度值。
  • RAD函数,角度值转弧度值。

数学符号

KUI脚本中支持常规数学符号,例如:π:PI、三角函数等。

名称 符号 名称 符号 名称 符号 名称 符号
π PI 正无穷 INF 正无穷 PINF 负无穷大 NNIF
零值 ZERO 正零 PZERO 负零 NZERO 非数字 NAN
判断是否有限数 FINITE 判断是否为无穷大 ISINF 判断是否为NAN ISNAN 浮点绝对值 FABS
向下取整 FLOOR 截断小数 FIX 向上取整 CEIL 向上取整 FUP
截断函数 TRUNC 四舍五入 ROUND 平方根函数 SQRT 反正弦 ASIN
反余弦 ACOS 正弦函数 SIN 余弦函数 COS 正切函数 TAN
反正切 ATAN 以2为底对数 LOG2 以10为底对数 LOG10 自然对数(e) LOG
自然对数(e) LN 指数函数(e) EXP 以2为底指数 EXP2 幂函数 POW
二进制转换 BIN BCD转换 BCD 绝对值 ABS 判断为空 ISNULL
角度转弧度 RAD 弧度转角度 DEG

读写位数据

一般用于读取位数据,语法为:BIT[参数1, 参数2]

其中:参数1: 表示参数号 参数2: 参数位数

例如:将F19000.1赋值给#500,写为:#500=BIT[#["F19000"], 1]

menu("赋值", 运行脚本('''#500=BIT[#["F19000"], 1]'''))   # 读取F19000.1的值并赋值给#500
menu("赋值", 运行脚本('''#500=BIT[#["F19000"], 5, 1]'''))   # 将F19000的第5位置为1后返回F19000的数值,并不是将F19000的第5位置为1

与或非运算

与运算语法为:&、或运算语法为:&、非运算语法为:~

menu("与", 运行脚本('''#500=#["F19000.0"]&#["F19000.1"]'''))
menu("或", 运行脚本('''#500=#["F19000.0"]|#["F19000.1"]'''))
menu("非", 运行脚本('''#["F19001.0"]=~#["F19000.1"]'''))

最小值运算

最小值运算语法为MIN[aa, bb, cc, ...]

menu("最小值", 运行脚本('''#500=MIN[10, 5, 9, 100]'''))   # #500等于MIN函数中的最小值
menu("最小值", 运行脚本('''#500=MIN[#600, #601, 9, 100]'''))   # #500等于MIN函数中的最小值

最大值运算

最小值运算语法为MAX[aa, bb, cc, ...]

menu("最大值", 运行脚本('''#500=NAX[10, 5, 9, 100]'''))   # #500等于MAX函数中的最大值
menu("最大值", 运行脚本('''#500=MAX[#600, #601, 9, 100]'''))   # #500等于MAX函数中的最大值

平均值运算

最小值运算语法为MEAN[aa, bb, cc, ...]

menu("平均值", 运行脚本('''#500=MEAN[10, 5, 9, 100]'''))   # #500等于MEAN函数中的平均值
menu("平均值", 运行脚本('''#500=MEAN[#600, #601, 9, 100]'''))   # #500等于MEAN函数中的平均值

ISNOTNULL函数

ISNOTNULL函数,判断一个KUI自定义变量或者宏变量是否被初始化

V2.5新增

ISNOTNULL[xxx]   // xxx为某个宏变量或者KUI自定义变量,当xxx未被初始化时返回false,已被初始化时返回true。

ISINT函数

ISINT函数,判断一个KUI自定义变量或者宏变量是否为整数型

ISINT[xxx]   // xxx为某个宏变量或者KUI自定义变量,当xxx不为int型时返回false,xxx为整数时返回true。

字符串函数

  • STRFORMAT函数,格式化字符串,语法为: 注:前面介绍的PLC函数、PRM函数、SVPRM函数都可以和此函数联合使用以实现动态改变参数地址的目的
第1个参数为带有"转换说明符"的待格式化字符串,其中可以有1个或多个"转换说明符","转换说明符"由%和其右边一个字符组成,不同字符表示不同含义,%d格式化整数,向0取整;%u格式化无符号整数,小于0的数格式化为0,大于0的数向0取整;%s格式化字符串;从第2个参数开始的n个参数依次对应第1个参数中的第n个"转换说明符"。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2= STRFORMAT["D%d", #v1] //format D%d给v2
#v2= STRFORMAT["D%d F%s", #v1, #vm]//format D%d F%s给v2
#v2= PLC[STRFORMAT["D%d", #v1], "u32", 112] // 将112赋值给相应地址的D区参数,地址号由自定义变量v1决定。
  • STRCONCAT函数,连接若干字符串,语法为:
此函数可以有2~n个参数,每个参数为写在双引号中的字符串/表示字符串的KUI自定义变量或者STRCONCAT函数的返回值。
本函数强制将结果赋值给某一个变量,如果不想使用结果可以将结果赋值给一个不被使用的变量。如果将此函数结果作为某一函数的参数时不能将结果赋值给变量。
#v2= STRCONCAT["D1 ", "D2"]//结果为"D1 D2"赋给v2
#v2= STRCONCAT["D1 ", "D2", "D3"]//结果为"D1 D2D3"赋给v2
#v2= STRCONCAT[STRCONCAT["D1 ", "D2"], "D3"] // 和上1行结果等价,第2个函数不能将返回值赋值给变量
  • 将自定义变量格式化为字符串 (V2.7开始支持)

格式化自定义变量为字符串,语法为:

[#v1:06u]       // 中括号不能省略,"["右侧必须是一个自定义变量,冒号后面为格式化控制字符。
// 此语法主要用于生成程序时,将变量格式化为字符串,生成程序时所有的变量都会默认被当做数值处理,此语法可以更精细的控制生成程序的格式。

格式化控制字符主要由一些数字和字符组成,其详细含义和组合形式在下面给出。
最右侧的字符含义如下
    c - 接受一个数字, 并将其转化为ASCII码表中对应的字符
    d, i - 接受一个数字并将其转化为有符号的整数格式
    o - 接受一个数字并将其转化为八进制数格式
    u - 接受一个数字并将其转化为无符号整数格式
    x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母
    X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母
    e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e
    E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E
    f - 接受一个数字并将其转化为浮点数格式
    g(G) - 接受一个数字并将其转化为e(E, 对应G)及f中较短的一种格式
    q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式
    s - 接受一个字符串并按照给定的参数格式化该字符串

为进一步细化格式, 可以在字符左侧添加参数. 参数将以如下的顺序读入:
    (1)符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.
    (2)占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.
    (3)对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
    (4)宽度数值
    (5)小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符, 如6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如5.3s)则设定该字符串只显示前n位.