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

📄 dlg_wait.cpp

📁 对日本KSG震动探测仪器编写的伴侣服务代码
💻 CPP
字号:
// (Version 1.00 :: 10-Mar-1999 :: Harutoshi Yoshida)

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

#include	"stdafx.h"
#include	"KSG.h"

#include	"Dlg_Wait.h"
#include	"C_ComProc.h"
#include	"C_Work.h"
#include	"C_Proc.h"
#include	"C_SockServer.h"
#include	"C_SockClient.h"

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

char		*Cmd_name[] = {
	/*00*/	"忬懺忣曬梫媮",						// IRETURN
	/*01*/	"Paramater File梫媮",				// PRETURN
	/*02*/	"攇宍忣曬堦棗梫媮",					// DRETURN
	/*03*/	"嫮恔忣曬File揮憲梫媮",				// FRETURN
	/*04*/	"攇宍File揮憲梫媮",					// WRETURN
	/*05*/	"嫮恔丄攇宍Data嶍彍梫媮",			// DELFILE
	/*06*/	"Paramater File揮憲",				// PRMSEND
	/*07*/	"Software揮憲",						// EXESEND
	/*08*/	"娗撪抧恔忣曬揮憲",					// DATSEND
	/*09*/	"Dummy Data梫媮",					// DAMYRCV
	/*10*/	"Self Check梫媮",					// SELFCHK
	/*11*/	"擔晅揮憲",							// DATESET
	/*12*/	"帪崗揮憲"							// TIMESET
};

int			Old_phs[5];

/////////////////////////////////////////////////////////////////////////////
// CDlg_Wait 僟僀傾儘僌

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

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

}

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

BEGIN_MESSAGE_MAP(CDlg_Wait, CDialog)
	//{{AFX_MSG_MAP(CDlg_Wait)
	ON_WM_CLOSE()
	ON_WM_TIMER()
	ON_WM_PAINT()
	ON_WM_SIZE()
	ON_BN_CLICKED(IDC_BTN_ABORT, OnBtnAbort)
	ON_BN_CLICKED(IDC_BTN_INFO, OnBtnInfo)
	ON_BN_CLICKED(IDC_BTN_DEBUG, OnBtnDebug)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

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

/*-------------------------------------
						m:06-Jan-1999
@p	<< initialize >>
-------------------------------------*/
BOOL CDlg_Wait::OnInitDialog() 
{
	CWnd *pWnd;
	int ch;

	CDialog::OnInitDialog();

	Old_phs[0] = -1;
	Old_phs[1] = -1;
	Old_phs[2] = -1;
	Old_phs[3] = -1;
	Old_phs[4] = -1;

	User_work = 1;
	Exec_Abort = 0;
	Wait_info_flg = 0;

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

	pWnd = GetDlgItem(IDC_STC_01);
	pWnd->SetFont(&mFont);

	if (EndProc){
		pWnd = GetDlgItem(IDC_BTN_ABORT);
		pWnd->ShowWindow(SW_HIDE);

		pWnd = GetDlgItem(IDC_BTN_INFO);
		pWnd->ShowWindow(SW_HIDE);

		pWnd = GetDlgItem(IDC_PROGRESS_01);
		pWnd->ShowWindow(SW_HIDE);

		pWnd = GetDlgItem(IDC_PROGRESS_02);
		pWnd->ShowWindow(SW_HIDE);
		SetDlgItemText(IDC_STC_01, "廔椆張棟拞");
	}
	else{
		pWnd = GetDlgItem(IDC_BTN_ABORT);
		if (pWnd->IsWindowEnabled() == TRUE){
			pWnd->EnableWindow(FALSE);
		}
		SetDlgItemText(IDC_STC_01, "捠怣幚峴拞");
		for (ch=0;ch<MAX_CH;ch++){
			if (Scw[ch].ReqCmd){
				break;
			}
		}
		Sel_Ch = ch;
		RS_PckCnt[ch] = 0;					// 憲庴怣梡僷働僢僩悢
	}
	SendMessage(WM_SIZE, NULL, NULL);
	CDlg_Wait::TitleDisp();						// 僞僀僩儖昞帵
	SetTimer(1, 100, NULL);
	return (TRUE);
}

/*-------------------------------------
						m:06-Jan-1999
@p	<< Close >>
-------------------------------------*/
void CDlg_Wait::OnClose() 
{
	User_work = 0;
	KillTimer(0);
	CDialog::OnOK();
}

