输入框(textbox)

V2.3新增,用于替换原来的 data 的一部分

功能

显示、修改系统数据和KUI自定义变量

支持的数据

  • 诊断参数 K/D/T/C/X/Y/R/S/F/G,支持位型/字节型参数(诊断参数的非位型数据可以设置数据类型,共6种,u8/u16/u32/s8/s16/s32,s表示有符号数,u表示无符号数,数字表示数据的位数,默认为u8。形式为xxx[type],如K8[u16],表示K区8号参数,无符号16位)
  • 宏变量 #
  • 系统参数 格式可为P414, P415[1],P1105.1-[1],中括号内可以是一个数字,也可以是一个变量或者表达式。例如P415[D1],则轴号由"D1"决定。
  • 伺服参数 支持伺服参数PA,ZA-ZF/ZP,写法为PA1[3],中括号内可以是一个数字,也可以是一个变量或者表达式。例如PA1[D1],则轴号由"D1"决定。
  • KUI自定义变量 自定义变量名称可以为小写字母或小写字母+数字,不支持大写字母,为了区别于系统数据,将自定义变量包含在大括号{}内,形如{v1},非保持型变量,在{}前加两个下划线 "__" ,形如__{v1}
  • 可变变量 格式可为select{D10, (1,D11),(2, D12)},当D10的值不为1或2时控件的值显示为0,且不可捕获焦点。应该避免这样的情况发生。
  • 系统内部数据 目前支持的内部数据有:主轴原始角度__sp_angle_pos[xxx]$n、当前反馈速率__act_feed_speed$n、程序列表信息__prog_list_info[x]、U盘列表信息__usb_list_info[x]、负载绝对值__axis_torque[n]
textbox("select{D10, (1,D11),(2, D12)}", (2, 1))  #"可变变量"
textbox("__sp_angle_pos[1]", (1, 1), 隐藏)    # 1行1列处显示通道内主轴编号为1的主轴原始角度,隐藏边框。
textbox("__sp_angle_pos[D10]", (1, 2), 隐藏)  # 1行2列处显示通道内主轴编号为D10的主轴原始角度,隐藏边框。
textbox("__act_feed_speed$1", (1, 3), 隐藏)   # 1行3列处显示通道1的当前反馈速率,隐藏边框。

注:主轴号或通道号无效时显示数据为0。不支持多通道的系统软件会忽略$n。

