📄 c_seqproc.cpp
字号:
// (Version 1.00 :: 10-Mar-1999 :: Harutoshi Yoshida)
/*===================================================================
俲俽俧(恔搙忣曬僱僢僩儚乕僋)
-----------------------------------
慡懱偺僔乕働儞僗(Earthquake)
-----------------------------------
Program Name : C_SeqProc.cpp
Program Start : 23-Dec-1998
===================================================================*/
#include "stdafx.h"
#include "C_ComProc.h"
#include "C_SeqProc.h"
#include "C_Proc.h"
#include "C_Work.h"
#include "KSG_File.h"
/*-------------------------------------
m:26-Dec-1998
@p << 僐儞僗僩儔僋僞 >>
-------------------------------------*/
CC_Seq::CC_Seq()
{
int hdl;
char *name;
struct _stat buf;
// 捠怣 LOG Open
name = Data_dir[FLE_LOG];
hdl = Open(name, _O_BINARY | O_RDWR);
if (hdl == -1){
hdl = _stat(name, &buf); // 僼傽僀儖懚嵼僠僃僢僋
if (hdl == -1){ // 僼傽僀儖偑柍偐偭偨傜
hdl = Creat(name);
Close(hdl);
hdl = Open(name, _O_BINARY | O_RDWR);
LogMaxR= 1;
// Index 彂偒崬傒
Seek(LogHdl, 0L, SEEK_SET);
Write(LogHdl, (char*) &LogMaxR, 4);
}
}
if (hdl != -1){
LogHdl = hdl;
// Index 撉傒弌偟
Seek(LogHdl, 0L, SEEK_SET);
Read(LogHdl, (char*) &LogMaxR, 4);
LogEnb = 1; // 儘僌彂偒崬傒壜擻
}
else{
LogHdl = -1;
SysErrStack(E_ComLogNoOpn); // 捠怣儘僌僼傽僀儖偑俷倫倕値偱偒傑偣傫偱偟偨
LogEnb = 0; // 儘僌彂偒崬傒壜擻
}
}
/*-------------------------------------
m:26-Dec-1998
@p << 僨僗僩儔僋僞 >>
-------------------------------------*/
CC_Seq::~CC_Seq()
{
// 捠怣 LOG Close
Close(LogHdl);
}
/*-------------------------------------
m:16-Dec-1998
@p << 僒儞僾儕儞僌僨乕僞偺僶僀僫儕曄姺 >>
ret: 1:MAX 峏怴
0:峏怴柍偟
-------------------------------------*/
int GetT_id_ch(char *src)
{
int a, b;
char t_id[10], t_buf[10];
// 22-Mar-2004
for (a=0;a<8;a++){
t_id[a] = src[a];
}
t_id[a] = 0;
for (a=0;a<MAX_CH;a++){
#if !ATSUGI
for (b=0;b<8;b++){
t_buf[b] = SetPara[a].NewTId[b];
}
t_buf[b] = 0;
if (!strcmp(t_id, t_buf)){
break;
}
#endif
}
if (a == MAX_CH) a = -1;
return (a);
}
int CC_Seq::E_quakeChgDat(int ch, struct S_DtbData *di, struct S_RCV_HED *si, int kind)
{
int a, tmp, max_up, nomal;
long lt;
static int SinTbl[] = {
//0 1 2 3 4 5 6 7
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
};
// 22-Mar-2004
ch = GetT_id_ch(si->Term_ID);
// 10-Feb-1999
if (Dtb_SmpPoi == 0){
ChCnt.ChkBit = 0;
ChCnt.Ch_Cnt = 0;
HpcCtr.MaxUpF = 0;
Enb_Ch = 0; // 桳岠俠倛悢
for (a=0;a<MAX_CH;a++){ //
if (AdrEntDat[a].PorNo){
Enb_Ch ++;
}
}
}
// 23-Jan:HY
di->DatKnd = kind; // 庴怣僨乕僞庬暿
if (kind == 2){ // 曉憲僨乕僞
nomal = 0;
}
else{ // 嫮恔僨乕僞 or 僟儈乕僨乕僞
nomal = 1;
}
di->EntNum = ch; // 搊榐No.
if (nomal){
// 庴怣僠儍僱儖僠僃僢僋
if (!(ChCnt.ChkBit & Atv_dat[ch])){ // 怴婯僠儍僱儖丠
ChCnt.ChkBit |= Atv_dat[ch];
ChCnt.Ch_Cnt ++; // 庴怣僠儍僱儖悢 ++
}
}
memmove(di->HstId, si->Host_ID, 8); // HOST ID
memmove(di->TrmId, si->Term_ID, 8); // 抂枛 ID
// 抧恔寁婰榐擔帪
E_ChgDateTime(1, &di->R_dt, si->Y_M_Day, si->H_M_Sec); // 敪恔擔
// 帪崗岞惓
E_ChgDateTime(0, &di->C_dt, si->Cor_Day, si->CorTime);
sscanf(si->Stt_dat, "%8lx", &di->Stt); // 忬懺僗僥乕僞僗
if (nomal){
// 僔僗僥儉忬懺忣曬峏怴
RcvSttDat[ch].Stt_Kms = di->Stt; // 忬懺 32bit
RcvSttDat[ch].R_dt = di->R_dt; // 抧恔寁婰榐擔帪
RcvSttDat[ch].C_dt = di->C_dt; // 抧恔寁婰榐擔帪
}
// Mark@001
// sscanf(si->Kei_Sin, "%2d", &tmp); // 恔搙奒
// di->SinLev = (float) tmp / (float) 10.0; // 寁應恔搙(*.*)
// tmp = (int)(si->ShindoK[0] & 0x0f); // 恔搙奒(悢抣)
// if (si->ShindoK[1] >= '0' && si->ShindoK[1] <= '9'){
// tmp *= 10;
// tmp += (int)(si->ShindoK[1] & 0x0f); // 恔搙奒(悢抣)
// }
// 04-Apr-2004
sscanf(si->Kei_Sin, "%3d", &tmp); // 恔搙奒
di->SinLev = (float) tmp / (float) 10.0; // 寁應恔搙(*.*)
// 08-Apr-2004
//tmp = SinTbl[tmp];
tmp = (int)(si->ShindoK[0] & 0x0f); // 恔搙奒(悢抣)
if (si->ShindoK[1] >= '0' && si->ShindoK[1] <= '9'){
tmp *= 10;
tmp += (int)(si->ShindoK[1] & 0x0f); // 恔搙奒(悢抣)
}
#if ATSUGI
if (si->ShindoK[1] == 'K'){ // 恔搙奒(K,J)
tmp ++;
}
#endif
di->SinKai = tmp; // 恔搙奒(0~9)
E_ChgDateTime(1, &di->C_dt, si->Cor_Day, si->CorTime); // 嵟廔岞惓擔帪
E_ChgDateTime(1, &di->T_dt, si->TestDay, si->TestHur); // 嵟廔帺屓恌抐擔帪
sscanf(si->Max_Acc, "%8ld", <); di->MaxAcc = (double) lt / 1000.0; // 嵟戝崌惉壛懍搙
sscanf(si->Acc_Xxx, "%8ld", <); di->AccX = (double) lt / 1000.0; // 倃幉嵟戝壛懍搙
sscanf(si->Acc_Yyy, "%8ld", <); di->AccY = (double) lt / 1000.0; // 倄幉嵟戝壛懍搙
sscanf(si->Acc_Zzz, "%8ld", <); di->AccZ = (double) lt / 1000.0; // 倅幉嵟戝壛懍搙
memmove(di->FileName, si->G_FName, 12); // 昞帵攇宍僼傽僀儖柤
di->FileEnable = 0; // 昞帵攇宍僼傽僀儖桳傝乛柍偟仢
di->WdtFile[0] = NULL; // 曐懚攇宍僼傽僀儖柤
// 2001-11-27(MK@CQ)
#if ATSUGI
sscanf(si->Freq_Tx, "%4ld", <); di->FreqX = (double) lt / 100.0; // X幉戩墇廃婜
sscanf(si->Freq_Ty, "%4ld", <); di->FreqY = (double) lt / 100.0; // Y幉戩墇廃婜
sscanf(si->Freq_Tz, "%4ld", <); di->FreqZ = (double) lt / 100.0; // Z幉戩墇廃婜
sscanf(si->FreqAcX, "%4ld", <); di->FMaxX = (double) lt / 100.0; // X嵟戝壛懍搙廃婜
sscanf(si->FreqAcY, "%4ld", <); di->FMaxY = (double) lt / 100.0; // Y嵟戝壛懍搙廃婜
sscanf(si->FreqAcZ, "%4ld", <); di->FMaxZ = (double) lt / 100.0; // Z嵟戝壛懍搙廃婜
sscanf(si->MxMinut, "%2d", <); di->MxMinute[0] = lt; // 嵟戝壛懍搙娤應暘
sscanf(&si->MxMinut[2], "%4d", <);
di->MxMinute[1] = lt; // 嵟戝壛懍搙娤應暘
#else // 31-Mar-2004
sscanf(si->SampTim, "%3ld", <); di->SampT = (int) lt; // 18:僒儞僾儖僞僀儉
sscanf(si->N__Lat_, "%lf", &di->N_Lat); // 20:杒堒
sscanf(si->Long_E_, "%lf", &di->LongE); // 21:搶宱
sscanf(si->Hight__, "%lf", &di->Hight); // 22:奀敳崅搙
sscanf(si->NgDevN_, "%5ld", <); di->NgDevN = (int) lt; // 23:堎忢姶恔婍斣崋
sscanf(si->BatVolt, "%4ld", <); di->BatVlt = (double) lt / 10.0; // 24:僶僢僥儕乕揹埑
sscanf(si->BatCurr, "%4ld", <); di->BatCur = (double) lt / 10.0; // 25:僶僢僥儕乕揹棳
sscanf(si->BCharge, "%4ld", <); di->BCharg = (double) lt; // 26:僶僢僥儕乕廩巆 (廩揹巆傝帪娫)
sscanf(si->BDischa, "%4ld", <); di->BDisch = (double) lt; // 27:僶僢僥儕乕曻巆 (曻揹巆傝帪娫)
sscanf(si->BConsEp, "%3ld", <); di->BConsE = (double) lt; // 28:徚旓揹椡
#endif
// 俵俙倃僨乕僞峏怴 check
max_up = 0;
if (nomal){
if (Dtb_SmpPoi == 0){
memfill((char *) Map_DbData, sizeof(Map_DbData), NULL);
// 10-Feb-1999
memfill((char *) Dtb_Max, sizeof(Dtb_Max), NULL);
memfill((char *) Hpc_Dtb, sizeof(Hpc_Dtb), NULL); // 忋埵揮憲梡僨乕僞
max_up = 1;
}
else{
if (di->SinLev > Dtb_Max[ch].SinLev){
max_up = 1;
}
}
}
/* 俵俙倃僨乕僞峏怴 */
if (max_up){
Dtb_Max[ch] = *di;
}
// 05-Mar-1999 岤栘巗岦偗夵憿崁栚
if (HpcCtr.MaxUpF & Atv_dat[ch]){ // 摨嬊僨乕僞懚嵼
send_hpc(0x03);
memfill((char *) Hpc_Dtb, sizeof(Hpc_Dtb), NULL); // 忋埵揮憲梡僨乕僞
HpcCtr.MaxUpF = 0;
}
HpcCtr.MaxUpF |= Atv_dat[ch];
Hpc_Dtb[ch] = *di;
if (nomal){ // 嫮恔僨乕僞
Dtb_Max[ch].Stt = di->Stt; // 僗僥乕僞僗偼枅夞峏怴
max_up = 1;
}
else{ // 曉憲僨乕僞
max_up = 2;
}
return (max_up);
}
/*=====================================
m:10-Feb-1999
@p << 忋埵俹俠憲怣僿僢僟嶌惉 >>
=====================================*/
int CC_Seq::MakeHostHeader(char *buf, int poi)
{
// 僿僢僟乕晹
memmove(&buf[poi], "嫁晾补部
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -