Luffy 发表于 2024-4-15 12:24:42

使用wgt_set_param时,输入double型变量报错

我想根据实时数据(double型,存放在地址0x2002),使用wgt_set_param来动态调整Y轴的范围,代码大致如下:
*****************************************************************************************
local max_data = 0                                        --最大数据
local min_data = 180                                        --最小数据
function on_run(screen)
      local tmp

      --判断实时数据是否更新,若更新,则修改图形 Y 轴显示范围
      if 1 == get_uint16(VT_LW, 0x2001) then
                set_uint16(VT_LW,0x2001, 0)
                tmp = get_double(VT_LW, 0x2002)
                if tmp > max_data then
                        max_data = tmp
                end
                if tmp < min_datathen
                        min_data = tmp
                end
                wgt_set_param(user_screen.RealtimeChart_LNG, user_ctrl_id.chart, 0x31, min_data)      --曲线控件的 Y 轴最小值
                wgt_set_param(user_screen.RealtimeChart_LNG, user_ctrl_id.chart, 0x32, max_data)      --曲线控件的 Y 轴最大值
      end
end
*****************************************************************************************
报错信息是:bad argument #4 to 'wgt_se...
但是显示不全
请问要怎么修改呢


dctechnology 发表于 2024-4-15 13:42:44

可以点击那个通讯记录下面的保存,对应将那个文件保存下来,用记事本打开看下具体报错的信息,根据报错信息修改看看

Luffy 发表于 2024-4-15 15:30:53

dctechnology 发表于 2024-4-15 13:42
可以点击那个通讯记录下面的保存,对应将那个文件保存下来,用记事本打开看下具体报错的信息,根据报错信息 ...

谢谢老哥,看到报错信息了
bad argument #4 to 'wgt_set_param' (number has no integer representation)
说输入的变量不是整数形式

Luffy 发表于 2024-4-15 15:36:04

dctechnology 发表于 2024-4-15 13:42
可以点击那个通讯记录下面的保存,对应将那个文件保存下来,用记事本打开看下具体报错的信息,根据报错信息 ...

已经解决,只要使用math.floor和math.ceil对double型变量进行向上和向下取整就行了
代码修改如下:
                wgt_set_param(user_screen.RealtimeChart_LNG, user_ctrl_id.chart, 0x31, math.floor(min_data))      --曲线控件的 Y 轴最小值
                wgt_set_param(user_screen.RealtimeChart_LNG, user_ctrl_id.chart, 0x32, math.ceil(max_data))      --曲线控件的 Y 轴最大值
感谢二楼老哥,提示我怎么看报错信息

lbh 发表于 2024-4-23 09:09:40

你这个用什么开发的   TFT   还是HMI
页: [1]
查看完整版本: 使用wgt_set_param时,输入double型变量报错