📄 diintdlg.cpp
字号:
m_pThreadHandle = pThreadObject->m_hThread;
}
}
void CDiIntDlg::OnEnableBtn3()
{
PT_EnableEvent EventSetting;
CWinThread* pThreadObject;
m_bDI16Flag = TRUE;
usStartFlag = 1;
EventSetting.Enabled = TRUE;
EventSetting.Count = m_uCount_IDI16;
EventSetting.EventType = ADS_EVT_INTERRUPT_IDI16;
m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );
if ( m_ErrCde != 0)
{
DRV_GetErrorMessage( m_ErrCde, (LPSTR)m_szErrMsg );
MessageBox( (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
return;
}
m_DisableBtn3.EnableWindow( TRUE );
m_EnableBtn3.EnableWindow( FALSE );
m_DeviceSelect.EnableWindow(FALSE);
if ( m_bFlag == FALSE )
{
m_bContinue = TRUE;
ptThreadArg.m_lDriverHandle = m_DriverHandle;
ptThreadArg.m_hWnd = GetSafeHwnd();
// Using THREAD_PRIORITY_TIME_CRITICAL for interrupt event handling routine
pThreadObject = AfxBeginThread(
CDiIntDlg::EventThread,
&ptThreadArg,
THREAD_PRIORITY_TIME_CRITICAL,
0,
0,
NULL );
m_pThreadHandle = pThreadObject->m_hThread;
}
}
void CDiIntDlg::OnEnableBtn4()
{
PT_EnableEvent EventSetting;
CWinThread* pThreadObject;
m_bDI17Flag = TRUE;
usStartFlag = 1;
EventSetting.Enabled = TRUE;
EventSetting.Count = m_uCount_IDI17;
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( (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
return;
}
m_DisableBtn4.EnableWindow( TRUE );
m_EnableBtn4.EnableWindow( FALSE );
m_DeviceSelect.EnableWindow(FALSE);
if ( m_bFlag == FALSE )
{
m_bContinue = TRUE;
ptThreadArg.m_lDriverHandle = m_DriverHandle;
ptThreadArg.m_hWnd = GetSafeHwnd();
// Using THREAD_PRIORITY_TIME_CRITICAL for interrupt event handling routine
pThreadObject = AfxBeginThread(
CDiIntDlg::EventThread,
&ptThreadArg,
THREAD_PRIORITY_TIME_CRITICAL,
0,
0,
NULL );
m_pThreadHandle = pThreadObject->m_hThread;
}
}
void CDiIntDlg::OnDisableBtn1()
{
PT_EnableEvent EventSetting;
BOOL flag = FALSE;
m_bDI0Flag = FALSE;
if ( !(m_bDI0Flag || m_bDI1Flag || m_bDI16Flag || m_bDI17Flag ))
{
m_bContinue = FALSE;
m_bFlag = FALSE;
if ( !m_StartFlag )
{
m_DeviceSelect.EnableWindow( TRUE );
}
}
usStartFlag = 0;
while ( !flag )
{
m_DisableBtn1.EnableWindow( FALSE );
m_EnableBtn1.EnableWindow( TRUE );
EventSetting.EventType = ADS_EVT_INTERRUPT_IDI0;
EventSetting.Enabled = FALSE;
m_ErrCde = DRV_EnableEvent( m_DriverHandle, &EventSetting );
//Sleep(50L);
if ( m_ErrCde != 0 )
{
DRV_GetErrorMessage( m_ErrCde, (LPSTR)m_szErrMsg );
MessageBox( (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
return;
}
flag = TRUE;
}
}
void CDiIntDlg::OnDisableBtn2()
{
PT_EnableEvent EventSetting;
BOOL flag = FALSE;
m_bDI1Flag = FALSE;
if ( !( m_bDI0Flag || m_bDI1Flag || m_bDI16Flag || m_bDI17Flag ))
{
m_bContinue = FALSE;
m_bFlag = FALSE;
if ( !m_StartFlag )
{
m_DeviceSelect.EnableWindow( TRUE );
}
}
usStartFlag = 0;
while ( !flag )
{
m_DisableBtn2.EnableWindow( FALSE );
m_EnableBtn2.EnableWindow( 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( (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
return;
}
flag = TRUE;
}
}
void CDiIntDlg::OnDisableBtn3()
{
PT_EnableEvent EventSetting;
BOOL flag = FALSE;
m_bDI16Flag = FALSE;
if ( !( m_bDI0Flag || m_bDI1Flag || m_bDI16Flag || m_bDI17Flag ))
{
m_bContinue = FALSE;
m_bFlag = FALSE;
if ( !m_StartFlag )
{
m_DeviceSelect.EnableWindow( TRUE );
}
}
usStartFlag = 0;
while ( !flag )
{
m_DisableBtn3.EnableWindow( FALSE );
m_EnableBtn3.EnableWindow( 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( (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
return;
}
flag = TRUE;
}
}
void CDiIntDlg::OnDisableBtn4()
{
PT_EnableEvent EventSetting;
BOOL flag = FALSE;
m_bDI17Flag = FALSE;
if ( !( m_bDI0Flag || m_bDI1Flag || m_bDI16Flag || m_bDI17Flag ))
{
m_bContinue = FALSE;
m_bFlag = FALSE;
if ( !m_StartFlag )
{
m_DeviceSelect.EnableWindow( TRUE );
}
}
usStartFlag = 0;
while ( !flag )
{
m_DisableBtn4.EnableWindow( FALSE );
m_EnableBtn4.EnableWindow( 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( (LPCSTR)m_szErrMsg, "Driver Message", MB_OK );
return;
}
flag = TRUE;
}
}
void CDiIntDlg::OnClose()
{
//PT_EnableEvent EventSetting;
m_bContinue = FALSE;
if( usStartFlag == 1 )
{
usStartFlag = 0;
if ( m_bDI0Flag != NULL )
{
OnDisableBtn1();
}
if ( m_bDI1Flag != NULL )
{
OnDisableBtn2();
}
if ( m_bDI16Flag !=NULL)
{
OnDisableBtn3();
}
if ( m_bDI17Flag !=NULL )
{
OnDisableBtn4();
}
}
Sleep(50L);
if ( m_DriverHandle != NULL )
DRV_DeviceClose( &m_DriverHandle );
CDialog::OnClose();
}
void CDiIntDlg::OnOK()
{
// TODO: Add extra validation here
m_bContinue = FALSE;
if( usStartFlag == 1 )
{
usStartFlag = 0;
if ( m_bDI0Flag != NULL )
{
OnDisableBtn1();
}
if ( m_bDI1Flag != NULL )
{
OnDisableBtn2();
}
if ( m_bDI16Flag !=NULL)
{
OnDisableBtn3();
}
if ( m_bDI17Flag !=NULL )
{
OnDisableBtn4();
}
}
if ( m_DriverHandle != NULL )
DRV_DeviceClose( &m_DriverHandle );
CDialog::OnOK();
}
void CDiIntDlg::OnChangeScanTime()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CDialog::OnInitDialog()
// function to send the EM_SETEVENTMASK message to the control
// with the ENM_CHANGE flag ORed into the lParam mask.
// TODO: Add your control notification handler code here
UpdateData(TRUE);
}
UINT CDiIntDlg::EventThread(LPVOID ThreadArg)
{
INT i;
DWORD dwStartTime;
DWORD dwCurrentTime;
DWORD dwTime;
DWORD dwEventCount_IDI[4];
float ratio_IDI[ 4 ];
char szBuf_IDI[4][20];
USHORT usEventType;
PT_ThreadArg *ptTArg;
ptTArg = (PT_ThreadArg *)ThreadArg;
for ( i = 0; i < 4; i++ )
{
dwEventCount_IDI[ i ] = 0;
}
ptCheckEvent.EventType = &usEventType;
ptCheckEvent.Milliseconds = 1000;
dwStartTime = GetTickCount();
while ( m_bContinue )
{
m_bFlag = TRUE;
if ( DRV_CheckEvent( ptTArg->m_lDriverHandle, &ptCheckEvent ) == SUCCESS)
{
if ( *ptCheckEvent.EventType == ADS_EVT_INTERRUPT_IDI0 )
{
dwEventCount_IDI[ 0 ]++;
}
if ( *ptCheckEvent.EventType == ADS_EVT_INTERRUPT_IDI1 )
{
dwEventCount_IDI[ 1 ]++;
}
if ( *ptCheckEvent.EventType == ADS_EVT_INTERRUPT_IDI16 )
{
dwEventCount_IDI[ 2 ]++;
}
if ( *ptCheckEvent.EventType == ADS_EVT_INTERRUPT_IDI17 )
{
dwEventCount_IDI[ 3 ]++;
}
}
//m_bFlag = FALSE;
dwCurrentTime = GetTickCount();
if ( ( dwTime = dwCurrentTime - dwStartTime ) >= 1000 )
{
for ( i = 0; i < 4; i++ )
{
ratio_IDI[i] = (float)(((float)dwEventCount_IDI[i] / (float)dwTime) * 1000.0);
sprintf( szBuf_IDI[i], "%.3f", ratio_IDI[i] );
dwEventCount_IDI[i] = 0;
}
::SetDlgItemText( ptTArg->m_hWnd, IDC_INTERRUPTCOUNT_IDI0, szBuf_IDI[0] );
::SetDlgItemText( ptTArg->m_hWnd, IDC_INTERRUPTCOUNT_IDI1, szBuf_IDI[1] );
::SetDlgItemText( ptTArg->m_hWnd, IDC_INTERRUPTCOUNT_IDI16, szBuf_IDI[2] );
::SetDlgItemText( ptTArg->m_hWnd, IDC_INTERRUPTCOUNT_IDI17, szBuf_IDI[3] );
dwStartTime = GetTickCount();
}
}
//m_bFlag = FALSE;
return 0;
}
void CDiIntDlg::OnChangeCountIDI0()
{
UpdateData(TRUE);
}
void CDiIntDlg::OnChangeCountIDI1()
{
UpdateData(TRUE);
}
void CDiIntDlg::OnChangeCountIDI16()
{
UpdateData(TRUE);
}
void CDiIntDlg::OnChangeCountIDI17()
{
UpdateData(TRUE);
}
void CDiIntDlg::OnEventPriority1()
{
// TODO: Add your control notification handler code here
m_bHiPriority = FALSE;
}
void CDiIntDlg::OnEventPriority2()
{
// TODO: Add your control notification handler code here
m_bHiPriority = TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -