• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ db_post_events函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中db_post_events函数的典型用法代码示例。如果您正苦于以下问题:C++ db_post_events函数的具体用法?C++ db_post_events怎么用?C++ db_post_events使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了db_post_events函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: monitor

static void monitor(boRecord *prec)
{
	unsigned short	monitor_mask;

        monitor_mask = recGblResetAlarms(prec);
        /* check for value change */
        if (prec->mlst != prec->val){
                /* post events for value change and archive change */
                monitor_mask |= (DBE_VALUE | DBE_LOG);
                /* update last value monitored */
                prec->mlst = prec->val;
        }

        /* send out monitors connected to the value field */
        if (monitor_mask){
                db_post_events(prec,&prec->val,monitor_mask);
        }
	if(prec->oraw!=prec->rval) {
		db_post_events(prec,&prec->rval,
		    monitor_mask|DBE_VALUE|DBE_LOG);
		prec->oraw = prec->rval;
	}
	if(prec->orbv!=prec->rbv) {
		db_post_events(prec,&prec->rbv,
		    monitor_mask|DBE_VALUE|DBE_LOG);
		prec->orbv = prec->rbv;
	}
        return;
}
开发者ID:epicsdeb,项目名称:epics-base,代码行数:29,代码来源:boRecord.c


示例2: special

static long special(DBADDR *paddr,int after)
{
    aiRecord  	*prec = (aiRecord *)(paddr->precord);
    aidset 	*pdset = (aidset *) (prec->dset);
    int          special_type = paddr->special;

    switch(special_type) {
    case(SPC_LINCONV):
	if(pdset->number<6) {
	    recGblDbaddrError(S_db_noMod,paddr,"ai: special");
	    return(S_db_noMod);
	}
	prec->init=TRUE;
	if ((prec->linr == menuConvertLINEAR) && pdset->special_linconv) {
	    double eoff = prec->eoff;
	    double eslo = prec->eslo;
	    long status;
	    prec->eoff = prec->egul;
	    status = (*pdset->special_linconv)(prec,after);
	    if (eoff != prec->eoff)
		db_post_events(prec, &prec->eoff, DBE_VALUE|DBE_LOG);
	    if (eslo != prec->eslo)
		db_post_events(prec, &prec->eslo, DBE_VALUE|DBE_LOG);
	    return(status);
	}
	return(0);
    default:
	recGblDbaddrError(S_db_badChoice,paddr,"ai: special");
	return(S_db_badChoice);
    }
}
开发者ID:T-A-R-L-A,项目名称:EPICS-Base,代码行数:31,代码来源:aiRecord.c


示例3: monitor

static void monitor(calcoutRecord *prec)
{
    unsigned        monitor_mask;
    double          *pnew;
    double          *pprev;
    int             i;

    monitor_mask = recGblResetAlarms(prec);

    /* check for value change */
    recGblCheckDeadband(&prec->mlst, prec->val, prec->mdel, &monitor_mask, DBE_VALUE);

    /* check for archive change */
    recGblCheckDeadband(&prec->alst, prec->val, prec->adel, &monitor_mask, DBE_ARCHIVE);

    /* send out monitors connected to the value field */
    if (monitor_mask){
        db_post_events(prec, &prec->val, monitor_mask);
    }

    /* check all input fields for changes*/
    for (i = 0, pnew = &prec->a, pprev = &prec->la; i<CALCPERFORM_NARGS;
         i++, pnew++, pprev++) {
        if ((*pnew != *pprev) || (monitor_mask&DBE_ALARM)) {
            db_post_events(prec, pnew, monitor_mask|DBE_VALUE|DBE_LOG);
            *pprev = *pnew;
        }
    }
    /* Check OVAL field */
    if (prec->povl != prec->oval) {
        db_post_events(prec, &prec->oval, monitor_mask|DBE_VALUE|DBE_LOG);
        prec->povl = prec->oval;
    }
    return;
}
开发者ID:epicsdeb,项目名称:epics-base,代码行数:35,代码来源:calcoutRecord.c


示例4: monitor

static void monitor(aSubRecord *prec)
{
    int            i;
    unsigned short monitor_mask;

    monitor_mask = recGblResetAlarms(prec) | DBE_VALUE | DBE_LOG;

    /* Post events for VAL field */
    if (prec->val != prec->oval) {
        db_post_events(prec, &prec->val, monitor_mask);
        prec->oval = prec->val;
    }

    /* Event posting on VAL arrays depends on the setting of prec->eflg */
    switch (prec->eflg) {
    case aSubEFLG_NEVER:
        break;
    case aSubEFLG_ON_CHANGE:
        for (i = 0; i < NUM_ARGS; i++) {
            epicsUInt32 alen = dbValueSize((&prec->ftva)[i]) * (&prec->neva)[i];
            void *povl = (&prec->ovla)[i];
            void *pval = (&prec->vala)[i];
            if (memcmp(povl, pval, alen)) {
                memcpy(povl, pval, alen);
                db_post_events(prec, pval, monitor_mask);
            }
        }
        break;
    case aSubEFLG_ALWAYS:
        for (i = 0; i < NUM_ARGS; i++)
            db_post_events(prec, (&prec->vala)[i], monitor_mask);
        break;
    }
    return;
}
开发者ID:paulscherrerinstitute,项目名称:mrfioc2,代码行数:35,代码来源:aSubRecord.c


示例5: monitor

static void monitor(subRecord *prec)
{
    unsigned monitor_mask;
    double *pnew;
    double *pold;
    int i;

    /* get alarm mask */
    monitor_mask = recGblResetAlarms(prec);

    /* check for value change */
    recGblCheckDeadband(&prec->mlst, prec->val, prec->mdel, &monitor_mask, DBE_VALUE);

    /* check for archive change */
    recGblCheckDeadband(&prec->alst, prec->val, prec->adel, &monitor_mask, DBE_ARCHIVE);

    /* send out monitors connected to the value field */
    if (monitor_mask) {
        db_post_events(prec, &prec->val, monitor_mask);
    }

    /* check all input fields for changes */
    for (i = 0, pnew = &prec->a, pold = &prec->la;
         i < INP_ARG_MAX; i++, pnew++, pold++) {
        if (*pnew != *pold) {
            db_post_events(prec, pnew, monitor_mask | DBE_VALUE | DBE_LOG);
            *pold = *pnew;
        }
    }
    return;
}
开发者ID:epicsdeb,项目名称:epics-base,代码行数:31,代码来源:subRecord.c


示例6: monitor

static void monitor(compressRecord *prec)
{
    unsigned short alarm_mask = recGblResetAlarms(prec);
    unsigned short monitor_mask = alarm_mask | DBE_LOG | DBE_VALUE;

    if (alarm_mask || prec->nuse != prec->ouse) {
        db_post_events(prec, &prec->nuse, monitor_mask);
        prec->ouse = prec->nuse;
    }
    db_post_events(prec, prec->bptr, monitor_mask);
}
开发者ID:zlxmsu,项目名称:TestEpics,代码行数:11,代码来源:compressRecord.c


示例7: putAcks

static long putAcks(DBADDR *paddr, const unsigned short *pbuffer, long nRequest,
    long no_elements, long offset)
{
    dbCommon *precord = paddr->precord;

    if (*pbuffer >= precord->acks) {
        precord->acks = 0;
        db_post_events(precord, NULL, DBE_ALARM);
        db_post_events(precord, &precord->acks, DBE_VALUE | DBE_ALARM);
    }
    return 0;
}
开发者ID:T-A-R-L-A,项目名称:EPICS-Base,代码行数:12,代码来源:dbAccess.c


示例8: asSubProcess

