宏相关修改a:改进宏的显示界面,能够区分关键字,数字等点击工具栏上的【加入宏代码】,或者是点击选项菜单的【加入宏代码】,均可以新建一个宏新建的宏,比以前的版本多了一段说明文字,用来介绍直接访问触摸屏的本地地址的格式把说明文字中的一小段例子直接拷贝到MacroEntry函数里面,可以看到颜色上改变了,说明文字中统一是黑色,因为被/* */注释了,所以不用编译,没有注释的部分则需要编译的,而且对于关键字,比如short,void,显示蓝色,LW显示红色,以便区分b:宏建立后,允许重命名宏的名称 右键点击宏名称,可以看到【重命名宏】选项和【删除】选项,点击重命名宏,可以弹出对话框,直接输入新的名称即可 c:支持用户直接访问触摸屏的本地地址而不需要定义变量上面这段代码,就是一段可以使用的宏代码,其中没有定义一个变量,但是满足直接访问触摸屏的本地地址的格式,即Read,Write Local address function: int ReadLocal( const char *type, int addr, int nRegs, void *buf, int flag ); int WriteLocal( const char *type, int addr, int nRegs, void *buf , int flag );也就是说,从LW200开始读2个字的数据,写到LW202开始的2个字中去,为了证明这段代码执行成功,下面在组态上放4个数值输入元件,一个功能键执行宏:离线模拟:让LW200=1,LW201=2,然后点击【宏】按钮,会发现LW202=1,LW203=2。
宏执行正常d:提供功能方便用户拷贝宏变量及宏代码右键点击宏代码变量窗口,可以看到【导入变量】选项,如果新建了一个变量后,可以发现【导出变量】选项也被激活了先点击【导出变量】,弹出另存为对话框,输入文件名t,后缀是.MPL,保存到指定文件夹: 右键点击【删除变量】,成功后,再右键点击【导入变量】,即可导入变量不同工程之间也可以这样操作,选择需要复制的代码后,右键点击复制,粘贴到指定位置相对以前的版本,拷贝老工程的宏,比较容易,不用再去一个一个地定义变量了,提高了工作效率 e:bit类型宏变量支持数组其中位变量支持数组,LW.B 0.0~0.f,该段代码是把这些位的值都置1在组态上放置16个地址为LW.B 0.0~0.f的位状态切换开关,再放置一个二进制显示的数值输入元件,地址是LW0离线模拟:点击【宏】后,显示:f:支持在屏幕上直接画图(HMI绘图函数说明)为了便于用户在HMI上绘制常规图形(直线、圆和多边形等等),特在HMI的宏操作中提供了一组绘图函数,用户可以在宏的MacroEntry函数中调用绘图函数绘图函数使用的是屏幕直角坐标系:原点在左上角,x轴向右增长,y轴向下增加一、结构体定义 新增加3个结构体:PenParam、BrushParam和Point。
1、画笔结构PenParamtypedef struct penparam{ short type; short width; int color; }PenParam; PenParam主要设定画笔的类型、宽度和颜色属性他们的取值范围见下表:参数名称值说明画笔类型:TypePS_NULL无画笔PS_SOLID平滑直线()PS_DASH 划线()PS_DOT 点线(.)PS_DASHDOT点划线()PS_DASHDOTDOT点点划线()画笔宽度:width1~8(单位:像素)如果输入的值小于最小值1,系统自动设定为最小值;如果输入的值大于最大值8,系统自动设定为最大值8画笔颜色:color0~65535建议使用使用宏RGB(r, g, b)设定颜色,其中r、g和b的取值范围是0~255系统会根据HMI的屏的颜色参数将RGB(r, g, b)的值进行转换 2、画刷结构BrushParamtypedef struct brushparam{ int type; int foreColor; int backColor; }BrushParam; BrushParam主要设定画刷的类型,前景色和背景色。
画刷类型主要设定画刷使用的填充模式:图形填充和渐变填充它们的取值范围见下表:参数名称值说明画刷类型:TypeBFS_NOBRUSH不填充BFS_SOLIDBFS_DENSE1BFS_DENSE2BFS_DENSE3BFS_DENSE4BFS_DENSE5BFS_DENSE6BFS_DENSE7BFS_DENSE8BFS_DENSE9BFS_DENSE10BFS_DENSE11BFS_DENSE12BFS_FDIAG1 BFS_BDIAG1 BFS_FDIAG2 BFS_BDIAG2BFS_FDIAG3 BFS_BDIAG3 BFS_VER1BFS_HOR1BFS_VER2BFS_HOR2BFS_VER3BFS_HOR3BFS_DIAGCROSSBFS_CROSSBFS_HORGRDT_FTTDBFS_HORGRDT_FDTTBFS_HORGRDT_FETC BFS_HORGRDT_FCTEBFS_VERGRDT_FLTRBFS_VERGRDT_FRTLBFS_VERGRDT_FETCBFS_VERGRDT_FCTEBFS_OUPGRDT_FLTTRDBFS_OUPGRDT_FRDTLTBFS_OUPGRDT_FETC BFS_OUPGRDT_FCTEBFS_ODWNGRDT_FRTTLDBFS_ODWNGRDT_FLDTRTBFS_ODWNGRDT_FETCBFS_ODWNGRDT_FCTEBFS_CONGRDT_FLTTRDBFS_CONGRDT_FRTTLDBFS_CONGRDT_FRDTLTBFS_CONGRDT_FLDTRTBFS_CENGRDT_FETC BFS_CENGRDT_FCTE 前景色:foreColor0~65535建议使用使用宏RGB(r, g, b)设定颜色,其中r、g和b的取值范围是0~255。
系统会根据HMI的屏的颜色参数将RGB(r, g, b)的值进行转换背景色:backColor0~65535建议使用使用宏RGB(r, g, b)设定颜色,其中r、g和b的取值范围是0~255系统会根据HMI的屏的颜色参数将RGB(r, g, b)的值进行转换3、点结构体Point 点结构的参数比较简单:x——点的x轴坐标;y——点的y轴坐标二、绘图函数1、矩形DrawRect(x, y, w, h, pen, brh)参数说明如下表所示:参数类型说明x整型矩形左上角x轴坐标(单位:像素)y整型矩形左上角y轴坐标(单位:像素)w整型矩形宽度(单位:像素)h整型矩形高度(单位:像素)penPenParam矩形边框画笔brhBrushParam矩形填充画刷2、圆角矩形DrawRndRect(x, y, w, h, radius, pen, brh)参数说明如下表所示:参数类型说明x整型矩形左上角x轴坐标(单位:像素)y整型矩形左上角y轴坐标(单位:像素)w整型矩形宽度(单位:像素)h整型矩形高度(单位:像素)radius整型圆角半径(单位:像素)penPenParam圆角矩形边框画笔brhBrushParam圆角矩形填充画刷3、椭圆DrawEclips(x, y, w, h, pen, brh)参数说明如下表所示:参数类型说明x整型椭圆外框矩形左上角x轴坐标(单位:像素)y整型椭圆外框矩形左上角y轴坐标(单位:像素)w整型椭圆外框矩形宽度(单位:像素)h整型椭圆外框矩形高度(单位:像素)penPenParam椭圆边框画笔brhBrushParam椭圆填充画刷4、直线DrawLine(x1, y1, x2, y2, pen)参数说明如下表所示:参数类型说明x1整型直线起点x轴坐标(单位:像素)y1整型直线起点y轴坐标(单位:像素)x2整型直线终点x轴坐标(单位:像素)y2整型直线终点y轴坐标(单位:像素)penPenParam直线画笔5、多边形DrawPolyg(pts, n, pen, brh)参数说明如下表所示:参数类型说明ptsPoint *多边形的顶点坐标数据的首地址n整型多边形顶点数据penPenParam多边形边框画笔brhBrushParam多边形填充画刷6、圆弧DrawArc(x, y, w, h, start, end, pen)参数说明如下表所示:参数类型说明x整型圆外框矩形左上角x轴坐标(单位:像素)y整型圆外框矩形左上角y轴坐标(单位:像素)w整型圆外框矩形宽度(单位:像素)h整型圆外框矩形高度(单位:像素)start整型扇形起始角度(单位:度)end整型扇形终点角度(单位:度)penPenParam圆边框画笔7、扇形DrawPie(x, y, w, h, start, end, pen, brh)参数说明如下表所示:参数类型说明x整型扇形外框矩形左上角x轴坐标(单位:像素)y整型扇形外框矩形左上角y轴坐标(单位:像素)w整型扇形外框矩形宽度(单位:像素)h整型扇形外框矩形高度(单位:像素)start整型扇形起始角度(单位:度)end整型扇形终点角度(单位:度)penPenParam扇形边框画笔brhBrushParam扇形填充画刷画图的函数,颜色直接用RGB值就可以了65536色和RGB之间有个对应关系,系统直接处理的int MacroEntry(){ PenParam pen; BrushParam brh; Point pts[5]; short buf[2] = {0}; pts[0].x = 0; pts[0].y = 0; pts[1].x = 100; pts[1].y = 0; pts[2].x = 120; pts[2].y = 150; pen.type = 1; pen.width = 0; pen.color。