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 + -
显示快捷键?