参数

  • 描述的数据,此参数类型为字符串,写作 " #500 "
  • 控件所在位置及所占空间大小,此参数类型为元组,写作 (a, b, c, d) 其中a/b/c/d都应该是正整形值分别表示控件的 起始行/起始列/所占行数/所占列数,其中c/d可以省略,省略时值均为1。
  • 颜色(不设为默认值)
  • 字体大小(不设为默认值)
  • 读写模式:取值可以为 确认/只读,此参数可以省略,默认为 确认,此参数非字符串类型,写作 只读
  • 线框格式:取值可为 隐藏/不隐藏,此参数可以省略,默认为不隐藏,此参数类型非字符串,写作 隐藏,会隐藏控件四周的线框。
  • enable表达式:当该表达式值不为0时该控件才可以修改,等于0时控件不捕获光标,故不能修改。若不设置该参数,则可以修改。此参数为字符串类型,写作enable="#100",则只有当#100不等于0时才可以修改。(此参数仅在 确认 模式下有用)
  • id 控件名称,用于标识控件,控件名称不可重复,如果不需要可以不设置,此参数可以为数字或中英文字符串,写作 id="page1"id=1
  • action为响应动作,可以通过设置action参数实现为data控件输入值时执行相应的动作,action取值可以为 运行脚本/运行脚本文件/程序段模板 ,在 确认 模式下使用。
    • 运行脚本:语法为:action=运行脚本("xxx"),括号中的字符串为符合KUI脚本语法的若干语句。当操作者手动改变控件数据值时,将执行这些语句。
    • 运行脚本文件:语法为:action=运行脚本文件("xxx.prg"),括号中的字符串为KUI脚本文件名称,文件需放到当前目录下或写入绝对路径。当操作者手动改变控件数据值时,将执行此文件。
    • 程序段模板:语法为:action=程序段模板('''xxx'''),括号中的字符串为一个程序模板段,当操作者手动改变控件数据值时,将以其为模板生成程序段,插入当前光标之后。程序模板段可以包含任意符合KUI脚本语法的语句和一些会生成程序的模板语句,模板语句中的字符在生成程序时不变,变量则用其值来替代。例如 ''' G01 X#500'‘‘在生成程序时(假设#500值为100),会生成程序"G01 X100;"。
  • left 左边控件,right右边控件,prev上一控件,next下一控件(对应数控系统面板上的 “左”/“右”/“上”/“下"按键),当需要设置控件的光标顺序时将对应控件的id赋值给相应参数即可,4个参数可以设置0个或多个。此参数为字符串类型或数字类型,取决于跳转到的控件的id,写作 left="LA"left=1,则按系统面板上的"左"按键时,id为"LA”/1 的控件捕获光标。
  • min 从此控件输入数据值时的最小值,小于此值时会报错,操作无法完成,写作 min=1
  • max 从此控件输入数据值时的最大值,大于此值时会报错,操作无法完成,写作 max=1。(如果同时设置max和mix两个参数,则需要满足条件 “max >= min”,否则报错)(min和max两个参数仅限制从控件改变值时的输入范围,如果控件绑定的是系统变量,如宏变量#500,则当#500的值超出范围时可以正确显示,这两个参数为特定需求的情况设计,无特殊需求勿用,以免造成不必要的困扰)
  • min_length 从此控件输入数据值时的最小长度,长度小于此值时会报错,操作无法完成。小数点和数字的长度都为1,写作 min_length=1
  • max_length 从此控件输入数据值时的最大长度,长度大于此值时会报错,操作无法完成。小数点的长度为1,写作 max_length=1。(如果同时设置max_length和mix_length两个参数,则需要满足条件"max_length >= min_length",否则报错)(min_length和max_length两个参数仅限制从控件改变值时输入值的长度范围,如果控件绑定的是系统变量,如宏变量#500,则当#500的值超出长度范围可以正确显示,这两个参数为特定需求的情况设计,无特殊需求勿用,以免造成不必要的困扰)
  • anyof 限制从此控件输入数据值时的所有值,用法为 anyof=[12, 13, 14],此时从控件输入数值时必须是12/13/14中的一个,否则报错,操作无法完成。
  • noneof 限制从此控件输入数据值时不可取的所有值,用法为 noneof=[12, 13, 14],此时从控件输入数值时不能是12/13/14中的一个,否则报错,操作无法完成。(anyof和noneof两个参数仅限制从控件改变值时输入值的范围,如果控件绑定的是系统变量,如宏变量#500,则当#500的值超出范围可以正确显示,这两个参数为特定需求的情况设计,无特殊需求勿用,以免造成不必要的困扰)
  • data_type 限制从此控件输入数据值时的类型,可取的值共有三种类型 ‘int’/‘uint’/‘float’,分别代表 有符号整形/无符号整形/浮点型, 写作 `data_type=‘int’,则从此控件输入的数值仅可以是有符号整形,输入浮点型时报错。(此参数仅限制从控件改变值时输入值的类型,如果控件绑定的是系统变量,如宏变量#500,则当#500的类型与此参数不符时也可以正确显示,此参数为特定需求的情况设计,无特殊需求勿用,以免造成不必要的困扰)
  • format 对数值的显示进行格式化,格式为 format="%xxx" ,是C语言库函数printf的子集,目前仅支持几种简单的格式化,在下面列出。使用此参数时,必须使用data_type参数,且此时参数的格式化需要与data_type类型相对应。格式化时不会改变变量的值,但会改变其显示形式。一些情况可能会导致显示的值与变量真实值不符。(使用此参数时你需要明确知道你在做什么,并且不会给自己和用户带来困扰)。下面是目前支持的格式化形式。
    • textbox("{v1}", (1, 1), format="%.nf", data_type=‘float’) 此时将数据格式化为浮点型,n为正整形数值,此时控件会显示n位小数,剩余小数部分按四舍五入处理。此时必须设置data_type参数为’float’。".n"可以省略,省略时默认显示6位小数。
    • textbox("{v1}", (1, 2), format="%0nd", data_type=‘int’) 此时将数据格式化为带符号整形,n为正整形数值,此时控件中数据宽度为最小为n,左侧用0补齐,此时必须设置data_type参数为’int’或’uint’。“0n"可以省略,此时没有最小宽度限制。
    • textbox("{v1}”, (1, 3), format="%0nu", data_type=‘uint’) 此时将数据格式化为无符号整形,n为正整形数值,此时控件中数据宽度为最小为n,左侧用0补齐,此时必须设置data_type参数为’uint'。“0n"可以省略,此时没有最小宽度限制。
  • 是否显示:不显示visible=0(v3.3新增)

注:参数min/max/min_length/max_length/anyof/noneof/data_type都对数值变量的值进行了不同程度的限制,当输入的值不符合要求时控件会处于一种 未完成的状态,此时需要继续设置值或按"复位"来恢复控件操作前的状态,如果控件处于未完成状态时移动光标,此时控件中的数值会处于控件左侧,显示的值与实际 值不符。

示例

  1. 此控件的基础用法用于显示、编辑某一变量或系统参数的值,可根据需要设置控件的读写模式,线框格式等属性。
  2. action参数使操作此控件时机床能执行设定的"动作”。 例如,要实现在一个圆周上钻孔的特定功能,可以将一些数值参数定义为textbox控件,使操作者可以手动输入合适的值;一些参数只有特定的几个选项可以使用combobox控件做成下拉文本框,如钻孔的加工方式选择"G81"、“G82”、“G83”;左侧显示坐标处可以使用infolabel控件,只读显示目前的工件坐标系。

textbox

with page(510, 792, id="主页面", text=(边界白色, f20x10, 左对齐)):
    picture("圆周钻孔.bmp", (1, 1, 510, 792))
    label("绝对坐标", (350, 20, 23, 100), 绿色, f24x12)
    infolabel("#4005", (350, 121, 20, 50), 绿色, f24x12, 左对齐, 只读, choices={54: "G54", 55: "G55", 56: "G56", 57: "G57"})     #这里根据#4005的值显示目前的工件坐标系

    label("X", (390, 78, 20, 20), 居中, f24x12)
    coor("X", (390, 100, 20, 110), 右对齐, 绝对, 青色, f24x12)
    label("Y", (425, 78, 20, 20), 居中, f24x12)
    coor("Y", (425, 100, 20, 110), 右对齐, 绝对, 青色, f24x12)
    label("Z", (460, 78, 20, 20), 居中, f24x12)
    coor("Z", (460, 100, 20, 110), 右对齐, 绝对, 青色, f24x12)
    
    textbox("{v502}", (130, 654, 30, 96), 确认)
    textbox("{v503}", (170, 654, 30, 96), f20x10, 确认)
    textbox("{v504}", (210, 654, 30, 96), 确认)
    textbox("{v505}", (250, 654, 30, 96), 确认)
    combobox("{v506}", (290, 654, 30, 96), choices={81: "G81", 82: "G82", 83: "G83"})      #显示为下拉文本框,操作者可以选择钻孔方式