| 作者 | 主题 |
|---|---|
|
舍得珍惜 游侠 经验值:368 发帖数:62 精华帖:0 |
楼主
主题:wincc6.0 过程画面如何做到自动切换的效果
我的整个生产过程分为四个主要的画面,我想做一个类似于电脑待机时,隔一段时间自动切换一张壁纸那样的效果。
比如,有一个输入输出口,连接一个布尔型内部变量,当我输入1时,启动自动切换的效果。 如果可以的话,能检测到鼠标一定时间(5分钟)没有动作时,就启动自动切换的效果。 有没有前辈做过类似的事情,烦请指点。 甲方的这个要求,弄的我有点头大。 |
|
锋言锋语 至圣 经验值:26732 发帖数:3939 精华帖:54 |
7楼
主题:回复:wincc6.0 过程画面如何做到自动切换的效果
自动切换有数组, 全局脚本, 周期触发
#include "apdefap.h" int gscAction( void ) { #pragma option(mbcs) const char* p[4] = {"pdl1", "pdl2", "pdl3", "pdl4"}; static int i = 0; extern int flag; if(flag) return 0; OpenPictrue(p[i++ % 4]); return 0; } int flag = 0; 附: 判断鼠标不动的脚本, 1分钟周期 #include "apdefap.h" int gscAction( void ) { #pragma option(mbcs) #pragma code("user32.dll") BOOL GetCursorPos( LPPOINT lpPoint); #define cmp(a, b) (a.x == b.x && a.y == b.y) static POINT lastPos; POINT currPos; static int count = 0; extern int flag; GetCursorPos(&currPos); if(cmp(currPos, lastPos)) { ++count; } else { count = 0; flag = 0; //恢复正常状态 } if(5 == count) { //鼠标5分钟不动满足 printf("Trig\r\n"); flag = 1; count = 0; } //printf("(%d, %d), (%d, %d)\r\n", lastPos.x, lastPos.y, currPos.x, currPos.y); lastPos = currPos; return 0; }
不忘初心
|