Example #1
0
/**
* @brief 瑞斯康任务处理
* @param arg 端口号
*/
void PlRscStdTask(void * arg)
{
	unsigned long ev;
	struct amr_module_t* pmodule = (struct amr_module_t*)arg;
	
	PrintLog(LOGTYPE_DOWNLINK, "PlRscStdTask running... \n");
		
	Sleep(30);
	
	
	PlRscStdStartRecv(pmodule);
	PlRscStdModuleInit(pmodule);
//	InitAmrMetMap(pmodule, 1);
	while(1){
		SysClearCurrentTaskState();

		/*检查是否需要启动自动抄表*/
//		plstopflag = PlRscStdAmrStartCheck(pmodule);

		//接收数据帧并处理
		if(!Pl3762RecvPkt(pmodule)) PlRscStdMsgProc(pmodule);
		/*事件处理*/
		SysWaitEvent(&pmodule->comm_event, 0, AMREVENT_ALL, &ev);
		if(ev) PlRscStdEventProc(pmodule, ev);
		
		Sleep(2);
	}
}
Example #2
0
/**
* @brief 多功能表计通信任务
*/
static void *CenMetTask(void * arg)
{
	unsigned long ev;
	sysclock_t clock;

	Sleep(500);
	SysClockReadCurrent(&clock);
	while(1) 
	{
		SysWaitEvent(&CenMetEvent, 1, METEV_WAIT, &ev);

		if(ev&METEV_RDMET) //根据抄表间隔自动抄读总表数据
		{
			CenMetProc();//抄读总表数据
		}

		if(ev&METEV_1MIN) // 1分钟计算
		{
			UpdateMdbUseEne();//更新用电量数据库
		}

		if(ev&METEV_DAY) // 日冻结
		{ 
			UpdateCurveDay();
			SysClockReadCurrent(&clock);
		}
	}

	return 0;
}
Example #3
0
/**
* @brief 多功能表计统计任务
*/
static void *CenMetSticTask(void * arg)
{
	unsigned long ev;

	SysAddCTimer(60, CTimerCMetStic, 0);

	while(1) {
		SysWaitEvent(&CMetSticEvent, 1, CMSEV_1MIN, &ev);

		if(ev&CMSEV_1MIN) {
			UpdateMdbTGrpPower();// 更新(计算)总加组功率
			UpdateMdbStic();
		}
	}
}