图库中的叹号作闪烁处理,先把它做成自定义对象,然后在显示属性中加入以下C动作:
DWORD con;
static BOOL a;
con=GetTagDWord("VW100");
if (con==1)
{ if(a==1)
a=0;
else
a=1;
}
else
a=0;
return a;
VW100为使显示为1的二进制变量。
该C动作触发器为什么选择标准周期的时候,会造成其他画面窗口的闪烁?若把触发器改为变量VW100(有变化时),叹号不闪烁了,其他画面窗口也不闪烁了。不知道是什么原因,也不知道到底该如何做闪烁处理。请高手指教
问题补充:
dcount107,我用您的做法也能实现,不过还是会造成其他画面窗口的闪烁。我不知道您说的其他窗口是否设置有动态属性什么意思,我的画面窗口时用
SetVisible("Main.PDL","PID2_CMD",TRUE);
//Return-Type: BOOL
SetPictureName("Main.PDL","PID2_CMD","PID2.PDL")
//Return-Type: BOOL
这种格式写的,都是做好的PDL,然后装载到画面窗口中的。不知道有影响没有。
最佳答案
该C动作触发器为什么选择标准周期的时候,会造成其他画面窗口的闪烁?
其他画面窗口是否设置有动态属性?
若把触发器改为变量VW100(有变化时),叹号不闪烁了:VW100变化才会执行该动作,当时是正常现象。
我的做法是利用全局动作和一内部变量bFlash,打造一个通用的闪烁变量,全局脚本内容为:
int gscAction( void )
{
SetTagBit("bFlash",!GetTagBit("bFlash"));
return 0;
}
触发条件选择为周期1S或者2S即可。
具体的对象闪烁可做如下步骤,叹号>>显示>>动态对话框:
表达式: !'VW100'||'bFlash'
结果: 真--是 假--否
事件触发器: 改为“有变化时”
其他需要闪烁的可以如法炮制,只是触发变量不同而已。
---------------------------------------------------------
问题应该出在这里了,可尝试屏蔽相关代码再做测试。
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc271652.html