예제 #1
0
static void getCB(EVENT_ARGS args)
{
	/* void* node=(void*)ca_puser(args.chid); */
	struct dbr_gr_enum* edb;
	char* cdb;
	
	if(args.status==ECA_NORMAL)
	{
		if(pv_type==DBF_ENUM)
		{
			edb=(struct dbr_gr_enum*)args.dbr;
			cdb=&edb->strs[edb->value][0];
			/* strncpy(pv_value,cdb,MAX_ENUM_STRING_SIZE); */
			SEVCHK(ca_add_event(DBR_GR_ENUM,id,evCB,NULL,&event),
				"add event");
		}
		else
		{
			cdb=(char*)args.dbr;
			/* strncpy(pv_value,cdb,MAX_STRING_SIZE); */
			SEVCHK(ca_add_event(DBR_STRING,id,evCB,NULL,&event),
				"add event");
		}
	}
	else
		fprintf(stderr,"PV <%s> get failed\n",pv_name);
}
예제 #2
0
void ChannelAccessThr::AddEventsOnPage(const int page)
{
	//qDebug("AddEvents-Page[%d], VecNodeSize:%d",page, vecnode.size());
	for(size_t i = 0; i < vecnode.size(); i++)
	{
		CHNODE *pNode = &vecnode.at(i);
		//qDebug("Node(%p)", pNode);
		if(pNode == NULL) continue;
		ca_add_event(pNode->dbrequest,pNode->ch_id,eventCallback,(void*)pNode,&(pNode->ev_id));
	};
	setClearEvents(false);
}