📄 unit1.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char DeviceName[ 50 ];
ULONG ulSize;
LONG* pBuffer;
m_ulDevNum = 0;
DRV_SelectDevice( Handle, FALSE, &m_ulDevNum, DeviceName );
editDevName->Text = DeviceName;
// open device
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);
}
cmbCounter->ItemIndex = 0;
m_CompType = 1; // Compare Table
m_CompIndex = 0;
// Get Indicator Property
m_ErrCde = DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrIndicatorControl, NULL, &ulSize);
if (m_ErrCde == SUCCESS)
{
pBuffer = new LONG[ulSize / sizeof(LONG)];
m_ErrCde = DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrIndicatorControl, pBuffer, &ulSize);
if (pBuffer[0] & OVERCOMPLEVEL)
{
chkDOIndicate->Checked = TRUE;
chkBigComp->Checked = TRUE;
rdoLevel->Checked = TRUE;
}
if (pBuffer[0] & OVERCOMPPULSE)
{
chkDOIndicate->Checked = TRUE;
chkBigComp->Checked = TRUE;
rdoPulse->Checked = TRUE;
}
if (pBuffer[0] & UNDERCOMPLEVEL)
{
chkDOIndicate->Checked = TRUE;
chkSmallComp->Checked = TRUE;
rdoLevel->Checked = TRUE;
}
if (pBuffer[0] & UNDERCOMPPULSE)
{
chkDOIndicate->Checked = TRUE;
chkSmallComp->Checked = TRUE;
rdoPulse->Checked = TRUE;
}
delete[] pBuffer;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnSelDevClick(TObject *Sender)
{
char DeviceName[50];
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);
if ( m_ErrCde != SUCCESS )
{
DRV_GetErrorMessage(m_ErrCde, m_szErrMsg);
MessageBox(Handle, m_szErrMsg, "Device Open", MB_OK);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
m_bContinue = FALSE;
// Terminate thread
KillThread();
// Close device
Sleep(50L);
if ( m_DriverHandle != NULL )
DRV_DeviceClose( &m_DriverHandle );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnCloseClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::cmbCounterChange(TObject *Sender)
{
ULONG ulSize;
LONG* pBuffer;
USHORT usCounter;
usCounter = cmbCounter->ItemIndex;
// Get Indicator Property
m_ErrCde = DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrIndicatorControl, NULL, &ulSize);
if (m_ErrCde == SUCCESS)
{
chkDOIndicate->Checked = FALSE;
chkBigComp->Checked = FALSE;
chkSmallComp->Checked = FALSE;
rdoPulse->Checked = FALSE;
rdoLevel->Checked = FALSE;
pBuffer = new LONG[ulSize / sizeof(LONG)];
m_ErrCde = DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrIndicatorControl, pBuffer, &ulSize);
if (pBuffer[usCounter] & OVERCOMPLEVEL)
{
chkDOIndicate->Checked = TRUE;
chkBigComp->Checked = TRUE;
rdoLevel->Checked = TRUE;
}
if (pBuffer[usCounter] & OVERCOMPPULSE)
{
chkDOIndicate->Checked = TRUE;
chkBigComp->Checked = TRUE;
rdoPulse->Checked = TRUE;
}
if (pBuffer[usCounter] & UNDERCOMPLEVEL)
{
chkDOIndicate->Checked = TRUE;
chkSmallComp->Checked = TRUE;
rdoLevel->Checked = TRUE;
}
if (pBuffer[usCounter] & UNDERCOMPPULSE)
{
chkDOIndicate->Checked = TRUE;
chkSmallComp->Checked = TRUE;
rdoPulse->Checked = TRUE;
}
delete[] pBuffer;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnStartClick(TObject *Sender)
{
LONG* pBuffer;
ULONG ulSize;
PT_EnableEvent ptEnableEvent;
PT_CounterEventStart ptCounterEventStart;
m_CurCounter = cmbCounter->ItemIndex;
if (chkOverComp->Checked)
m_OverComp = 1;
else
m_OverComp = 0;
if (chkUnderComp->Checked)
m_UnderComp = 1;
else
m_UnderComp = 0;
if (m_CompType == 1)
btnSetTableClick(Sender);
// Set Indicator
m_ErrCde = DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrIndicatorControl, NULL, &ulSize);
pBuffer = new LONG[ulSize / sizeof(LONG)];
m_ErrCde = DRV_DeviceGetProperty(m_DriverHandle, CFG_CntrIndicatorControl, pBuffer, &ulSize);
pBuffer[m_CurCounter] = 0;
if (chkDOIndicate->Checked)
{
if (chkBigComp->Checked)
{
if (rdoPulse->Checked)
pBuffer[m_CurCounter] |= OVERCOMPPULSE;
if (rdoLevel->Checked)
pBuffer[m_CurCounter] |= OVERCOMPLEVEL;
}
if (chkSmallComp->Checked)
{
if (rdoPulse->Checked)
pBuffer[m_CurCounter] |= UNDERCOMPPULSE;
if (rdoLevel->Checked)
pBuffer[m_CurCounter] |= UNDERCOMPLEVEL;
}
}
m_ErrCde = DRV_DeviceSetProperty(m_DriverHandle, CFG_CntrIndicatorControl, pBuffer, ulSize);
// Enable Event
ptEnableEvent.Count = 1;
ptEnableEvent.Enabled = TRUE;
if (m_OverComp)
{
ptEnableEvent.EventType = ADS_EVT_OVERCOMPARE_CNT0 + m_CurCounter;
m_ErrCde = DRV_EnableEvent(m_DriverHandle, &ptEnableEvent);
if (m_ErrCde != SUCCESS)
{
DRV_GetErrorMessage(m_ErrCde, m_szErrMsg);
MessageBox(Handle, m_szErrMsg, "Driver Message", MB_OK);
}
}
if (m_UnderComp)
{
ptEnableEvent.EventType = ADS_EVT_UNDERCOMPARE_CNT0 + m_CurCounter;
m_ErrCde = DRV_EnableEvent(m_DriverHandle, &ptEnableEvent);
if (m_ErrCde != SUCCESS)
{
DRV_GetErrorMessage(m_ErrCde, m_szErrMsg);
MessageBox(Handle, m_szErrMsg, "Driver Message", MB_OK);
}
}
// start counter
ptCounterEventStart.counter = m_CurCounter;
m_ErrCde = DRV_CounterEventStart(m_DriverHandle, &ptCounterEventStart);
btnSelDev->Enabled = FALSE;
btnStart->Enabled = FALSE;
btnStop->Enabled = TRUE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -