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

📄 ksgview.cpp

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

// KSGView.cpp : CKSGView 僋儔僗偺摦嶌偺掕媊傪峴偄傑偡丅
//

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

#include "KSGDoc.h"
#include "KSGView.h"
#include "MainFrm.h"

#include "C_Thread.h"
#include "Dlg_Menu.h"
#include "Dlg_Map.h"
#include "Dlg_Wave.h"
#include "Dlg_Diag.h"
#include "Dlg_Mag.h"
#include "Dlg_Entry.h"
#include "Dlg_EntryEdit.h"
#include "Dlg_EntryPar.h"
#include "Dlg_Mcmd.h"
#include "Dlg_Del.h"
#include "Dlg_Log.h"
#include "Dlg_LogInfo.h"
#include "Dlg_LogStt.h"
#include "C_Work.h"
#include "KSG_Main.h"
#include "KSG_File.h"
#include "KSG_Print.h"
#include "C_Proc.h"
#include "C_File.h"
#include "C_ComThread.h"
#include "C_SockServer.h"
#include "C_SockClient.h"
#include "DlgEntParC.h"

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

extern	S_SOCK_DAT	SkSvDat;			// 僜働僢僩僨乕僞
extern	S_SOCK_DAT	SkClDat;			// 僜働僢僩僨乕僞

/////////////////////////////////////////////////////////////////////////////
// CKSGView

IMPLEMENT_DYNCREATE(CKSGView, CFormView)

BEGIN_MESSAGE_MAP(CKSGView, CFormView)
	//{{AFX_MSG_MAP(CKSGView)
	ON_WM_TIMER()
	ON_WM_KEYDOWN()
	//}}AFX_MSG_MAP
	// 昗弨報嶞僐儅儞僪
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
	ON_MESSAGE(WM_THREADFINISHED1, OnThreadFinished01)
	ON_MESSAGE(WM_SWITCH_DIALOG, OnSwitchDialog)
	ON_MESSAGE(WM_PRINT_EXEC, OnPrintExec)

	ON_MESSAGE(WM_SEND_EXEC, OnSendExec)
	ON_MESSAGE(WM_DISP_SEND, OnDispSend)
	ON_MESSAGE(WM_COM_OPEN, OnComOpen)

	ON_MESSAGE(WM_DISP_MESS, OnDispMess)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CKSGView 僋儔僗偺峔抸/徚柵

CKSGView::CKSGView()
	: CFormView(CKSGView::IDD)
{
	//{{AFX_DATA_INIT(CKSGView)
		// 儊儌: ClassWizard 偼偙偺埵抲偵儊儞僶偺弶婜壔張棟傪捛壛偟傑偡丅
	//}}AFX_DATA_INIT
	// TODO: 偙偺応強偵峔抸梡偺僐乕僪傪捛壛偟偰偔偩偝偄丅
}

CKSGView::~CKSGView()
{
}

void CKSGView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CKSGView)
		// 儊儌: ClassWizard 偼偙偺埵抲偵 DDX 偲 DDV 偺屇傃弌偟傪捛壛偟傑偡丅
	//}}AFX_DATA_MAP
}

BOOL CKSGView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: 偙偺埵抲偱 CREATESTRUCT cs 傪廋惓偟偰 Window 僋儔僗傑偨偼僗僞僀儖傪
	//  廋惓偟偰偔偩偝偄丅

	return CFormView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CKSGView 僋儔僗偺報嶞

BOOL CKSGView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// 僨僼僅儖僩偺報嶞弨旛
	pInfo->m_bDirect = TRUE;					// 僟僀傾儘僌傪昞帵偟側偄捈愙報嶞偺愝掕
	Print_preview = 0;
	if (pInfo->m_bPreview == 1) {
		Print_preview = 1;
	}
	return DoPreparePrinting(pInfo);
}

/*=====================================
@p	<< 報嶞奐巒 >>
=====================================*/
void CKSGView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	BeforePrint(pDC, pInfo);					// 報嶞慜張棟
}

/*=====================================
@p	<< 報嶞廔椆 >>
=====================================*/
void CKSGView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	AfterPrint(pDC, pInfo);						// 報嶞屻張棟
}

/*=====================================
@p	<< 報嶞幚峴 >>
=====================================*/
void CKSGView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
	switch (Print_num) {
	// ver 1.30
	case DSP_MAP:
		LPPICTURE	m_pImage;
		m_pImage = NULL;
		LoadImageFile(&m_pImage, "0_Print.bmp");
		if (m_pImage != NULL) {
			ImagePrint(pDC, m_pImage, pInfo, 0);
			m_pImage->Release();
		}
		break;
	
	case DSP_DIAG:								// 攇宍僨乕僞丒僌儔僼昞帵
		PrintAreaCalc(pDC, pInfo);
		DiagramDraw(pDC);
		break;
	case DSP_PAR:								// 僷儔儊乕僞愝掕丒嶲徠
		ParameterPrintExec(pDC, pInfo);
		break;
	case DSP_MAG:	// No break;				// 嵟怴丒恔搙堦棗昞帵
	case DSP_ENT:	// No break;				// 娤應揰搊榐堦棗
	case DSP_LGI:	// No break;				// 捠怣寢壥堦棗
	case DSP_LGS:								// 忬懺忣曬
		GridPrintExec(pDC, pInfo);
		break;
	}
}

/////////////////////////////////////////////////////////////////////////////
// CKSGView 僋儔僗偺恌抐

#ifdef _DEBUG
void CKSGView::AssertValid() const
{
	CFormView::AssertValid();
}

void CKSGView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CKSGDoc* CKSGView::GetDocument() // 旕僨僶僢僌 僶乕僕儑儞偼僀儞儔僀儞偱偡丅
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CKSGDoc)));
	return (CKSGDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CKSGView 僋儔僗偺儊僢僙乕僕 僴儞僪儔

/*=====================================
						m:23-Jan-1999
@p	<< Ch Open >>
=====================================*/
int		CKSGView::CommChOpen(int ch)
{
	int port, res;

	port = OpenCh[ch] = AdrEntDat[ch].PorNo;		// 捠怣億乕僩斣崋
	if (port){
		res = CreateTTYInfo(ch, port);
		if (res == TRUE){
			res = OpenConnection(ch);
		}
	}
	return (res);
}

/*=====================================
						m:23-Jan-1999
@p	<< Ch Close >>
=====================================*/
void	CKSGView::CommChClose(int ch)
{
	if (OpenCh[ch]){
		CloseConnection(ch);
	}
}

/*=====================================
						m:23-Jan-1999
@p	<< OnComOpen >>
=====================================*/
LRESULT	CKSGView::OnComOpen(WPARAM ch, LPARAM opn)
{
	if (opn){
		CommChOpen(ch);
	}
	else{
		CommChClose(ch);
	}
    return (0);
}

/*=====================================
						m:25-Dec-1998
@p	<< 夞慄俷倫倕値 >>
=====================================*/
void	CKSGView::CommOpen()
{
	int ch, err, port;

//	for (ch=0;ch<MAX_CH;ch++){
//		CommChClose(ch);
//		err = CommChOpen(ch);
//	}

	// 昞帵婍梡
	ch = MAX_CH;

	#if HY_KAI		// 18-Feb-2004 夵憿
		port = 10;
	#else
		port = 1;
	#endif
	CloseConnection(ch);
	err = CreateTTYInfo(ch, port);
	err = OpenConnection(ch);
}

/*=====================================
@p	<< FormView 弶婜壔 >>
=====================================*/
void CKSGView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();

	int		ch, err;
	CC_File cFile;

	GetCurrentDirectory(MAX_PATH, Crnt_dir);	// 僇儗儞僩僨傿儗僋僩儕柤庢摼

	SysWrkInit();
	sys_init();
	SetTimer(1, 100, NULL);
	pKSGView = this;
	get_dtb_entry();							// 摨堦抧恔僼傽僀儖悢妋擣

	// CQHY
	// 愝掕僷儔儊乕僞, 娤應揰搊榐僨乕僞
	err  = cFile.C_ParaLoad(0);				// 04:娤應揰搊榐僨乕僞
	err |= cFile.C_ParaLoad(1);				// 05:愝掕僷儔儊乕僞
	err |= cFile.C_ParaLoad(3);				// 08:忬懺忣曬
	for (ch=0;ch<MAX_CH;ch++){				//
		OpenCh[ch] = 0;
		Rcw[ch].DspPhs = '-';				// 捠怣僼僃乕僘(庴怣昞帵梡)
		Scw[ch].DspPhs = '-';				// 捠怣僼僃乕僘(憲怣昞帵梡)

		// 斾妑梡忬懺僗僥乕僞僗傪嵟怴偵
		ChkSttDat[ch] = RcvSttDat[ch];		// 忬懺忣曬
	}
	CommOpen();
	MAP_data_read(0);						// 抧恾昞帵梡僨乕僞庢摼

	SysMenu = 1;							// 僔僗僥儉儊僯儏乕崁栚帪
	Plat_Form = CheckPlatForm();
}

