/** * @brief 保存综合参数 * @return 0成功, 否则失败 */ int SaveParaMix(void) { SaveBinFile(PARAM_SAVE_PATH "mix.bin", MIX_MAGIC, (unsigned char *)&ParaMixSave, sizeof(ParaMixSave)); SaveBinFile(PARAM_BAK_PATH "mix.bin", MIX_MAGIC, (unsigned char *)&ParaMixSave, sizeof(ParaMixSave)); return 0; }
void SavePlStic(void) { sysclock_t clock; int i = 0; char filename[32]; printf("SavePlStic...\n"); PrintLog(0, "SavePlStic...\n"); sprintf(filename,"/home/nandflash/data/plsticinfo"); SysClockReadCurrent(&clock);//读系统时间 if(ReadBinFile(filename, PLMDB_MAGIC, (unsigned char *)&pl_read_meter_stic, sizeof(pl_read_meter_stic)) > 0) { PrintLog(0, "ReadBinFileSucc...\n"); } else { PrintLog(0, "ReadBinFileFail...\n"); } i = clock.day; if(i < 1 || i > 31) return; pl_read_meter_stic[i - 1].read_meter_succ_cnt = check_read_meter_succ_cnt(); pl_read_meter_stic[i - 1].read_meter_prd = check_read_meter_succ_cnt()*100/(meter_total_cnt - cen_meter_cnt); LOCK_PLMDB; system("rm -r -f /home/nandflash/data/plsticinfo"); SaveBinFile(filename, PLMDB_MAGIC, (unsigned char *)&pl_read_meter_stic,sizeof(pl_read_meter_stic)); UNLOCK_PLMDB; }
/** * @brief 保存月冻结表数据 * @param pmon 缓存区指针 * @param dbtime 保存时间 * @return 成功返回保存表数, 失败返回0 */ static int SavePlMdbMonth(const plmdb_mon_t *pmon, dbtime_t dbtime) { char filename[32]; int writelen, metnum; unsigned char *pcache; plmdb_savehead_t *phead; printf("SavePlMdbMonth...\n"); PlMdbFileName(filename, PLMDB_MONTH, dbtime); DebugPrint(LOGTYPE_SHORT, "save %s...\n", filename); for(metnum=MAX_PLCMET-1; metnum>=0; metnum--) { if(ParaMeter[metnum+PLC_BASEMETP].metp_id >= PLC_BASEMETP) break; } if(metnum < 0) return 0; metnum += 1; phead = (plmdb_savehead_t *)PlMdbCache; phead->metnum1 = phead->metnum2 = metnum; pcache = (unsigned char *)(phead+1); writelen = metnum*sizeof(plmdb_mon_t); memcpy(pcache, pmon, writelen); SaveBinFile(filename, PLMDB_MAGIC, (unsigned char *)phead, writelen+sizeof(plmdb_savehead_t)); return metnum; }
/** * @brief 保存事件 * @param idx 事件分类索引(重要事件,一般事件) * @param pbuf 储存事件缓存区指针 */ static void SaveAlarm(unsigned char idx, const alarm_t *pbuf) { alarm_t *pbase; char filename[32]; unsigned char idxbase; runstate_t *pstat = RunStateModify(); AssertLogReturnVoid(idx>=2, "invalid idx(%d)\n", idx); if(0 == idx) pbase = AlarmBufferImportant; else pbase = AlarmBufferNormal; LockSysLock(LockIdAlarm); if(RunState.alarm.cur[idx] == RunState.alarm.head[idx]) //empty pstat->alarm.cur[idx] = pstat->alarm.head[idx] = 0; //pbase[RunState.alarm.cur[idx]] = *pbuf; memcpy(pbase+RunState.alarm.cur[idx], pbuf, sizeof(alarm_t)); AlarmFileName(idx, RunState.alarm.cur[idx], filename); idxbase = RunState.alarm.cur[idx] & ALARM_BASEMASK; SaveBinFile(filename, ALARM_MAGIC, (unsigned char *)&pbase[idxbase], sizeof(alarm_t)*ALMNUM_PERFILE); pstat->alarm.cur[idx]++; if(RunState.alarm.cur[idx] == RunState.alarm.head[idx]) pstat->alarm.head[idx]++; UnlockSysLock(LockIdAlarm); }
static void SavePltData(const sysclock_t *pclk) { char filename[64]; int len, prd, itemlen; plt_filedata_t *pcache; unsigned char *pbuf; sprintf(filename, "%sdaytest@%02d%02d%02d.db", PLT_FILEPATH, pclk->year, pclk->month, pclk->day); itemlen = PltConfig.maxmet*MET_DATA_LEN+PRD_HEAD_LEN; len = itemlen*PltConfig.maxprd + FILE_HEAD_LEN; AssertLogReturnVoid(len > LEN_FILE_CACHE, "too long file(%d)\n", len); pcache = (plt_filedata_t *)PltFileCache; pcache->max_prd = PltConfig.maxprd; pcache->invaid_prd = PltFileData.invaid_prd; pcache->max_met = PltConfig.maxmet; pbuf = (unsigned char *)pcache->prd; for(prd=0; prd<PltConfig.maxprd; prd++) { memcpy(pbuf, &PltFileData.prd[prd], itemlen); pbuf += itemlen; } SaveBinFile(filename, MAGIC_FILE_PLT, PltFileCache, len); }
int SavePlCjqNodeInfo(void) { char filename[32]; LOCK_PLMDB; printf("SavePlCjqNodeInfo...\n"); PrintLog(LOGTYPE_DOWNLINK, "SavePlCjqNodeInfo...\n"); system("rm -r -f /home/nandflash/data/plcjqnodeinfo"); sprintf(filename,"/home/nandflash/data/plcjqnodeinfo"); SaveBinFile(filename, PLMDB_MAGIC, (unsigned char *)&pl_cjq_info,sizeof(pl_cjq_info)); UNLOCK_PLMDB; return 1; }
/** * @brief 保存重点用户表数据 * @param pimp 缓存区指针 * @param dbtime 保存时间 * @return 成功返回保存表数, 失败返回0 */ static int SavePlMdbImp(const plmdb_imp_t *pimp, dbtime_t dbtime) { char filename[32]; printf("SavePlMdbImp...\n"); if(0 == ParaMix.impuser.num) return 0; PlMdbFileName(filename, PLMDB_IMP, dbtime); DebugPrint(LOGTYPE_SHORT, "save %s...\n", filename); SaveBinFile(filename, PLMDB_MAGIC, (unsigned char *)pimp,sizeof(PlMdbImp)); return MAX_IMPORTANT_USER; }