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

📄 frmmain.cpp

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include <stdio.h>
#include "frmMain.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;

//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
        int   i;
        FLOAT ratio;
        char  szBuf_IDI[ 4 ][20];
	char  DeviceName[ 50 ];
        //hailing add at 2004/06/28
        DWORD dwBoardID;
        DWORD dwCount;
        //hailing end

        editScanTime->Text = "1000";
	editChan->Text = "0";
	editCount_DI1->Text = "1";
        editCount_DI0->Text = "1";
        editCount_IDI0->Text = "1";
        editCount_IDI1->Text = "1";
	m_DriverHandle = (LONG)NULL;          // driver handle
	m_bContinue    = FALSE;
	m_bHiPriority  = FALSE;
	m_bFlag     = FALSE;
	m_bDI0Flag  = FALSE;
	m_bDI1Flag  = FALSE;
        m_bIDI0Flag = FALSE;
	m_bIDI1Flag = FALSE;
        m_StartFlag = 0;
        pEventThread=NULL;

        for ( i = 0; i < 4; i++ )
        {
           ratio = 0.0;
           sprintf( szBuf_IDI[i], "%.3f", ratio );
        }

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

	m_ulDevNum = 0;
	DRV_SelectDevice( Handle, FALSE, &m_ulDevNum, DeviceName );
	editDevName->Text = DeviceName;
	scrollChanSpin->Position = 0;
	m_ErrCde = DRV_DeviceOpen( m_ulDevNum, &m_DriverHandle );
	if ( m_ErrCde != SUCCESS )
        {
           DRV_GetErrorMessage(m_ErrCde, m_szErrMsg);
           MessageBox(Handle, m_szErrMsg, "Device Open", MB_OK);
        }
        dwCount = sizeof(DWORD);
        m_ErrCde = DRV_DeviceGetProperty(m_DriverHandle, CFG_BoardID, &dwBoardID, &dwCount);
	if ( m_ErrCde != SUCCESS )
        {
           DRV_GetErrorMessage(m_ErrCde, m_szErrMsg);
           MessageBox(Handle, m_szErrMsg, "Device GetProperty", MB_OK);
        }
        if ( BD_PCI1736UP == dwBoardID )
        {
           btnEnable3->Enabled = false;
           btnEnable4->Enabled = false;
        }
        else
        {
           btnEnable3->Enabled = true;
           btnEnable4->Enabled = true;
        }

}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnSelDevClick(TObject *Sender)
{
	char DeviceName[50];
        //hailing add at 2004/06/28
        DWORD dwBoardID;
        DWORD dwCount;
        //hailing end

	if ( m_DriverHandle != NULL )
           DRV_DeviceClose( &m_DriverHandle );
	DRV_SelectDevice( Handle, FALSE, &m_ulDevNum, DeviceName );
	editDevName->Text = DeviceName;
	m_ErrCde = DRV_DeviceOpen( m_ulDevNum, &m_DriverHandle);

        dwCount = sizeof(DWORD);
        m_ErrCde = DRV_DeviceGetProperty(m_DriverHandle, CFG_BoardID, &dwBoardID, &dwCount);
	if ( m_ErrCde != SUCCESS )
        {
           DRV_GetErrorMessage(m_ErrCde, m_szErrMsg);
           MessageBox(Handle, m_szErrMsg, "Device GetProperty", MB_OK);
        }
        if ( BD_PCI1736UP == dwBoardID )
        {
           btnEnable3->Enabled = false;
           btnEnable4->Enabled = false;
        }
        else
        {
           btnEnable3->Enabled = true;
           btnEnable4->Enabled = true;
        }

}
//---------------------------------------------------------------------------