/*-------------------------------------
						m:06-Jan-1999
@p	<< Timer >>
-------------------------------------*/
void CDlg_Wait::OnTimer(UINT nIDEvent)
{
	CProgressCtrl *pCtrl;
	s_int cnt = 10, bas = 0;
	int ch, rs, a, val;
	char buf[128], prg_c[10];
	char msg[3] = "<>";
	char *rsm[2] = { "庴怣拞" , "憲怣拞" };

	if (EndProc){		// 廔椆張棟拞
		if (!CmsBit.SendExec && !CmsBit.RecvExec){
			PostMessage(WM_CLOSE);					// Close
		}
	}
	else{
		ch = Sel_Ch;

		// 摦嶌傾僯儊乕僔儑儞
		if (++ cnt > 10){
			cnt = 0;
			if (Rcw[ch].ComPhs){		// 庴怣?
				rs = 0;
			}
			else{
				rs = 1;
			}
			for (a=0;a<9;a++){
				if ( (bas+a) % 3){
					prg_c[a] = ' ';
				}
				else{
					prg_c[a] = msg[rs];
				}
			}
			prg_c[a] = NULL;
			sprintf(buf, "%s %s %s", prg_c, rsm[rs], prg_c);
			SetDlgItemText(IDC_STC_01, buf);
			bas = 1 - bas;

			// 徻嵶昞帵
			if (Wait_info_flg){
				CDlg_Wait::ListDisp();
			}
		}

		// Command Progress
		if (PrgV01 != Scw[ch].PrgPhs){
			PrgV01 = Scw[ch].PrgPhs;
			pCtrl = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_01);
			pCtrl->SetPos(PrgV01);
		}

		// Data Progress
		if (RS_PckCnt[ch]){
			if (DatSnd){
				val = RS_PckCnt[ch] - Scw[ch].PckCnt;
			}
			else{
				val = RS_PckCnt[ch] - Rcw[ch].PckCnt;
			}
			if (PrgV02 == -1){		// 弶婜壔
				PrgV02 = 0;
				pCtrl = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_02);
				pCtrl->SetRange(0, RS_PckCnt[ch]);				// 儗儞僕暆偺愝掕(壖)
				pCtrl->SetPos(PrgV02);
			}
			else if (PrgV02 != val){
				PrgV02 = val;
				pCtrl = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_02);
				pCtrl->SetPos(PrgV02);
			}
		}

		// 廔椆
		if (!M_Cmd_Exec){
			PostMessage(WM_CLOSE);					// Close
		}
	}
	CDialog::OnTimer(nIDEvent);
}

/*-------------------------------------
						m:22-Jan-1999
@p	<< 夋柺昤夋 >>
-------------------------------------*/
void CDlg_Wait::OnPaint() 
{
	CPaintDC dc(this); // 昤夋梡偺僨僶僀僗 僐儞僥僉僗僩

	CRect	pRect;
	CSize	pSize;
	HICON	hIcon;
	DWORD	dwResult;
	char	sys_dir[MAX_PATH], fname[MAX_PATH];
	int		x, s_ch;

	if (!EndProc) {
		GetSystemDirectory(sys_dir, MAX_PATH);
		sprintf(fname, "%s\\SHELL32.DLL", sys_dir);

		dc.SetBkMode(TRANSPARENT);				// 僶僢僋僇儔乕曄峏偟側偄

		hIcon = ::ExtractIcon((AfxGetApp())->m_hInstance, fname, 15);
		dc.SetMapMode(MM_TEXT);
		GetWindowRect(&pRect);
		x = (pRect.right - pRect.left - 32) / 4;
		dwResult = dc.DrawIcon(x, 5, hIcon);
		// ver 1.30
		//dc.TextOut(x-8, 5+32+2, "僒乕僶");
		dc.TextOut(x-8, 5+32+2, "Server");

		pSize = dc.GetTextExtent(AdrEntDat[Sel_Ch].AdrName);
		x = (pRect.right - pRect.left - 32) / 4 * 3;
		dwResult = dc.DrawIcon(x, 5, hIcon);
		if ((pSize.cx/2) > 32) {
			x -= (((pSize.cx/2) - 32) + 16);
		}

		s_ch = Scw[Sel_Ch].SelCh;
		dc.TextOut(x, 5+32+2, AdrEntDat[s_ch].AdrName);
		DestroyIcon(hIcon);
	}

	// 昤夋梡儊僢僙乕僕偲偟偰 CDialog::OnPaint() 傪屇傃弌偟偰偼偄偗傑偣傫
}

/*-------------------------------------
@p	<< Dialog ReSize >>
-------------------------------------*/
void CDlg_Wait::OnSize(UINT nType, int cx, int cy) 
{
	CRect		dRect, lRect;
	CWnd*		pWnd;

	CDialog::OnSize(nType, cx, cy);

	pWnd = GetDlgItem(IDC_LIST_INFO);
	if (this != NULL && pWnd != NULL) {
		this->GetWindowRect(dRect);
		pWnd->GetWindowRect(lRect);
		if (Wait_info_flg && !EndProc) {
			dRect.bottom = lRect.bottom + 10;
		}
		else {
			dRect.bottom = lRect.top;
		}
		this->MoveWindow(dRect, TRUE);
	}
}

