⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c_seqproc.cpp

📁 对日本KSG震动探测仪器编写的伴侣服务代码
💻 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", &lt);	di->MaxAcc = (double) lt / 1000.0;		// 嵟戝崌惉壛懍搙
	sscanf(si->Acc_Xxx, "%8ld", &lt);	di->AccX   = (double) lt / 1000.0;		// 倃幉嵟戝壛懍搙
	sscanf(si->Acc_Yyy, "%8ld", &lt);	di->AccY   = (double) lt / 1000.0;		// 倄幉嵟戝壛懍搙
	sscanf(si->Acc_Zzz, "%8ld", &lt);	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", &lt);	di->FreqX = (double) lt / 100.0;		// X幉戩墇廃婜
		sscanf(si->Freq_Ty, "%4ld", &lt);	di->FreqY = (double) lt / 100.0;		// Y幉戩墇廃婜
		sscanf(si->Freq_Tz, "%4ld", &lt);	di->FreqZ = (double) lt / 100.0;		// Z幉戩墇廃婜
		sscanf(si->FreqAcX, "%4ld", &lt);	di->FMaxX = (double) lt / 100.0;		// X嵟戝壛懍搙廃婜
		sscanf(si->FreqAcY, "%4ld", &lt);	di->FMaxY = (double) lt / 100.0;		// Y嵟戝壛懍搙廃婜
		sscanf(si->FreqAcZ, "%4ld", &lt);	di->FMaxZ = (double) lt / 100.0;		// Z嵟戝壛懍搙廃婜
		sscanf(si->MxMinut, "%2d", &lt);	di->MxMinute[0] = lt;					// 嵟戝壛懍搙娤應暘
		sscanf(&si->MxMinut[2], "%4d", &lt);
		di->MxMinute[1] = lt;										// 嵟戝壛懍搙娤應暘
	#else	// 31-Mar-2004
		sscanf(si->SampTim, "%3ld", &lt);	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", &lt);	di->NgDevN  = (int) lt;		// 23:堎忢姶恔婍斣崋
		sscanf(si->BatVolt, "%4ld", &lt);	di->BatVlt  = (double) lt / 10.0;	// 24:僶僢僥儕乕揹埑
		sscanf(si->BatCurr, "%4ld", &lt);	di->BatCur  = (double) lt / 10.0;	// 25:僶僢僥儕乕揹棳

		sscanf(si->BCharge, "%4ld", &lt);	di->BCharg  = (double) lt;			// 26:僶僢僥儕乕廩巆	(廩揹巆傝帪娫)
		sscanf(si->BDischa, "%4ld", &lt);	di->BDisch  = (double) lt;			// 27:僶僢僥儕乕曻巆	(曻揹巆傝帪娫)
		sscanf(si->BConsEp, "%3ld", &lt);	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 + -