long asSubProcess(subRecord *precord)
{
    ASDBCALLBACK *pcallback = (ASDBCALLBACK *)precord->dpvt;

    if(!precord->pact && precord->val==1.0)  {
	db_post_events(precord,&precord->val,DBE_VALUE);
	callbackSetPriority(precord->prio,&pcallback->callback);
	asInitAsyn(pcallback);
	precord->pact=TRUE;
	return(1);
    }
    db_post_events(precord,&precord->val,DBE_VALUE);
    return(0);
}
开发者ID:A2-Collaboration,项目名称:epics,代码行数:14,代码来源:asSubRecordFunctions.c


示例9: monitor

static void monitor(selRecord *prec)
{
    unsigned short	monitor_mask;
    double		delta;
    double		*pnew;
    double		*pprev;
    int			i;

    monitor_mask = recGblResetAlarms(prec);
    /* check for value change */
    delta = prec->mlst - prec->val;
    if(delta<0.0) delta = -delta;
    if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
        /* post events for value change */
        monitor_mask |= DBE_VALUE;
        /* update last value monitored */
        prec->mlst = prec->val;
    }
    /* check for archive change */
    delta = prec->alst - prec->val;
    if(delta<0.0) delta = -delta;
    if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
        /* post events on value field for archive change */
        monitor_mask |= DBE_LOG;
        /* update last archive value monitored */
        prec->alst = prec->val;
    }

    /* send out monitors connected to the value field */
    if (monitor_mask)
        db_post_events(prec, &prec->val, monitor_mask);

    monitor_mask |= DBE_VALUE|DBE_LOG;

    /* trigger monitors of the SELN field */
    if (prec->nlst != prec->seln) {
	prec->nlst = prec->seln;
	db_post_events(prec, &prec->seln, monitor_mask);
    }

    /* check all input fields for changes, even if VAL hasn't changed */
    for(i=0, pnew=&prec->a, pprev=&prec->la; i<SEL_MAX; i++, pnew++, pprev++) {
	if(*pnew != *pprev) {
	    db_post_events(prec, pnew, monitor_mask);
	    *pprev = *pnew;
	}
    }
    return;
}
开发者ID:ukaea,项目名称:epics,代码行数:49,代码来源:selRecord.c


示例10: putAckt

static long putAckt(DBADDR *paddr, const unsigned short *pbuffer, long nRequest,
    long no_elements, long offset)
{
    dbCommon *precord = paddr->precord;

    if (*pbuffer == precord->ackt) return 0;
    precord->ackt = *pbuffer;
    db_post_events(precord, &precord->ackt, DBE_VALUE | DBE_ALARM);
    if (!precord->ackt && precord->acks > precord->sevr) {
        precord->acks = precord->sevr;
        db_post_events(precord, &precord->acks, DBE_VALUE | DBE_ALARM);
    }
    db_post_events(precord, NULL, DBE_ALARM);
    return 0;
}
开发者ID:T-A-R-L-A,项目名称:EPICS-Base,代码行数:15,代码来源:dbAccess.c


示例11: refresh_bits

/* refreshes all the bit fields based on a hardware value
   and sends monitors if the bit's value or the record's
   severity/status have changed */
static void refresh_bits(mbbiDirectRecord *prec, 
			 unsigned short monitor_mask)
{
   unsigned short i;
   unsigned short mask = 1;
   unsigned short momask;
   unsigned char *bit;

   bit = &(prec->b0);
   for (i=0; i<NUM_BITS; i++, mask = mask << 1, bit++) {
      momask = monitor_mask;
      if (prec->val & mask) {
         if (*bit == 0) {
            *bit = 1;
            momask |= DBE_VALUE | DBE_LOG;
         }
      } else {
         if (*bit != 0) {
            *bit = 0;
            momask |= DBE_VALUE | DBE_LOG;
         }
      }
      if (momask)
	 db_post_events(prec,bit,momask);
   }
}
开发者ID:zlxmsu,项目名称:TestEpics,代码行数:29,代码来源:mbbiDirectRecord.c


