commdlg.cpp
来自「这是一个在正实际应用当中运行的电力监控系统软件源代码」· C++ 代码 · 共 1,742 行 · 第 1/5 页
CPP
1,742 行
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "def.h"
#include "ctkdll.h"
#include "wincomm.h"
#include "commdlg.h"
#include "wincomrc.h"
#include "comm.h"//-- 定义实时数据库全局变量
#include "tcp_win.h"
#include "db.h"
#include "dbfile.h"
LPSTR as;
//-------------------------------------------------------------
extern BYTE CalChNum(BYTE CommNo);
extern BOOL EnReadSelf(BYTE);
extern BOOL DiReadSelf(BYTE);
extern BOOL InitAllModem();
extern BOOL InitOneComm(BYTE);
extern BOOL InitOneModem(BYTE);
extern BOOL InitAllComm();
extern BOOL GetModemSet(BYTE);
extern int idComDev[80];
extern COMMPARA CommPara[];
extern HWND hMainWindow;
extern int HardwareInstallFlag[];
extern CHANNELPARAM FAR *lpChannelParam;
extern HGLOBAL hChannelParamMem;
extern STATIONPARAM FAR *lpStaParam;
extern WORD TotalChNum, TotalProtoNum, TotalStaNum;
extern PROTOCAL Protocal[];
extern HGLOBAL hCTKSIOMem;
extern HGLOBAL InputCommMem[80];
extern HGLOBAL OutputCommMem[80];
extern DWORD CommCount[80];
//-------------------------------------------------------------
void SaveChParam();
void ReadChParam();
void SaveStaParam();
void ReadStaParam();
void ReadCTKSIO();
void CheckBaudRate(CTKSIO FAR *);
void SaveCommBaudFile();
BYTE SaveCommData();
COMMPARA CommPara1[80];
WORD rtuno=0;
BYTE Radio;
BYTE GetSetFlag=0;
char Text[9];
//-----------------------------------------------------------------------------//
TSetCTKParamDialog::TSetCTKParamDialog (PTWindowsObject AParent, CTKSIO FAR *lpCTK)
: TDialog(AParent, "CTKINIT_DLG")
{
lpctk = lpCTK;
}
TSetCTKParamDialog::~TSetCTKParamDialog ()
{
}
void TSetCTKParamDialog::WMInitDialog(TMessage& msg)
{
char *IntNo[]={"3", "5"};
TDialog::WMInitDialog(msg);
EnableWindow(GetDlgItem(HWindow,ID_BaudPBt), 0);
SetDlgItemInt(HWindow, ID_IntT1Edit, lpctk->IntTimer1,FALSE);
SetDlgItemInt(HWindow, ID_IntT2Edit, lpctk->IntTimer2,FALSE);
int bno = lpctk->SIONum/16;
if (bno==1) CheckRadioButton(HWindow,ID_BoardRBt1,ID_BoardRBt4,ID_BoardRBt1);
else if (bno==2) CheckRadioButton(HWindow,ID_BoardRBt1,ID_BoardRBt4,ID_BoardRBt2);
else if (bno==3) CheckRadioButton(HWindow,ID_BoardRBt1,ID_BoardRBt4,ID_BoardRBt3);
else if (bno==4) CheckRadioButton(HWindow,ID_BoardRBt1,ID_BoardRBt4,ID_BoardRBt4);
for(int i=0; i<2;i++)
{
SendDlgItemMessage(HWindow,ID_Int1CBox,CB_ADDSTRING,0,(LONG)(LPSTR)IntNo[i]);
SendDlgItemMessage(HWindow,ID_Int2CBox,CB_ADDSTRING,0,(LONG)(LPSTR)IntNo[i]);
}
SendDlgItemMessage(HWindow,ID_Int1CBox,CB_SETCURSEL,0,0);
SendDlgItemMessage(HWindow,ID_Int2CBox,CB_SETCURSEL,1,0);
}
void TSetCTKParamDialog::WMCommand(TMessage &msg)
{
TDialog::WMCommand(msg);
switch(msg.WParam)
{
case ID_BoardRBt1: case ID_BoardRBt2:
case ID_BoardRBt3: case ID_BoardRBt4:
CheckRadioButton(HWindow,ID_BoardRBt1,ID_BoardRBt4,msg.WParam);
break;
case ID_BaudPBt:
GetApplication()->ExecDialog(new TBaudRateDialog(this, lpctk));
break;
case ID_SioPBt:
GetCTKParam();
GetApplication()->ExecDialog(new TSetCTKSIODialog(this, lpctk));
break;
case ID_InitPBt:
GetCTKParam();
if (HardwareInstallFlag[CTKBOARD])
{
StopCTK();
HardwareInstallFlag[CTKBOARD]=NULL;
HardwareInstallFlag[CTKBOARD]=InitialCTK(hMainWindow, lpChannelParam, lpctk);
}
break;
case ID_SavePBt:
case IDOK:
GetCTKParam();
SaveCTKSIO();
break;
case IDCANCEL:
ReadCTKSIO();
break;
}
}
void ReadCTKSIO(CTKSIO FAR *lpctk)
{
OFSTRUCT OfS;
HFILE hf = OpenFile ((LPSTR)"c:\\TCZ\\CTKSIO.dat", (LPOFSTRUCT)&OfS, OF_READ);
if (hf != HFILE_ERROR)
{
_lread(hf, lpctk, sizeof(CTKSIO));
_lclose(hf);
}
}
void TSetCTKParamDialog::ReadCTKSIO()
{
OFSTRUCT OfS;
HFILE hf = OpenFile ((LPSTR)"c:\\TCZ\\CTKSIO.dat", (LPOFSTRUCT)&OfS, OF_READ);
if (hf != HFILE_ERROR)
{
_lread(hf, lpctk, sizeof(CTKSIO));
_lclose(hf);
}
}
void TSetCTKParamDialog::SaveCTKSIO()
{
OFSTRUCT OfS;
HFILE hf = OpenFile ((LPSTR)"c:\\TCZ\\CTKSIO.dat", (LPOFSTRUCT)&OfS, OF_CREATE);
if (hf != HFILE_ERROR)
{
_lwrite(hf, lpctk, sizeof(CTKSIO));
_lclose(hf);
}
}
BOOL TSetCTKParamDialog::CanClose()
{
return TRUE;
}
void TSetCTKParamDialog::Ok(RTMessage msg)
{
CloseWindow(IDOK);
}
void TSetCTKParamDialog::GetCTKParam(void)
{
lpctk->IntTimer1 = GetDlgItemInt(HWindow, ID_IntT1Edit, 0, 0);
lpctk->IntTimer2 = GetDlgItemInt(HWindow, ID_IntT2Edit, 0, 0);
int bno=0;
if (IsDlgButtonChecked(HWindow,ID_BoardRBt1)==1) bno=1;
else if (IsDlgButtonChecked(HWindow,ID_BoardRBt2)==1) bno=2;
else if (IsDlgButtonChecked(HWindow,ID_BoardRBt3)==1) bno=3;
else if (IsDlgButtonChecked(HWindow,ID_BoardRBt4)==1) bno=4;
lpctk->SIONum = bno*16;
lpctk->DataRSIrqNo = IRQ3;
lpctk->DataProcIrqNo = IRQ5;
// TotalChNum=bno*16;
}
//------------------------------------------------------------------------------//
TSetCTKSIODialog::TSetCTKSIODialog (PTWindowsObject AParent, CTKSIO FAR *lpCTK)
: TDialog(AParent, "SIOPARAM_DLG")
{
lpctk = lpCTK;
}
TSetCTKSIODialog::~TSetCTKSIODialog ()
{
}
void TSetCTKSIODialog::WMInitDialog(RTMessage msg)
{
TDialog::WMInitDialog(msg);
char *syncw[]={"EB90", "D709"};
char SIOName[30];
for (int i=0; i<2; i++)
SendDlgItemMessage(HWindow,ID_SyncWCBox,CB_ADDSTRING,i,(LONG)(LPSTR)syncw[i]);
siono=0;
for (i=0; i<lpctk->SIONum; i++)
{
sprintf(SIOName, "SIO---%d%d", i/10,i%10);
SendDlgItemMessage(HWindow, ID_SioList, LB_ADDSTRING, i, (LONG)(LPSTR)SIOName);
}
SendDlgItemMessage(HWindow, ID_SioList, LB_SETCURSEL, siono, 0);
SetSIOInitData();
}
void TSetCTKSIODialog::SetSIOInitData(void)
{
/*
1818
0104
0200
13c1
0444
15e8
46eb
8790
*/
UINT tmp, br;
lpctk->SIOWriteReg[siono][0]=0x1818;
lpctk->SIOWriteReg[siono][1]=0x0104;
lpctk->SIOWriteReg[siono][2]=0x0200;
lpctk->SIOWriteReg[siono][5]=0x15e8;
CheckBaudRate(lpctk);
if (lpctk->SIOWriteReg[siono][3]==0x13d1)
{
CheckRadioButton(HWindow,ID_SyncBRd1,ID_SyncBRd2,ID_SyncBRd1);
SetEnable(FALSE);
tmp = (lpctk->SIOWriteReg[siono][6]&0xff)*256 + (lpctk->SIOWriteReg[siono][7]&0xff);
if (tmp == 0xd709) tmp=1;
else tmp = 0;
SendDlgItemMessage(HWindow, ID_SyncWCBox, CB_SETCURSEL, tmp, 0);
if (lpctk->BaudRate[siono/4])
// tmp = 3072/lpctk->BaudRate[siono/4];
//tzc
if (siono>=0 && siono<=3) tmp=3072/lpctk->BaudRate[0];
if (siono>=4 && siono<=7) tmp=3072/lpctk->BaudRate[1];
if (siono>=8 && siono<=15) tmp=3072/lpctk->BaudRate[2];
if (siono>=16&& siono<=19) tmp=3072/lpctk->BaudRate[3];
if (siono>=20&& siono<=23) tmp=3072/lpctk->BaudRate[4];
if (siono>=24&& siono<=31) tmp=3072/lpctk->BaudRate[5];
if (siono>=32&& siono<=35) tmp=3072/lpctk->BaudRate[6];
if (siono>=36&& siono<=39) tmp=3072/lpctk->BaudRate[7];
if (siono>=40&& siono<=47) tmp=3072/lpctk->BaudRate[8];
if (siono>=48&& siono<=51) tmp=3072/lpctk->BaudRate[9];
if (siono>=52&& siono<=55) tmp=3072/lpctk->BaudRate[10];
if (siono>=56&& siono<=63) tmp=3072/lpctk->BaudRate[11];
}
// else if (lpctk->SIOWriteReg[siono][3]==0x13c1)
else// if (lpctk->SIOWriteReg[siono][3]&0x10==0)
{
CheckRadioButton(HWindow,ID_SyncBRd1,ID_SyncBRd2,ID_SyncBRd2);
SetEnable(TRUE);
tmp=lpctk->StopDataBits[siono];
if (tmp==1) CheckRadioButton(HWindow,ID_DataBitBRd1,ID_DataBitBRd4,ID_DataBitBRd1);
else if (tmp==2) CheckRadioButton(HWindow,ID_DataBitBRd1,ID_DataBitBRd4,ID_DataBitBRd2);
else if (tmp==3) CheckRadioButton(HWindow,ID_DataBitBRd1,ID_DataBitBRd4,ID_DataBitBRd3);
else if (tmp==4) CheckRadioButton(HWindow,ID_DataBitBRd1,ID_DataBitBRd4,ID_DataBitBRd4);
tmp = lpctk->SIOWriteReg[siono][4]&0xc0;
if (tmp==0) { CheckRadioButton(HWindow,ID_RatioBRd1,ID_RatioBRd4,ID_RatioBRd1); br=1; }
else if (tmp==0x40) { CheckRadioButton(HWindow,ID_RatioBRd1,ID_RatioBRd4,ID_RatioBRd2); br=16; }
else if (tmp==0x80) { CheckRadioButton(HWindow,ID_RatioBRd1,ID_RatioBRd4,ID_RatioBRd3); br=32; }
else if (tmp==0xc0) { CheckRadioButton(HWindow,ID_RatioBRd1,ID_RatioBRd4,ID_RatioBRd4); br=64; }
tmp = lpctk->SIOWriteReg[siono][4]&0xc;
if (tmp==0x4) CheckRadioButton(HWindow,ID_StopBRd1,ID_StopBRd3,ID_StopBRd1);
else if (tmp==0x8) CheckRadioButton(HWindow,ID_StopBRd1,ID_StopBRd3,ID_StopBRd2);
else if (tmp==0xc) CheckRadioButton(HWindow,ID_StopBRd1,ID_StopBRd3,ID_StopBRd3);
tmp = lpctk->SIOWriteReg[siono][4]&3;
if (tmp==1) CheckRadioButton(HWindow,ID_VerifyBRd1,ID_VerifyBRd3,ID_VerifyBRd1);
else if (tmp==3) CheckRadioButton(HWindow,ID_VerifyBRd1,ID_VerifyBRd3,ID_VerifyBRd2);
else CheckRadioButton(HWindow,ID_VerifyBRd1,ID_VerifyBRd3,ID_VerifyBRd3);
if (lpctk->BaudRate[siono/4])
//--------------------jgx 99.1-------------------------------------
if (siono>=0 &&siono<=3) lpctk->BaudRate[0] *= br;
if (siono>=4 &&siono<=7) lpctk->BaudRate[1] *= br;
if (siono>=8 &&siono<=15) lpctk->BaudRate[2] *= br;
if (siono>=16&&siono<=19) lpctk->BaudRate[3] *= br;
if (siono>=20&&siono<=23) lpctk->BaudRate[4] *= br;
if (siono>=24&&siono<=31) lpctk->BaudRate[5] *= br;
if (siono>=32&&siono<=35) lpctk->BaudRate[6] *= br;
if (siono>=36&&siono<=39) lpctk->BaudRate[7] *= br;
if (siono>=40&&siono<=47) lpctk->BaudRate[8] *= br;
if (siono>=48&&siono<=51) lpctk->BaudRate[9] *= br;
if (siono>=52&&siono<=55) lpctk->BaudRate[10]*= br;
if (siono>=56&&siono<=63) lpctk->BaudRate[11]*= br;
//--------------------jgx 99.1-------------------------------------
if (siono>=0 && siono<=3) tmp=3072/lpctk->BaudRate[0];
if (siono>=4 && siono<=7) tmp=3072/lpctk->BaudRate[1];
if (siono>=8 && siono<=15) tmp=3072/lpctk->BaudRate[2];
if (siono>=16&& siono<=19) tmp=3072/lpctk->BaudRate[3];
if (siono>=20&& siono<=23) tmp=3072/lpctk->BaudRate[4];
if (siono>=24&& siono<=31) tmp=3072/lpctk->BaudRate[5];
if (siono>=32&& siono<=35) tmp=3072/lpctk->BaudRate[6];
if (siono>=36&& siono<=39) tmp=3072/lpctk->BaudRate[7];
if (siono>=40&& siono<=47) tmp=3072/lpctk->BaudRate[8];
if (siono>=48&& siono<=51) tmp=3072/lpctk->BaudRate[9];
if (siono>=52&& siono<=55) tmp=3072/lpctk->BaudRate[10];
if (siono>=56&& siono<=63) tmp=3072/lpctk->BaudRate[11];
}
if (tmp==1) CheckRadioButton(HWindow,ID_BaudBRd1,ID_BaudBRd6,ID_BaudBRd1);
else if (tmp==2) CheckRadioButton(HWindow,ID_BaudBRd1,ID_BaudBRd6,ID_BaudBRd2);
else if (tmp==4) CheckRadioButton(HWindow,ID_BaudBRd1,ID_BaudBRd6,ID_BaudBRd3);
else if (tmp==8) CheckRadioButton(HWindow,ID_BaudBRd1,ID_BaudBRd6,ID_BaudBRd4);
else if (tmp==16) CheckRadioButton(HWindow,ID_BaudBRd1,ID_BaudBRd6,ID_BaudBRd5);
else if (tmp==32) CheckRadioButton(HWindow,ID_BaudBRd1,ID_BaudBRd6,ID_BaudBRd6);
}
void TSetCTKSIODialog::GetSIOData(void)
{
UINT tmp, br;
if (IsDlgButtonChecked(HWindow, ID_BaudBRd1)==1) tmp=1;
else if (IsDlgButtonChecked(HWindow, ID_BaudBRd2)==1) tmp=2;
else if (IsDlgButtonChecked(HWindow, ID_BaudBRd3)==1) tmp=4;
else if (IsDlgButtonChecked(HWindow, ID_BaudBRd4)==1) tmp=8;
else if (IsDlgButtonChecked(HWindow, ID_BaudBRd5)==1) tmp=16;
else if (IsDlgButtonChecked(HWindow, ID_BaudBRd6)==1) tmp=32;
else tmp=1;
if (IsDlgButtonChecked(HWindow,ID_SyncBRd1)==1)
{
lpctk->SIOWriteReg[siono][3]=0x13d1;
lpctk->SIOWriteReg[siono][4]=0x0410;
if (siono>=0 &&siono<=3) lpctk->BaudRate[0] = 3072/tmp;
if (siono>=4 &&siono<=7) lpctk->BaudRate[1] = 3072/tmp;
if (siono>=8 &&siono<=15) lpctk->BaudRate[2] = 3072/tmp;
if (siono>=16&&siono<=19) lpctk->BaudRate[3] = 3072/tmp;
if (siono>=20&&siono<=23) lpctk->BaudRate[4] = 3072/tmp;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?