/*-------------------------------------
@p	<< 俷俲儃僞儞 >>
-------------------------------------*/
void CDlg_Wait::OnOK()
{
	return;
}

/*-------------------------------------
@p	<< 僉儍儞僙儖儃僞儞 >>
-------------------------------------*/
void CDlg_Wait::OnCancel()
{
	return;
}

/*-------------------------------------
@p	<< 拞抐儃僞儞 >>
-------------------------------------*/
void CDlg_Wait::OnBtnAbort() 
{
	CWnd *pWnd;

	pWnd = GetDlgItem(IDC_BTN_ABORT);
	if (pWnd->IsWindowEnabled() == TRUE){
		pWnd->EnableWindow(FALSE);
	}

	// 拞抐張棟傪幚峴
	RS_StpFlg[Sel_Ch] = 1;					// 拞抐僼儔僌

//	CDialog::OnOK();
}

/*-------------------------------------
@p	<< 徻嵶儃僞儞 >>
-------------------------------------*/
void CDlg_Wait::OnBtnInfo() 
{
	Wait_info_flg = 1 - Wait_info_flg;
	PostMessage(WM_SIZE, NULL, NULL);
}

/*-------------------------------------
@p	<< 嫮惂廔椆 >>
-------------------------------------*/
void CDlg_Wait::OnBtnDebug() 
{
	int ch;

	for (ch=0;ch<MAX_CH;ch++){
		if (M_Cmd_Exec & Atv_dat[ch]){
			snd_wrk_ini(ch);
			rcv_wrk_ini(ch);
		}
	}

	M_Cmd_Exec = 0;
	// 30-Mar-1999
	if (!Exec_Abort){
		Exec_Abort = 1;
	}

	if (TcpUse){
		SkClStop();
	}
}

/*-------------------------------------
@p	<< 僞僀僩儖昞帵 >>
-------------------------------------*/
void CDlg_Wait::TitleDisp()
{
	CWnd *pWnd;
	int cmd, num;
	CProgressCtrl *pCtrl;

	if (EndProc){		// 廔椆張棟拞
		SetWindowText("廔椆張棟拞");
	}
	else {
		cmd = Scw[Sel_Ch].ReqCmd;
		num = (cmd & 0x0f) - 1;
		// 19-Mar-1999
		if (num < 0) num = 0;
		SetWindowText(Cmd_name[num]);

		// 
		DatSnd = cmd & DAT_SND;
		RetReq = cmd & RET_REQ;

		if (DatSnd){
			pWnd = GetDlgItem(IDC_BTN_ABORT);
			if (pWnd->IsWindowEnabled() == FALSE){
				pWnd->EnableWindow(TRUE);
			}
		}

		// 僐儅儞僪 Progress
		pCtrl = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_01);
		pCtrl->SetRange(0, 60);					// 儗儞僕暆偺愝掕
		pCtrl->SetPos(0);
		PrgV01 = 0;				// 僾儘僌儗僗僶乕抣侾

		// 僷働僢僩 Progress
		pCtrl = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_02);
		pCtrl->SetRange(0, 255);				// 儗儞僕暆偺愝掕(壖)
		pCtrl->SetPos(0);
		PrgV02 = -1;				// 僾儘僌儗僗僶乕抣俀
	}
}

/*-------------------------------------
@p	<< 儕僗僩撪徻嵶昞帵 >>
-------------------------------------*/
void CDlg_Wait::ListDisp()
{
	CListBox*	pList;
	int			i, ch, flg;
	int			*dat;
	char		buf[20];

	ch = Sel_Ch;
	flg = 0;
	for (i=0; i<4; i++) {
		switch (i) {
		case 0:
			dat = &Scw[ch].ComPhs;
			break;
		case 1:
			dat = &Scw[ch].PckCnt;
			break;
		case 2:
			dat = &Rcw[ch].ComPhs;
			break;
		case 3:
			dat = &Rcw[ch].PckCnt;
			break;
		case 4:
			dat = &Rcw[ch].RcvLen;
			break;
		}
		if (*dat != Old_phs[i]){
			Old_phs[i] = *dat;
			flg = 1;
		}
	}
	if (flg == 1){
		pList = (CListBox*)GetDlgItem(IDC_LIST_INFO);
		pList->ResetContent();
		sprintf(buf, "憲怣 Phase : %04d", Scw[ch].ComPhs);
		pList->AddString(buf);
		sprintf(buf, "憲怣 Count :  %03d", Scw[ch].PckCnt);
		pList->AddString(buf);
		sprintf(buf, "庴怣 Phase : %04d", Rcw[ch].ComPhs);
		pList->AddString(buf);
		sprintf(buf, "庴怣 Count :  %03d", Rcw[ch].PckCnt);
		pList->AddString(buf);
		sprintf(buf, "庴怣挿     :  %d", Rcw[ch].RcvLen);
		pList->AddString(buf);
	}
}

⌨️ 快捷键说明

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