示例12: monitor

static void monitor(ifstatRecord *prec)
{
	unsigned short	monitor_mask;
	double		delta;

        monitor_mask = recGblResetAlarms(prec);
	/* check for value change */
	delta = prec->mlst - prec->val;
	if(delta<0.0) delta = -delta;
	if (delta > prec->mdel) {
		/* post events for value change */
		monitor_mask |= DBE_VALUE;
		/* update last value monitored */
		prec->mlst = prec->val;
	}

	/* check for archive change */
	delta = prec->alst - prec->val;
	if(delta<0.0) delta = -delta;
	if (delta > prec->adel) {
		/* post events on value field for archive change */
		monitor_mask |= DBE_LOG;
		/* update last archive value monitored */
		prec->alst = prec->val;
	}

	/* send out monitors connected to the value field */
	if (monitor_mask){
		db_post_events(prec,&prec->val,monitor_mask);
	}
	return;
}
开发者ID:RaonControl,项目名称:siteApps,代码行数:32,代码来源:ifstatRecord.c


示例13: interruptCallback

static void interruptCallback(void *drvPvt, asynUser *pasynUser,
                epicsInt32 value)
{
    devBusyPvt *pPvt = (devBusyPvt *)drvPvt;
    busyRecord *pr = (busyRecord *)pPvt->pr;
    unsigned short	monitor_mask;

    dbScanLock((dbCommon *)pr);
    asynPrint(pPvt->pasynUser, ASYN_TRACEIO_DEVICE,
        "%s devAsynBusy::interruptCallback new value=%d\n",
        pr->name, value);
    /* If the current value of the record is 1 and the new value is 0 then post monitors
     * and call recGblFwdLink 
     * Ignore the callback if pr->pact=1 because a write operation is in progress. */
    if ((pr->pact == 0) && (pr->val == 1) && (value == 0)) {
        /* If the current value of the record is 1 and the new value is 0 then post monitors
        * and call recGblFwdLink */
        asynPrint(pPvt->pasynUser, ASYN_TRACEIO_DEVICE,
            "%s devAsynBusy::interruptCallback 1 to 0 transition, posting monitors and calling recGblFwdLink\n",
            pr->name);
        pr->val = value;
        monitor_mask = recGblResetAlarms(pr);
        /* post events for value change and archive change */
        monitor_mask |= (DBE_VALUE | DBE_LOG);
        /* update last value monitored */
        pr->mlst = pr->val;
        /* send out monitors connected to the value field */
        if (monitor_mask){
            db_post_events(pr,&pr->val,monitor_mask);
        }
        recGblFwdLink(pr);
    }
    dbScanUnlock((dbCommon *)pr);
}
开发者ID:epics-modules,项目名称:busy,代码行数:34,代码来源:devBusyAsyn.c


示例14: monitor

static void monitor(aoRecord *prec)
{
	unsigned short	monitor_mask;
	double		delta;

        monitor_mask = recGblResetAlarms(prec);
        /* check for value change */
        delta = prec->mlst - prec->val;
        if(delta<0.0) delta = -delta;
        if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
                /* post events for value change */
                monitor_mask |= DBE_VALUE;
                /* update last value monitored */
                prec->mlst = prec->val;
        }
        /* check for archive change */
        delta = prec->alst - prec->val;
        if(delta<0.0) delta = -delta;
        if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
                /* post events on value field for archive change */
                monitor_mask |= DBE_LOG;
                /* update last archive value monitored */
                prec->alst = prec->val;
        }


        /* send out monitors connected to the value field */
        if (monitor_mask){
                db_post_events(prec,&prec->val,monitor_mask);
	}
	if(prec->omod) monitor_mask |= (DBE_VALUE|DBE_LOG);
	if(monitor_mask) {
		prec->omod = FALSE;
		db_post_events(prec,&prec->oval,monitor_mask);
		if(prec->oraw != prec->rval) {
                	db_post_events(prec,&prec->rval,
			    monitor_mask|DBE_VALUE|DBE_LOG);
			prec->oraw = prec->rval;
		}
		if(prec->orbv != prec->rbv) {
                	db_post_events(prec,&prec->rbv,
			    monitor_mask|DBE_VALUE|DBE_LOG);
			prec->orbv = prec->rbv;
		}
	}
	return;
}
开发者ID:A2-Collaboration,项目名称:epics,代码行数:47,代码来源:aoRecord.c


示例15: checkLinks

static void checkLinks(calcoutRecord *prec)
{

    DBLINK *plink;
    rpvtStruct *prpvt = prec->rpvt;
    int i;
    int stat;
    int caLink   = 0;
    int caLinkNc = 0;
    epicsEnum16 *plinkValid;

    if (calcoutRecDebug) printf("checkLinks() for %p\n", prec);

    plink   = &prec->inpa;
    plinkValid = &prec->inav;

    for (i = 0; i<CALCPERFORM_NARGS+1; i++, plink++, plinkValid++) {
        if (plink->type == CA_LINK) {
            caLink = 1;
            stat = dbCaIsLinkConnected(plink);
            if (!stat && (*plinkValid == calcoutINAV_EXT_NC)) {
                caLinkNc = 1;
            }
            else if (!stat && (*plinkValid == calcoutINAV_EXT)) {
                *plinkValid = calcoutINAV_EXT_NC;
                db_post_events(prec, plinkValid, DBE_VALUE);
                caLinkNc = 1;
            }
            else if (stat && (*plinkValid == calcoutINAV_EXT_NC)) {
                *plinkValid = calcoutINAV_EXT;
                db_post_events(prec, plinkValid, DBE_VALUE);
            }
        }
    }
    if (caLinkNc)
        prpvt->caLinkStat = CA_LINKS_NOT_OK;
    else if (caLink)
        prpvt->caLinkStat = CA_LINKS_ALL_OK;
    else
        prpvt->caLinkStat = NO_CA_LINKS;

    if (!prpvt->cbScheduled && caLinkNc) {
        /* Schedule another CALLBACK */
        prpvt->cbScheduled = 1;
        callbackRequestDelayed(&prpvt->checkLinkCb, .5);
    }
}
开发者ID:epicsdeb,项目名称:epics-base,代码行数:47,代码来源:calcoutRecord.c


示例16: monitor

static void monitor(struct cvtRecord *pcvt)
{
    unsigned short monitor_mask;
    double delta;

    monitor_mask = recGblResetAlarms(pcvt);
    /* check for value change */
    delta = pcvt->mlst - pcvt->val;
    if (delta < 0.0)
        delta = -delta;
    if (delta > pcvt->mdel) {
        /* post events for value change */
        monitor_mask |= DBE_VALUE;
        /* update last value monitored */
        pcvt->mlst = pcvt->val;
    }
    /* check for archive change */
    delta = pcvt->alst - pcvt->val;
    if (delta < 0.0)
        delta = -delta;
    if (delta > pcvt->adel) {
        /* post events on value field for archive change */
        monitor_mask |= DBE_LOG;
        /* update last archive value monitored */
        pcvt->alst = pcvt->val;
    }

    /* send out monitors connected to the value field */
    if (monitor_mask) {
        db_post_events(pcvt, &pcvt->val, monitor_mask);
    }
    if (pcvt->drty & DRTY_METH) {
        db_post_events(pcvt, &pcvt->meth, DBE_VALUE|DBE_LOG);
    }
    if (pcvt->drty & DRTY_SPEC) {
        db_post_events(pcvt, &pcvt->spec, DBE_VALUE|DBE_LOG);
    }
    if (pcvt->drty & DRTY_BDIR) {
        db_post_events(pcvt, &pcvt->bdir, DBE_VALUE|DBE_LOG);
    }
    if (pcvt->drty & DRTY_TDIR) {
        db_post_events(pcvt, &pcvt->tdir, DBE_VALUE|DBE_LOG);
    }
    if (pcvt->drty & DRTY_ISTA) {
        db_post_events(pcvt, &pcvt->ista, DBE_VALUE|DBE_LOG|DBE_ALARM);
    }
    if (pcvt->drty & DRTY_X) {
        db_post_events(pcvt, &pcvt->x, DBE_VALUE|DBE_LOG);
    }
    if (pcvt->drty & DRTY_Y) {
        db_post_events(pcvt, &pcvt->y, DBE_VALUE|DBE_LOG);
    }
    pcvt->drty = DRTY_NONE;
    return;
}
开发者ID:ISISComputingGroup,项目名称:EPICS-csm,代码行数:55,代码来源:cvtRecord.c


