📄 ksgview.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 + -