/*=====================================
@p	<< 僞僀儅乕 >>
=====================================*/
void CKSGView::OnTimer(UINT nIDEvent) 
{
	switch (nIDEvent){
	case 1:	// 弶婜昞帵
		KillTimer(1);
		Disp.Enable = 1;				// 愗傝懼偊桳岟
		DspReqStack(DSP_MAP);
		C_W_ThreadStart();
//		SetTimer(4, 10000, NULL);
		break;
	case 3:
//		StartScreenSaver(pKSGView->m_hWnd);
//		pKSGView->m_Wave.Stop();
//		pKSGView->m_Wave.Play(pKSGView, Data_dir[FLE_EWV]);		// 抧恔敪惗帪敪惡壒
//		KillTimer(3);
//		SetTimer(4, 60000, NULL);
		break;
	case 4:
//		if (Map_Active == 0) {
//			Map_Active = 1;
//			Dtb_SmpPoi = 1;
//			pKSGView->m_Wave.Stop();
//			pKSGView->m_Wave.Play(pKSGView, Data_dir[FLE_SWV]);				// 忬懺曄壔帪敪惡壒
//			KillTimer(4);
//			SetTimer(3, 60000, NULL);
//		}
		break;
	}
	CFormView::OnTimer(nIDEvent);
}

/*=====================================
@p	<< 僗儗僢僪僗僞乕僩 >>
=====================================*/
void CKSGView::C_W_ThreadStart()
{
	ThreadKeep[0] = 1;
	AfxBeginThread(ThreadProc01, GetSafeHwnd());
	ThreadStart[0].SetEvent();
}

/*=====================================
@p	<< 僗儗僢僪廔椆 >>
=====================================*/
void CKSGView::C_W_ThreadEnd()
{
	ThreadKill[0].SetEvent();
	ThreadKeep[0] = 0;
}

/*=====================================
@p	<< 僗儗僢僪廔椆 >>
=====================================*/
LRESULT CKSGView::OnThreadFinished01(WPARAM wParam, LPARAM lParam)
{
    return 0;
}

/*=====================================
						m:24-Jan-1999
@p	<< 儊僢僙乕僕昞帵 >>
堷悢丗	*poi		暥帤楍 p
=====================================*/
LRESULT CKSGView::OnDispMess(char *poi, LPARAM uw_flag)
{
//	AfxMessageBox(poi);
	AfxMessageBox(poi, MB_OK, 0);
	if (uw_flag){
		User_work = 0;
	}
	else{
		UwrkMesCls = 1;
	}
	return (0);
}

/*=====================================
						m:09-Dec-1998
@p	<< Dailog愗傝懼偊 >>
堷悢丗	wParam		昞帵夋柺No.
		lParam		No Use
栠抣丗	側偟
=====================================*/
LRESULT CKSGView::OnSwitchDialog(WPARAM wParam, LPARAM lParam)
{
	CDlg_Map		mapDlg;
	CDlg_Mag		magDlg;
	CDlg_Menu		menuDlg;
	CDlg_Diag		diagDlg;
	CDlg_Wave		waveDlg;
	CDlg_Entry		entryDlg;
	CDlg_EntryEdit	entryEditDlg;
	CDlg_Mcmd		mcmdDlg;
	CDlg_Del		delDlg;
	CDlg_Log		logDlg;
	CDlg_LogInfo	logInfoDlg;
	CDlg_LogStt		logSttDlg;

	// 22-Mar-2004
	#if ATSUGI
		CDlg_EntryPar	entryParDlg;
	#else
		CDlgEntParC		entryParDlg;
	#endif

	switch (wParam) {
	case DSP_MENU:
	case DSP_MNT:
		menuDlg.DoModal();
		break;
	case DSP_MAP:
		mapDlg.DoModal();
		break;
	case DSP_WAVE:
		waveDlg.DoModal();
		break;
	case DSP_DIAG:
		diagDlg.DoModal();
		break;
	case DSP_MAG:
		magDlg.DoModal();
		break;
	case DSP_ENT:
		entryDlg.DoModal();
		break;
	case DSP_EDT:
		entryEditDlg.DoModal();
		break;
	case DSP_PAR:
		entryParDlg.DoModal();
		break;
	case DSP_MCMD:
		mcmdDlg.DoModal();
		break;
	case DSP_DEL:
		delDlg.DoModal();
		break;
	case DSP_LOG:
		logDlg.DoModal();
		break;
	case DSP_LGI:
		logInfoDlg.DoModal();
		break;
	case DSP_LGS:
		logSttDlg.DoModal();
		break;
	}
	return (0);
}

/*=====================================
						m:09-Dec-1998
@p	<< 報嶞幚峴梫媮 >>
堷悢丗	wParam		No Use
		lParam		No Use
栠抣丗	側偟
=====================================*/
LRESULT CKSGView::OnPrintExec(WPARAM wParam, LPARAM lParam)
{
	if (Print_debug) {
		CView::OnFilePrintPreview();
	}
	else {
		CView::OnFilePrint();
	}
	return 0;
}


BEGIN_EVENTSINK_MAP(CKSGView, CFormView)
    //{{AFX_EVENTSINK_MAP(CKSGView)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

/*=====================================
						m:15-Dec-1998
@p	<< Send Exec >>
=====================================*/
LRESULT CKSGView::OnSendExec(WPARAM wParam, LPARAM lParam)
{
	int ch, len, err;
	char buf[1024];

	ch = wParam;
	len = 0;
	while (Scw[ch].RedPoi != Scw[ch].WrtPoi){
		buf[len ++] = Scw[ch].Buffer[Scw[ch].RedPoi ++];
		Scw[ch].RedPoi &= RSB_MAX;
	}

	if (TcpUse){
		if (ch == 0){	// PC 偑僒乕僶乕偺捠怣
			err = SkSend(&SkSvDat.Cli[0], buf, len);
		}
		if (ch == 1){	// PC偑僋儔僀傾儞僩偺捠怣
			TcpSndErr = SkSend(&SkClDat.Cli[0], buf, len);
		}
	}
	else{
		err = WriteCommBlock(ch, buf, len);
	}
    
	return (0);
}


/*=====================================
						m:18-Jan-1999
@p	<< 昞帵婍憲怣 >>
=====================================*/
// 05-Mar-1999
LRESULT CKSGView::OnDispSend(WPARAM flag, LPARAM lParam)
{
	int		ch, p, max, dat, err, dsp_flg;
	char	buf[128];
	char	*kai[10] = {
					"00", "10", "20", "30", "40",
					"51", "52", "61", "62", "70"
			};

	// MAX check
	max = 0;
	for (ch=1;ch<MAX_CH;ch++){
		if (Map_DbData[max].SinLev < Map_DbData[ch].SinLev){
			max = ch;
		}
	}
	if (Map_DbData[max].R_dt.yer){
		// 07-Apr-1999 昞帵婍僲僀僘懳嶔
		p = 0;
		dsp_flg = 2;				// 僽僓乕柍偟
		if (DDN_clr){
			DDN_clr = 0;

			dsp_flg = 1;				// 僽僓乕桳傝
			buf[0] = buf[3] = '0';
			buf[1] = buf[4] = 0x0d;
			buf[2] = buf[5] = 0x0a;
			p = 6;
		}
		else if (!Dtb_SmpPoi){	// 僙乕僽偟廔傢偭偨傜師偓偼僋儕傾
			DDN_clr = 1;		// 昞帵婍僲僀僘僋儕傾桳岟
			DspDev.Phs = 0;
		}

		p += sprintf(&buf[p], "%d%2d%2d%4d%2d%02d%02d",
				dsp_flg,							// 婲摦僼儔僌 (1:寈崘壒桳傝 / 2:柍偟)
				Map_DbData[max].R_dt.day,			// 嵟戝恔搙偺敪惗擔
				Map_DbData[max].R_dt.mon,			//      乂   敪惗寧
				Map_DbData[max].R_dt.yer,			//      乂   敪惗擭
				Map_DbData[max].R_dt.hor,			//      乂   敪惗帪
				Map_DbData[max].R_dt.min,			//      乂   敪惗暘
				Map_DbData[max].R_dt.sec			//      乂   敪惗昩
		);

		for (ch=0;ch<MAX_CH;ch++){
			dat = Map_DbData[ch].SinKai;
			if (dat < 0 || dat > 9){
				dat = 0;
			}
			sprintf(&buf[p], "%s", kai[dat]);
			p += 2;
		}
		buf[p ++] = C_CR;
		buf[p ++] = C_LF;
		buf[p   ] = NULL;
		err = WriteCommBlock(MAX_CH, buf, p);
	}
	return (0);
}

⌨️ 快捷键说明

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