示例17: monitor

static void monitor(eventRecord *prec)
{
    unsigned short  monitor_mask;

    /* get previous stat and sevr  and new stat and sevr*/
    monitor_mask = recGblResetAlarms(prec);
    db_post_events(prec,&prec->val,monitor_mask|DBE_VALUE);
    return;
}
开发者ID:ISISComputingGroup,项目名称:EPICS-base,代码行数:9,代码来源:eventRecord.c


示例18: monitor_field

static void monitor_field(aliveRecord *prec, void *field)
{
    unsigned short  monitor_mask;

    monitor_mask = recGblResetAlarms(prec);
    monitor_mask |= DBE_VALUE;
    db_post_events(prec,field,monitor_mask);

    return;
}
开发者ID:epics-modules,项目名称:alive,代码行数:10,代码来源:aliveRecord.c


示例19: monitor

static void monitor(aliveRecord *prec)
{
    unsigned short  monitor_mask;

    monitor_mask = recGblResetAlarms(prec);
    monitor_mask |= DBE_VALUE|DBE_LOG;
    db_post_events(prec,&prec->val,monitor_mask);

    return;
}
开发者ID:epics-modules,项目名称:alive,代码行数:10,代码来源:aliveRecord.c


示例20: monitor

static void monitor(subRecord *prec)
{
    unsigned monitor_mask;
    double delta;
    double *pnew;
    double *pold;
    int i;

    /* get alarm mask */
    monitor_mask = recGblResetAlarms(prec);
    /* check for value change */
    delta = prec->val - prec->mlst;
    if (delta < 0.0) delta = -delta;
    if (!(delta <= prec->mdel)) { /* Handles MDEL == NAN */
        /* post events for value change */
        monitor_mask |= DBE_VALUE;
        /* update last value monitored */
        prec->mlst = prec->val;
    }
    /* check for archive change */
    delta = prec->val - prec->alst;
    if (delta < 0.0) delta = -delta;
    if (!(delta <= prec->adel)) { /* Handles ADEL == NAN */
        /* post events on value field for archive change */
        monitor_mask |= DBE_LOG;
        /* update last archive value monitored */
        prec->alst = prec->val;
    }
    /* send out monitors connected to the value field */
    if (monitor_mask) {
        db_post_events(prec, &prec->val, monitor_mask);
    }
    /* check all input fields for changes */
    for (i = 0, pnew = &prec->a, pold = &prec->la;
         i < INP_ARG_MAX; i++, pnew++, pold++) {
        if (*pnew != *pold) {
            db_post_events(prec, pnew, monitor_mask | DBE_VALUE | DBE_LOG);
            *pold = *pnew;
        }
    }
    return;
}
开发者ID:ISISComputingGroup,项目名称:EPICS-base,代码行数:42,代码来源:subRecord.c



注:本文中的db_post_events函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ db_printf函数代码示例发布时间:2022-05-30
下一篇:
C++ db_open函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap