dlg_mcmd.cpp

来自「对日本KSG震动探测仪器编写的伴侣服务代码」· C++ 代码 · 共 531 行

CPP
531
字号
// (Version 1.00 :: 10-Mar-1999 :: Harutoshi Yoshida)

// Dlg_Mcmd.cpp : 僀儞僾儕儊儞僥乕僔儑儞 僼傽僀儖
//

#include "stdafx.h"
#include "KSG.h"
#include "Dlg_Mcmd.h"
#include "Dlg_Wait.h"

#include "C_Work.h"
#include "C_Proc.h"
#include "C_File.h"
#include "C_ComProc.h"
#include "KSG_Main.h"
#if !C_DEFINE_INC
	#include	"C_Define.h"
#endif

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/////////////////////////////////////////////////////////////////////////////
// CDlg_Mcmd 僟僀傾儘僌

#define	SCMD_MAX	9

char	*SelCmd[] = {
		// ver 1.30
		//"1:僙儖僼僠僃僢僋梫媮",			// 10:僙儖僼僠僃僢僋傪梫媮偡傞
		//"2:蔬滓袄 抬操 曉憲梫媮",		// 01:僷儔儊乕僞僼傽僀儖傪梫媮偡傞
		//"3:忬懺忣曬曉憲梫媮",			// 00:忬懺忣曬傪梫媮偡傞
		//"4:僟儈乕僨乕僞曉憲梫媮",		// 09:巜掕帪崗偵僟儈乕僨乕僞傪梫媮偡傞
		//"5:婲摦僷儔儊乕僞憲怣",			// 06:僷儔儊乕僞僼傽僀儖傪揮憲偡傞
		//"6:擔晅愝掕曄峏",				// 11:怴偨側擔帪傪僙僢僩偡傞
		//"7:帪崗愝掕曄峏",				// 12:怴偨側帪崗傪僙僢僩偡傞
		//"8:嫮恔寁僜僼僩僂僃傾憲怣",		// 07:僜僼僩僂僃傾傪揮憲偡傞
		//"9:巜掕僼傽僀儖憲怣"			// 08:娗撪抧恔忣曬傪揮憲偡傞
		"1:Self Check梫媮",				// 10:僙儖僼僠僃僢僋傪梫媮偡傞
		"2:Paramater File 曉憲梫媮",	// 01:僷儔儊乕僞僼傽僀儖傪梫媮偡傞
		"3:忬懺忣曬曉憲梫媮",			// 00:忬懺忣曬傪梫媮偡傞
		"4:Dummy Data曉憲梫媮",			// 09:巜掕帪崗偵僟儈乕僨乕僞傪梫媮偡傞
		"5:婲摦Paramater憲怣",			// 06:僷儔儊乕僞僼傽僀儖傪揮憲偡傞
		"6:擔晅愝掕曄峏",				// 11:怴偨側擔帪傪僙僢僩偡傞
		"7:帪崗愝掕曄峏",				// 12:怴偨側帪崗傪僙僢僩偡傞
		"8:嫮恔寁Software憲怣",			// 07:僜僼僩僂僃傾傪揮憲偡傞
		"9:巜掕File憲怣"				// 08:娗撪抧恔忣曬傪揮憲偡傞
};

int		CmdNum[] = {
		SELFCHK,						// 僙儖僼僠僃僢僋傪梫媮偡傞
		PRETURN,						// 僷儔儊乕僞僼傽僀儖傪梫媮偡傞
		IRETURN,						// 忬懺忣曬傪梫媮偡傞
		DAMYRCV,						// 巜掕帪崗偵僟儈乕僨乕僞傪梫媮偡傞
		PRMSEND,						// 僷儔儊乕僞僼傽僀儖傪揮憲偡傞
		DATESET,						// 怴偨側擔帪傪僙僢僩偡傞
		TIMESET,						// 怴偨側帪崗傪僙僢僩偡傞
		EXESEND,						// 僜僼僩僂僃傾傪揮憲偡傞
		DATSEND							// 娗撪抧恔忣曬傪揮憲偡傞
};

/////////////////////////////////////////////////////////////////////////////
CDlg_Mcmd::CDlg_Mcmd(CWnd* pParent /*=NULL*/)
	: CDialog(CDlg_Mcmd::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlg_Mcmd)
		// 儊儌 - ClassWizard 偼偙偺埵抲偵儅僢僺儞僌梡偺儅僋儘傪捛壛傑偨偼嶍彍偟傑偡丅
	//}}AFX_DATA_INIT
}


void CDlg_Mcmd::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlg_Mcmd)
		// 儊儌 - ClassWizard 偼偙偺埵抲偵儅僢僺儞僌梡偺儅僋儘傪捛壛傑偨偼嶍彍偟傑偡丅
	//}}AFX_DATA_MAP

	// M_Cmd_Sel_Ch = 0;			// 慖戰僠儍僱儖
	// M_Cmd_Sel_Cmd = 0;		// 慖戰僐儅儞僪
}


BEGIN_MESSAGE_MAP(CDlg_Mcmd, CDialog)
	//{{AFX_MSG_MAP(CDlg_Mcmd)
	ON_CBN_SELCHANGE(IDC_CMB_CMD, OnSelchangeCmbCmd)
	ON_CBN_SELCHANGE(IDC_CMB_PNT, OnSelchangeCmbPnt)
	ON_BN_CLICKED(IDC_BTN_EXEC, OnBtnExec)
	ON_BN_CLICKED(IDC_BTN_MENU, OnBtnMenu)
	ON_WM_CLOSE()
	ON_BN_CLICKED(IDC_BTN_03, OnBtn03)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlg_Mcmd 儊僢僙乕僕 僴儞僪儔

/*=====================================
						m:06-Jan-1999
@p	<< initialize >>
=====================================*/
BOOL CDlg_Mcmd::OnInitDialog()
{
	CDialog::OnInitDialog();

	int a, ch;
	CComboBox*	pCmbBx;

	pOpenDlg = this;

	// 儊僯儏乕儃僞儞(倃)丗柍岠
	GetSystemMenu(FALSE)->EnableMenuItem(SC_CLOSE, MF_DISABLED);

	mSFont.CreateFont(12, 0, 0, 0, FW_NORMAL,FALSE,FALSE,0,
		SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
		DEFAULT_PITCH,"俵俽 俹僑僔僢僋");

	mLFont.CreateFont(18, 0, 0, 0, FW_NORMAL,FALSE,FALSE,0,
		SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
		DEFAULT_PITCH,"俵俽 僑僔僢僋");

	// 娤應揰慖戰傪戙擖
	pCmbBx = (CComboBox*)GetDlgItem(IDC_CMB_PNT);
	pCmbBx->ResetContent();							// list box reset
	for (ch=0;ch<MAX_CH;ch++){		//
		pCmbBx->InsertString(-1, AdrEntDat[ch].AdrName);
	}

	pCmbBx->InsertString(-1, "慡娤應揰");

	pCmbBx->SetCurSel(M_Cmd_Sel_Ch);

	// 僐儅儞僪慖戰傪戙擖
	pCmbBx = (CComboBox*)GetDlgItem(IDC_CMB_CMD);
	pCmbBx->ResetContent();							// list box reset
	for (a=0;a<SCMD_MAX;a++){		//
		pCmbBx->InsertString(-1, SelCmd[a]);
	}
	pCmbBx->SetCurSel(M_Cmd_Sel_Cmd);

	OnSelchangeCmbCmd();

	return (TRUE);
}

/*=====================================
						m:06-Jan-1999
@p	<< 僐儅儞僪慖戰 >>
=====================================*/
void CDlg_Mcmd::OnSelchangeCmbCmd() 
{
	struct S_DateTime n_time;
	CComboBox*	pCmbBx;
	CWnd*	pWnd;
	int	ed, sd, bd;
	char *em, *sm, *bm, buf[128];

	// 僐儅儞僪
	pCmbBx = (CComboBox*)GetDlgItem(IDC_CMB_CMD);
	M_Cmd_Sel_Cmd = pCmbBx->GetCurSel();

	em = sm = bm = "";
	switch (M_Cmd_Sel_Cmd){		//
	case 3:		// 巜掕帪崗偵僟儈乕僨乕僞傪梫媮偡傞
	case 5:		// 6:擔晅愝掕曄峏
	case 6:		// 7:帪崗愝掕曄峏
		pWnd = GetDlgItem(IDC_EDT_01);
		pWnd->SetFont(&mLFont);

		StoNowTime(&n_time);
		if (M_Cmd_Sel_Cmd == 5){
			sm = "擔晅愝掕";
			sprintf(buf, "%4d,%02d,%02d",
					n_time.yer,			// 擭
					n_time.mon,			// 寧
					n_time.day			// 擔
			);
			em = buf;
		}
		else{
			sm = "帪崗愝掕";
			sprintf(buf, "%2d:%02d:%02d",
					n_time.hor,			// 帪
					n_time.min,			// 暘
					n_time.sec			// 昩
			);
			em = buf;
		}
		ed = SW_SHOW;
		sd = SW_SHOW;
		bd = SW_HIDE;
		break;
	case 7:		// 8:嫮恔寁僜僼僩僂僃傾憲怣
	case 8:		// 9:巜掕僼傽僀儖憲怣
		pWnd = GetDlgItem(IDC_EDT_01);
		pWnd->SetFont(&mSFont);
		ed = SW_SHOW;
		sd = SW_SHOW;
		bd = SW_SHOW;
		break;
	default:
		ed = SW_HIDE;
		sd = SW_HIDE;
		bd = SW_HIDE;
		break;
	}

	pWnd = GetDlgItem(IDC_BTN_03);
	pWnd->ShowWindow(bd);

	pWnd = GetDlgItem(IDC_EDT_01);
	pWnd->ShowWindow(ed);
	SetDlgItemText(IDC_EDT_01, em);

	pWnd = GetDlgItem(IDC_STC_01);
	pWnd->ShowWindow(sd);
	SetDlgItemText(IDC_STC_01, sm);

	// IDC_BTN_03 僼傽僀儖嶲徠
	// IDC_STC_01 僗僞僥傿僢僋
	// IDC_EDT_01 擖椡侾
}

/*=====================================
						m:06-Jan-1999
@p	<< 娤應揰慖戰 >>
=====================================*/
void CDlg_Mcmd::OnSelchangeCmbPnt() 
{
	CComboBox*	pCmbBx;

	// 僐儅儞僪
	pCmbBx = (CComboBox*)GetDlgItem(IDC_CMB_PNT);
	M_Cmd_Sel_Ch = pCmbBx->GetCurSel();
}

/*=====================================
						m:15-Jan-1999
@p	<< 帪崗曄姺 >>
=====================================*/
void CDlg_Mcmd::ChgTime(int ch, int now)
{
	int p, a, hms[3];
	char c, buf[64];
	struct S_DateTime n_time;

	if (now){
		StoNowTime(&n_time);
		sprintf(buf, "%2d:%02d:%02d",
				n_time.hor,			// 帪
				n_time.min,			// 暘
				n_time.sec			// 昩
		);
	}
	else{
		GetDlgItemText(IDC_EDT_01, buf, 64);
		p = 0;
		for (a=0;a<3;a++){
			hms[a] = 0;
			sscanf(&buf[p], "%d", &hms[a]);
			if (a != 2){
				do{
					c = buf[p ++];
				} while (c != ':' && c != NULL && p < 64);
			}
		}
		sprintf(buf, "%d:%02d:%02d          ", hms[0], hms[1], hms[2]);
	}	
	SetDlgItemText(IDC_EDT_01, buf);

	// 23-Jan:HY
	int t_ch;
	if (TcpUse){
		t_ch = 1;
	}
	else{
		t_ch = ch;
	}
	memmove(Scw[t_ch].AddPar, buf, 12);		// 僐儅儞僪堷悢
	Scw[t_ch].AddPar[12] = C_CR;
	Scw[t_ch].AddPar[13] = C_LF;
}

/*=====================================
						m:15-Jan-1999
@p	<< 擔晅曄姺 >>
=====================================*/
void CDlg_Mcmd::ChgDate(int ch)
{
	int p, a, ymd[3];
	char c, buf[64];

	GetDlgItemText(IDC_EDT_01, buf, 64);
	p = 0;
	for (a=0;a<3;a++){
		ymd[a] = 0;
		sscanf(&buf[p], "%d", &ymd[a]);
		if (a != 2){
			do{
				c = buf[p ++];
			} while (c != ',' && c != NULL && p < 64);
		}
	}
	sprintf(buf, "%4d,%02d,%02d", ymd[0], ymd[1], ymd[2]);
	SetDlgItemText(IDC_EDT_01, buf);
	// 23-Jan:HY
	int t_ch;
	if (TcpUse){
		t_ch = 1;
	}
	else{
		t_ch = ch;
	}

	memmove(Scw[t_ch].AddPar, buf, 12);		// 僐儅儞僪堷悢
	Scw[t_ch].AddPar[12] = C_CR;
	Scw[t_ch].AddPar[13] = C_LF;
}

/*=====================================
						m:17-Jan-1999
@p	<< 僜僼僩僂僃傾 >>
=====================================*/
void CDlg_Mcmd::ChgSoft(int ch)
{
	int a, c, dat;
	CC_File pFile;

	GetDlgItemText(IDC_EDT_01, SndFile[ch].Name, MAX_PATH);						// 巜掕僼傽僀儖柤
	SndFile[ch].Size = pFile.C_FileSize(SndFile[ch].Name);
	sprintf(SendSft[ch].Dat_Len, "%08ld", SndFile[ch].Size);		// 楢懕僨乕僞挿
	SendSft[ch].Dat_Len[8] = (char) C_CR; SendSft[ch].Dat_Len[9] = (char) C_LF;
	memmove(SendSft[ch].Version, "    \x0d\x0a", 4+2);		// Version No.
	for (c=0;c<MAX_PATH;c++){		//
		if (SndFile[ch].Name[c] == 0) break;
	}
	c -= 12;
	for (a=0;a<12;a++){		//
		dat = SndFile[ch].Name[c+a];
		if (dat >= 'a' && dat <= 'z'){
			dat &= ~0x20;
		}
		SendSft[ch].ExeFile[a] = dat;
	}
	SendSft[ch].ExeFile[12] = (char) C_CR; SendSft[ch].ExeFile[13] = (char) C_LF;

	// 憲怣僼傽僀儖僽儘僢僋悢
	SndFile[ch].Blck = SndFile[ch].Size / (BF_256-3);
	if (SndFile[ch].Size % (BF_256-3)){
		SndFile[ch].Blck ++;
	}

	SndFile[ch].Rreq = 0;				// 撉崬傒儕僋僄僗僩
	SndFile[ch].Hndl = -1;				// 僼傽僀儖僴儞僪儖
}

/*=====================================
						m:17-Jan-1999
@p	<< 娗撪抧恔忣曬 >>
=====================================*/
void CDlg_Mcmd::ChgFile(int ch)
{
	CC_File pFile;
	struct S_DateTime n_time;

	memmove(SendStt[ch].Dat_Num, "    \x0d\x0a", 4+2);		// 攝怣斣崋
	StoNowTime(&n_time);
	sprintf(SendStt[ch].Y_M_Day, "%02d%02d%04d",
					n_time.day,			// 擔
					n_time.mon,			// 寧
					n_time.yer			// 擭
	);
	SendStt[ch].Y_M_Day[8] = (char) C_CR; SendStt[ch].Y_M_Day[9] = (char) C_LF;

	GetDlgItemText(IDC_EDT_01, SndFile[ch].Name, MAX_PATH);						// 巜掕僼傽僀儖柤
	SndFile[ch].Size = pFile.C_FileSize(SndFile[ch].Name);
	sprintf(SendStt[ch].Dat_Len, "%08ld", SndFile[ch].Size);		// 楢懕僨乕僞挿
	SendStt[ch].Dat_Len[8] = (char) C_CR; SendStt[ch].Dat_Len[9] = (char) C_LF;

	// 憲怣僼傽僀儖僽儘僢僋悢
	SndFile[ch].Blck = SndFile[ch].Size / (BF_256-3);
	if (SndFile[ch].Size % (BF_256-3)){
		SndFile[ch].Blck ++;
	}

	SndFile[ch].Rreq = 0;				// 撉崬傒儕僋僄僗僩
	SndFile[ch].Hndl = -1;				// 僼傽僀儖僴儞僪儖
}

/*=====================================
						m:06-Jan-1999
@p	<< 幚峴儃僞儞 >>
=====================================*/
void CDlg_Mcmd::OnBtnExec() 
{
	int cmd, ch, s_ch, e_ch, t_ch;
	CComboBox*	pCmbBx;
	CDlg_Wait wDlg;

	// 娤應揰
	pCmbBx = (CComboBox*)GetDlgItem(IDC_CMB_PNT);
	M_Cmd_Sel_Ch = pCmbBx->GetCurSel();

	// 僐儅儞僪
	pCmbBx = (CComboBox*)GetDlgItem(IDC_CMB_CMD);
	M_Cmd_Sel_Cmd = pCmbBx->GetCurSel();
	cmd = CmdNum[M_Cmd_Sel_Cmd];

	if (M_Cmd_Sel_Ch == MAX_CH){		// 慡娤應揰堦妵
		CmsBit.All_Send = 1;
		s_ch = 0;
		e_ch = MAX_CH;
	}
	else{
		CmsBit.All_Send = 0;
		s_ch = M_Cmd_Sel_Ch;
		e_ch = s_ch + 1;
	}
	for (ch=s_ch;ch<e_ch;ch++){
		// 23-Jan:HY
		if (TcpUse){
			t_ch = 1;
		}
		else{
			t_ch = ch;
		}
		switch (M_Cmd_Sel_Cmd){
		case 3:		// 巜掕帪崗偵僟儈乕僨乕僞傪梫媮偡傞
			ChgTime(ch, 0);
			break;
		case 6:		// 怴偨側帪崗傪僙僢僩偡傞
			ChgTime(ch, 1);
			break;

		case 5:		// 怴偨側擔帪傪僙僢僩偡傞
			ChgDate(ch);
			break;

		case 7:		// 僜僼僩僂僃傾傪揮憲偡傞
			ChgSoft(ch);
			break;
		case 8:		// 娗撪抧恔忣曬傪揮憲偡傞
			ChgFile(ch);
			break;

		case 0:		// 僙儖僼僠僃僢僋傪梫媮偡傞
		case 1:		// 僷儔儊乕僞僼傽僀儖傪梫媮偡傞
		case 2:		// 忬懺忣曬傪梫媮偡傞
		case 4:		// 僷儔儊乕僞僼傽僀儖傪揮憲偡傞
			sprintf(Scw[t_ch].AddPar, "            \x0d\x0a");
			break;
		}

		if (Rcw[t_ch].Enable && Rcw[t_ch].ComPhs == 0){
			M_Cmd_Exec |= Atv_dat[t_ch];			// 慖戰僐儅儞僪幚峴拞
			Scw[t_ch].ReqCmd = cmd;

			Scw[t_ch].SelCh = ch;					// 慖戰僠儍僱儖	24-Mar-2004
		}

		// 29-Jan-1999
		wDlg.DoModal();
	}
	CmsBit.All_Send = 0;

	// 30-Mar-1999
	switch (Exec_Abort){
	case 1:
		war_disp(War_msg[4]);
		break;
	case 2:
		war_disp(War_msg[5]);
		break;
	}
}

/*=====================================
						m:06-Jan-1999
@p	<< 儊僯儏乕儃僞儞 >>
=====================================*/
void CDlg_Mcmd::OnBtnMenu() 
{
	DspReqStack(DSP_MNT);
}

/*=====================================
						m:06-Jan-1999
@p	<< 僋儘乕僘 >>
=====================================*/
void CDlg_Mcmd::OnClose() 
{
	dialog_close(DSP_MCMD);
	CDialog::OnOK();
}

void CDlg_Mcmd::OnOK()
{
	return;
}

void CDlg_Mcmd::OnCancel()
{
	return;
}


/*=====================================
						m:08-Jan-1999
@p	<< 僼傽僀儖嶲徠 >>
=====================================*/
void CDlg_Mcmd::OnBtn03() 
{
	int ret;
	char buf[MAX_PATH];
	CC_File pFile;

	ret = CommonDlgFileOpen("", buf, TRUE);
	if (ret == 1){
		F_Size = pFile.C_FileSize(buf);
	}
	else{
		buf[0] = NULL;
		F_Size = 0;
	}
	SetDlgItemText(IDC_EDT_01, buf);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?