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

📄 frmmain.cpp

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	   m_bFlag = FALSE;
           if ( !m_StartFlag )
           {
              btnSelDev->Enabled = TRUE;
           }
        }
        usStartFlag = 0;
	while ( !flag )
	{
           btnDisable1->Enabled = FALSE;
           btnEnable1->Enabled = TRUE;

           EventSetting.EventType = ADS_EVT_INTERRUPT_IDI0;
           EventSetting.Enabled   = FALSE;
           m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );

           if ( m_ErrCde != 0 )
           {
              DRV_GetErrorMessage( m_ErrCde, (LPSTR)m_szErrMsg );
 	      MessageBox(Handle, (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
	      return;
           }
           flag = TRUE;
	}
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnDisable2Click(TObject *Sender)
{
	PT_EnableEvent	EventSetting;
	BOOL            flag = FALSE;

        m_bIDI1Flag = FALSE;

	if ( !(m_bDI0Flag || m_bDI1Flag || m_bIDI0Flag || m_bIDI1Flag ))
	{
	   m_bContinue = FALSE;
	   m_bFlag = FALSE;
           if ( !m_StartFlag )
           {
              btnSelDev->Enabled = TRUE;
           }
        }
        usStartFlag = 0;
	while ( !flag )
	{
           btnDisable2->Enabled = FALSE;
           btnEnable2->Enabled = TRUE;

           EventSetting.EventType = ADS_EVT_INTERRUPT_IDI1;
           EventSetting.Enabled   = FALSE;
           m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );

           if ( m_ErrCde != 0 )
           {
              DRV_GetErrorMessage( m_ErrCde, (LPSTR)m_szErrMsg );
 	      MessageBox(Handle, (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
	      return;
           }
           flag = TRUE;
	}
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnDisable3Click(TObject *Sender)
{
	PT_EnableEvent	EventSetting;
	BOOL            flag = FALSE;

        m_bDI0Flag = FALSE;

	if ( !(m_bDI0Flag || m_bDI1Flag || m_bIDI0Flag || m_bIDI1Flag ))
	{
	   m_bContinue = FALSE;
	   m_bFlag = FALSE;
           if ( !m_StartFlag )
           {
              btnSelDev->Enabled = TRUE;
           }
        }
        usStartFlag = 0;
	while ( !flag )
	{
           btnDisable3->Enabled = FALSE;
           btnEnable3->Enabled = TRUE;

           EventSetting.EventType = ADS_EVT_INTERRUPT_IDI16;
           EventSetting.Enabled   = FALSE;
           m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );

           if ( m_ErrCde != 0 )
           {
              DRV_GetErrorMessage( m_ErrCde, (LPSTR)m_szErrMsg );
 	      MessageBox(Handle, (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
	      return;
           }
           flag = TRUE;
	}
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnDisable4Click(TObject *Sender)
{
	PT_EnableEvent	EventSetting;
	BOOL            flag = FALSE;

        m_bDI1Flag = FALSE;

	if ( !(m_bDI0Flag || m_bDI1Flag || m_bIDI0Flag || m_bIDI1Flag ))
	{
	   m_bContinue = FALSE;
	   m_bFlag = FALSE;
           if ( !m_StartFlag )
           {
              btnSelDev->Enabled = TRUE;
           }
        }
        usStartFlag = 0;
	while ( !flag )
	{
           btnDisable4->Enabled = FALSE;
           btnEnable4->Enabled = TRUE;

           EventSetting.EventType = ADS_EVT_INTERRUPT_IDI17;
           EventSetting.Enabled   = FALSE;
           m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );

           if ( m_ErrCde != 0 )
           {
              DRV_GetErrorMessage( m_ErrCde, (LPSTR)m_szErrMsg );
 	      MessageBox(Handle, (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
	      return;
           }
           flag = TRUE;
	}
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnCloseClick(TObject *Sender)
{
        Close();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
	m_bContinue = FALSE;
 	PT_EnableEvent	EventSetting;
        DWORD           ExitCode;

	if( usStartFlag == 1 )
	{
	   usStartFlag = 0;
           EventSetting.EventType = ADS_EVT_INTERRUPT_IDI0;
           EventSetting.Enabled   = FALSE;
           m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );

           EventSetting.EventType = ADS_EVT_INTERRUPT_IDI1;
           m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );
           EventSetting.EventType = ADS_EVT_INTERRUPT_IDI16;
           m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );
           EventSetting.EventType = ADS_EVT_INTERRUPT_IDI17;
           m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );
           if ( m_ErrCde != 0 )
           {
              DRV_GetErrorMessage( m_ErrCde, (LPSTR)m_szErrMsg );
 	      MessageBox(Handle, (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
	      return;
           }
	}


        if(pEventThread)
        {
             pEventThread->Terminate();
             GetExitCodeThread((void *)(pEventThread->Handle), &ExitCode);
             if(ExitCode==STILL_ACTIVE)
               TerminateThread((void *)(pEventThread->Handle), ExitCode);
             }


	Sleep(50L);
	if ( m_DriverHandle != NULL )
           DRV_DeviceClose( &m_DriverHandle );
}
//---------------------------------------------------------------------------

void TMainForm::CheckEvent()
{
        INT     i;
        DWORD	dwStartTime;
        DWORD	dwCurrentTime;
        DWORD	dwTime;
        float	fEventCount_IDI[4];
        float	ratio_IDI[ 4 ];
        char	szBuf_IDI[4][20];
        USHORT	usEventType;

        for ( i = 0; i < 4; i++ )
        {
           fEventCount_IDI[ i ] = 0.0;
        }

        ptCheckEvent.EventType = &usEventType;
        ptCheckEvent.Milliseconds = 1000;
        dwStartTime = GetTickCount();

        while ( m_bContinue )
        {
           m_bFlag = TRUE;
           if ( DRV_CheckEvent( m_DriverHandle, &ptCheckEvent ) == SUCCESS)
           {
              if ( *ptCheckEvent.EventType == ADS_EVT_INTERRUPT_IDI0 )
              {
                 fEventCount_IDI[ 0 ]++;
              }
              if ( *ptCheckEvent.EventType == ADS_EVT_INTERRUPT_IDI1 )
              {
                 fEventCount_IDI[ 1 ]++;
              }
              if ( *ptCheckEvent.EventType == ADS_EVT_INTERRUPT_IDI16 )
              {
                 fEventCount_IDI[ 2 ]++;
              }
              if ( *ptCheckEvent.EventType == ADS_EVT_INTERRUPT_IDI17 )
              {
                 fEventCount_IDI[ 3 ]++;
              }
           }

           dwCurrentTime = GetTickCount();
           if ( ( dwTime = dwCurrentTime - dwStartTime ) >= 1000 )
           {
              for ( i = 0; i < 4; i++ )
              {
                 ratio_IDI[i] = ((fEventCount_IDI[i] / (float)dwTime) * 1000.0);
                 sprintf( szBuf_IDI[i], "%.3f", ratio_IDI[i] );
                 fEventCount_IDI[i] = 0.0;
              }

              editIntCount_IDI0->Text = szBuf_IDI[0];
              editIntCount_IDI1->Text = szBuf_IDI[1];
              editIntCount_DI0->Text = szBuf_IDI[2];
              editIntCount_DI1->Text = szBuf_IDI[3];

              dwStartTime = GetTickCount();
           }
        }


}


//---------------------------------------------------------------------------

//   Important: Methods and properties of objects in VCL can only be
//   used in a method called using Synchronize, for example:
//
//      Synchronize(UpdateCaption);
//
//   where UpdateCaption could look like:
//
//      void __fastcall EventThread::UpdateCaption()
//      {
//        Form1->Caption = "Updated in a thread";
//      }
//---------------------------------------------------------------------------

__fastcall EventThread::EventThread(bool CreateSuspended)
        : TThread(CreateSuspended)
{
}
//---------------------------------------------------------------------------
void __fastcall EventThread::Execute()
{
        //---- Place thread code here ----
        MainForm->CheckEvent();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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