技术论坛

 回复:wincc6.0 过程画面如何做到自动切换的效果

返回主题列表
作者 主题
舍得珍惜
游侠

经验值:368
发帖数:62
精华帖:0
楼主    2015-07-27 17:15:08
主题:wincc6.0 过程画面如何做到自动切换的效果
我的整个生产过程分为四个主要的画面,我想做一个类似于电脑待机时,隔一段时间自动切换一张壁纸那样的效果。
比如,有一个输入输出口,连接一个布尔型内部变量,当我输入1时,启动自动切换的效果。
如果可以的话,能检测到鼠标一定时间(5分钟)没有动作时,就启动自动切换的效果。
有没有前辈做过类似的事情,烦请指点。
甲方的这个要求,弄的我有点头大。
锋言锋语
至圣

经验值:26732
发帖数:3939
精华帖:54
7楼    2015-08-03 09:05:04
精华帖  主题:回复: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;
}
不忘初心
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。