Exemple #1
0
int PlMdbInit(void)
{
	sysclock_t clock;
	dbtime_t dbtime;
	int rtn;

	FlagDaySaved = FlagMonthSaved = 1;
	FlagImpSaved = 1;

	memset(PlMdbDay, PLDATA_EMPTY, sizeof(PlMdbDay));
	memset(PlMdbMonth, PLDATA_EMPTY, sizeof(PlMdbMonth));
	memset(PlMdbImp, PLDATA_EMPTY, sizeof(PlMdbImp));

	PlMdbLockId = RegisterSysLock();

	SysClockRead(&clock);
	SYSCLOCK_DBTIME(&clock, dbtime);//根据冻结时间得到冻结文件
	rtn = ReadPlMdbDay(PlMdbDay, dbtime);
	if(rtn > 0) DebugPrint(0, "load %d mets plmdb day data\n", rtn);
	//rtn = ReadPlMdbMonth(PlMdbMonth, dbtime);
	//if(rtn > 0) DebugPrint(0, "load %d mets plmdb month data\n", rtn);
	//rtn = ReadPlMdbImp(PlMdbImp, dbtime);
	//if(rtn > 0) DebugPrint(0, "load plmdb imp ok\n");
	
	SET_INIT_FLAG(PlMdbInit);
	return 0;
}
Exemple #2
0
/**
* @brief 保存载波表数据
*/
void SavePlMdb(void)
{
	sysclock_t clock;
	dbtime_t dbtime;

	printf("SavePlMdb...\n");
	PrintLog(3, "SavePlMdb...\n");

	SysClockReadCurrent(&clock);//读系统时间
	SYSCLOCK_DBTIME(&clock, dbtime);

	LOCK_PLMDB;

	//if(!FlagDaySaved) 
	//{
		SavePlMdbDay(PlMdbDay, dbtime);//根据时标存储日冻结数据
		//FlagDaySaved = 1;
	//}
/*
	if(!FlagMonthSaved) 
	{
		SavePlMdbMonth(PlMdbMonth, dbtime);
		FlagMonthSaved = 1;
	}

	if(!FlagImpSaved)
	{
		SavePlMdbImp(PlMdbImp, dbtime);
		FlagImpSaved = 1;
	}

	PlcStateSave();
*/
	UNLOCK_PLMDB;
}
Exemple #3
0
static void LoadPltData(void)
{
	char filename[64];
	sysclock_t clock;
	int len, itemlen, i, maxprd;
	plt_filedata_t *pcache;
	unsigned char *pbuf;

	ResetPltData();

	SysClockRead(&clock);
	sprintf(filename, "%sdaytest@%02d%02d%02d.db", PLT_FILEPATH, clock.year, clock.month, clock.day);
	SYSCLOCK_DBTIME(&clock, PltFileDate);
	PltFileDate.s.tick = 0;

	len = ReadBinFileCache(filename, MAGIC_FILE_PLT, PltFileCache, sizeof(PltFileCache));
	if(len < 4) return;

	pcache = (plt_filedata_t *)PltFileCache;
	if(pcache->max_prd == 0 || pcache->max_prd > MAX_FILE_PRD) return;
	if(pcache->max_met == 0 || pcache->max_met > MAX_PLCMET) return;
	itemlen = (int)pcache->max_met&0xffff;
	itemlen = itemlen*MET_DATA_LEN+PRD_HEAD_LEN;
	maxprd = (int)pcache->max_prd&0xff;
	i = maxprd*itemlen+FILE_HEAD_LEN;
	if(len != i) {
		ErrorLog("invalid file len(%d, %d)\n", len, i);
		return;
	}

	PltFileData.invaid_prd = pcache->invaid_prd;

	pbuf = (unsigned char *)pcache->prd;
	for(i=0; i<maxprd; i++) {
		memcpy(&PltFileData.prd[i], pbuf, itemlen);
		pbuf += itemlen;
	}
}
Exemple #4
0
static void PrdCheck(void)
{
	int prd, i;
	sysclock_t clock;
	unsigned short ctime;

	SysClockReadCurrent(&clock);
	ctime = clock.hour;
	ctime *= 60;
	ctime += clock.minute;

	{
		dbtime_t dbtime;

		SYSCLOCK_DBTIME(&clock, dbtime);
		dbtime.s.tick = 0;

		if(dbtime.u != PltFileDate.u) {
			ResetPltData();
			CycCount = 0;
			ReadMetsCount = OkMetsCount = 0;
			ReadMetsCount1 = OkMetsCount1 = 0;
			PltCurMetid = PLC_BASEMETP;
			CalculateMetCount();
			PltReadEnd = 0;

			PltFileDate.u = dbtime.u;
		}
	}

	for(prd=0; prd<PltConfig.prdcount; prd++) {
		if(ctime >= PltConfig.prdconfig[prd].start_time && ctime < PltConfig.prdconfig[prd].end_time) break;
	}
	if(prd >= PltConfig.prdcount) prd = -1;

	if(prd == PrdCurrent) return;

	if(PrdCurrent >= 0) {
		if(PltFileData.prd[PrdCurrent].end_hour) i = 1;
		else if(PltFileData.prd[PrdCurrent].end_min) i = 1;
		else if(PltFileData.prd[PrdCurrent].end_sec) i = 1;
		else i = 0;
		if(0 == i) {
			PltFileData.prd[PrdCurrent].end_hour = clock.hour;
			PltFileData.prd[PrdCurrent].end_min = clock.minute;
			PltFileData.prd[PrdCurrent].end_sec = clock.second;
		}

		if(ReadMetsCount > 0) {
			i = (OkMetsCount * 1000)/ReadMetsCount;
			if(i >= 0) PltFileData.prd[PrdCurrent].ok_rate = (unsigned short)i;
		}

		if(ReadMetsCount1 > 0) {
			i = (OkMetsCount1 * 1000)/ReadMetsCount1;
			if(i >= 0) PltFileData.prd[PrdCurrent].ok_rate_1 = (unsigned short)i;
		}

		PltFileData.invaid_prd = PrdCurrent+1;

		SavePltData(&clock);

		if((PrdCurrent+1) == PltConfig.prdcount) ResetPltData();
	}

	CycCount = 0;
	ReadMetsCount = OkMetsCount = 0;
	ReadMetsCount1 = OkMetsCount1 = 0;
	PltCurMetid = PLC_BASEMETP;
	CalculateMetCount();
	PltReadEnd = 0;

	if(prd >= 0) {
		PltFileData.prd[prd].start_hour = clock.hour;
		PltFileData.prd[prd].start_min = clock.minute;
		PltFileData.prd[prd].start_sec = clock.second;
	}

	PrdCurrent = prd;
}