发表于:2011/8/4 13:52:24
#0楼
我做的用户归档脚本,用于实现整点,当班的归档操作,但是,有时候整点归档会连续动作两次,请帮我看看问题出在哪里
程序如下:
脚本1:
if (GetTagWord("minute")==0) SetTagBit("tmp_bit_3",1); //Return-Type: WORD
else SetTagBit("tmp_bit_3",0); //小时触发, 每时0分
if ((GetTagWord("tmp_hour") != GetTagWord("hour")) & ((GetTagWord("hour")-GetTagWord("tmp_hour"))==1 | (GetTagWord("hour")-GetTagWord("tmp_hour"))== -23)) SetTagBit("tmp_bit_8",1);
else SetTagBit("tmp_bit_8",0);//小时脉冲
SetTagWord("tmp_hour",GetTagWord("hour");
if (GetTagBit("tmp_bit_3") & GetTagBit("tmp_bit_8")) SetTagBit("tmp_bit_15",1);
脚本2:
#include "apdefap.h"
int gscAction( void )
{
if (GetTagBit("tmp_bit_15"))
{
if (!GetTagBit("tmp_bit_25")) // & (GetTagWord("tmp_time_hour") != GetTagWord("hour"))) //若出现小时归档的缺少,极有可能是因为此句条件不满足,直接跳到了SHIFT
{ //int tmp;
SetTagWord("tmp_time_hour",GetTagWord("hour"));
SetTagSDWord("hour_archive_id",-1);
SetTagSDWord("hour_archive_job",6);
//此处为正点归档的累计,省略
SetTagBit("tmp_bit_25",1); //hour归档中。。。。。
}
if (GetTagSDWord("hour_archive_job") != 6 & GetTagSDWord("@UA_total_Job") != 6 & GetTagBit("tmp_bit_25") )
{
SetTagBit("tmp_bit_15",0);
// SetTagBit("tmp_bit_20",0);
if (GetTagBit("tmp_bit_18") | GetTagBit("tmp_bit_17")) SetTagBit("tmp_bit_21",1); //hour动作完成,若有班归档的信号,转移归档操作
// else SetTagBit("tmp_bit_21",0);
SetTagBit("tmp_bit_25",0); //hour归档完毕
}
}
return 0;
}
注:
hour取自SYSTEM INFO中系统时间小时值,minute为分值,tmp_hour为一个内部变量 ,用于存储上次执行时的小时值。
程序如下:
脚本1:
if (GetTagWord("minute")==0) SetTagBit("tmp_bit_3",1); //Return-Type: WORD
else SetTagBit("tmp_bit_3",0); //小时触发, 每时0分
if ((GetTagWord("tmp_hour") != GetTagWord("hour")) & ((GetTagWord("hour")-GetTagWord("tmp_hour"))==1 | (GetTagWord("hour")-GetTagWord("tmp_hour"))== -23)) SetTagBit("tmp_bit_8",1);
else SetTagBit("tmp_bit_8",0);//小时脉冲
SetTagWord("tmp_hour",GetTagWord("hour");
if (GetTagBit("tmp_bit_3") & GetTagBit("tmp_bit_8")) SetTagBit("tmp_bit_15",1);
脚本2:
#include "apdefap.h"
int gscAction( void )
{
if (GetTagBit("tmp_bit_15"))
{
if (!GetTagBit("tmp_bit_25")) // & (GetTagWord("tmp_time_hour") != GetTagWord("hour"))) //若出现小时归档的缺少,极有可能是因为此句条件不满足,直接跳到了SHIFT
{ //int tmp;
SetTagWord("tmp_time_hour",GetTagWord("hour"));
SetTagSDWord("hour_archive_id",-1);
SetTagSDWord("hour_archive_job",6);
//此处为正点归档的累计,省略
SetTagBit("tmp_bit_25",1); //hour归档中。。。。。
}
if (GetTagSDWord("hour_archive_job") != 6 & GetTagSDWord("@UA_total_Job") != 6 & GetTagBit("tmp_bit_25") )
{
SetTagBit("tmp_bit_15",0);
// SetTagBit("tmp_bit_20",0);
if (GetTagBit("tmp_bit_18") | GetTagBit("tmp_bit_17")) SetTagBit("tmp_bit_21",1); //hour动作完成,若有班归档的信号,转移归档操作
// else SetTagBit("tmp_bit_21",0);
SetTagBit("tmp_bit_25",0); //hour归档完毕
}
}
return 0;
}
注:
hour取自SYSTEM INFO中系统时间小时值,minute为分值,tmp_hour为一个内部变量 ,用于存储上次执行时的小时值。