void __fastcall TMainForm::scrollChanSpinChange(TObject *Sender)
{
        editChan->Text =  IntToStr(scrollChanSpin->Position);       
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnStartClick(TObject *Sender)
{
        m_StartFlag = 1;
        Timer1->Enabled = TRUE;
        Timer1->Interval = StrToInt(editScanTime->Text);
	btnStart->Enabled = FALSE;
        btnStop->Enabled = TRUE;
        btnSelDev->Enabled = FALSE;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnStopClick(TObject *Sender)
{
	Timer1->Enabled = FALSE;
        m_StartFlag = 0;
        btnStart->Enabled = TRUE;
        btnStop->Enabled = FALSE;
        if ( !(m_bDI0Flag || m_bDI1Flag || m_bIDI1Flag || m_bIDI0Flag || m_StartFlag ))
        {
           btnSelDev->Enabled = TRUE;
        }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::Timer1Timer(TObject *Sender)
{
	USHORT	gwValue;		// input value
	char	szBuf[10];

	m_ptDioReadPortByte.port = StrToInt(editChan->Text);
	m_ptDioReadPortByte.value = (USHORT far *)&gwValue;

	if ((m_ErrCde = DRV_DioReadPortByte(m_DriverHandle,
                (LPT_DioReadPortByte)&m_ptDioReadPortByte)) != 0)
	{
	   DRV_GetErrorMessage(m_ErrCde,(LPSTR)m_szErrMsg);
	   Timer1->Enabled = FALSE;
	   MessageBox(Handle, (LPCSTR)m_szErrMsg, "Driver Message", MB_OK);
	} 
	else 
	{
	   sprintf( szBuf, "%02X", gwValue );
	   editScanData->Text = szBuf;
	}
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnEnable1Click(TObject *Sender)
{
	PT_EnableEvent	EventSetting;

        m_bIDI0Flag   = TRUE;
        usStartFlag  = 1;
        EventSetting.Enabled   = TRUE;
        EventSetting.Count     = StrToInt(editCount_IDI0->Text);

        EventSetting.EventType = ADS_EVT_INTERRUPT_IDI0;
        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;
        }

        btnDisable1->Enabled = TRUE;
        btnEnable1->Enabled = FALSE;
        btnSelDev->Enabled = FALSE;

        if ( m_bFlag == FALSE )
        {
           m_bContinue = TRUE;

           // Using THREAD_PRIORITY_TIME_CRITICAL for interrupt event handling routine,
           // you can get about 20 KHz response ratio by using PENTIUM 200 MMX PC.
           pEventThread = new EventThread(true);
           pEventThread->Priority = tpTimeCritical;
           pEventThread->Resume();
        }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnEnable2Click(TObject *Sender)
{
	PT_EnableEvent	EventSetting;

        m_bIDI1Flag   = TRUE;
        usStartFlag  = 1;
        EventSetting.Enabled   = TRUE;
        EventSetting.Count     = StrToInt(editCount_IDI1->Text);

        EventSetting.EventType = ADS_EVT_INTERRUPT_IDI1;
        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;
        }

        btnDisable2->Enabled = TRUE;
        btnEnable2->Enabled = FALSE;
        btnSelDev->Enabled = FALSE;

        if ( m_bFlag == FALSE )
        {
           m_bContinue = TRUE;

           // Using THREAD_PRIORITY_TIME_CRITICAL for interrupt event handling routine,
           // you can get about 20 KHz response ratio by using PENTIUM 200 MMX PC.
           pEventThread = new EventThread(true);
           pEventThread->Priority = tpTimeCritical;
           pEventThread->Resume();
        }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnEnable3Click(TObject *Sender)
{
	PT_EnableEvent	EventSetting;

        m_bDI0Flag   = TRUE;
        usStartFlag  = 1;
        EventSetting.Enabled   = TRUE;
        EventSetting.Count     = StrToInt(editCount_DI0->Text);

        EventSetting.EventType = ADS_EVT_INTERRUPT_DI0;
        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;
        }

        btnDisable3->Enabled = TRUE;
        btnEnable3->Enabled = FALSE;
        btnSelDev->Enabled = FALSE;

        if ( m_bFlag == FALSE )
        {
           m_bContinue = TRUE;

           // Using THREAD_PRIORITY_TIME_CRITICAL for interrupt event handling routine,
           // you can get about 20 KHz response ratio by using PENTIUM 200 MMX PC.
           pEventThread = new EventThread(true);
           pEventThread->Priority = tpTimeCritical;
           pEventThread->Resume();
        }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnEnable4Click(TObject *Sender)
{
	PT_EnableEvent	EventSetting;

        m_bDI1Flag   = TRUE;
        usStartFlag  = 1;
        EventSetting.Enabled   = TRUE;
        EventSetting.Count     = StrToInt(editCount_DI1->Text);

        EventSetting.EventType = ADS_EVT_INTERRUPT_DI1;
        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;
        }

        btnDisable4->Enabled = TRUE;
        btnEnable4->Enabled = FALSE;
        btnSelDev->Enabled = FALSE;

        if ( m_bFlag == FALSE )
        {
           m_bContinue = TRUE;

⌨️ 快捷键说明

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