📄 frmmain.cpp
字号:
//---------------------------------------------------------------------------
#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 + -