📄 diintdlg.cpp
字号:
PT_CheckEvent ptCheckEvent; // Check event
USHORT usEventTye;
ptCheckEvent.EventType=&usEventTye;
ptCheckEvent.Milliseconds=5000;
char szTemp[80];
ULONG status;
char szErrMsg[180];
while(pDlg->bThreadloop)
{
status = DRV_CheckEvent(pDlg->m_DeviceHandle, &ptCheckEvent);
if (status != SUCCESS)
{
DRV_GetErrorMessage(status,szErrMsg);
pDlg->MessageBox(szErrMsg);
pDlg->OnSurprisedRemove();
return 0;
}
switch(usEventTye)
{
case ADS_EVT_DI_INTERRUPT0:
pDlg->m_DI0Count++;
sprintf(szTemp,"%d",pDlg->m_DI0Count);
pDlg->SetDlgItemText(IDC_txtDI0Int,szTemp);
break;
case ADS_EVT_DI_INTERRUPT1:
pDlg->m_DI1Count++;
sprintf(szTemp,"%d",pDlg->m_DI1Count);
pDlg->SetDlgItemText(IDC_txtDI1Int,szTemp);
break;
case ADS_EVT_DI_INTERRUPT2:
pDlg->m_DI2Count++;
sprintf(szTemp,"%d",pDlg->m_DI2Count);
pDlg->SetDlgItemText(IDC_txtDI2Int,szTemp);
break;
case ADS_EVT_DI_INTERRUPT3:
pDlg->m_DI3Count++;
sprintf(szTemp,"%d",pDlg->m_DI3Count);
pDlg->SetDlgItemText(IDC_txtDI3Int,szTemp);
break;
case ADS_EVT_DI_INTERRUPT4:
pDlg->m_DI4Count++;
sprintf(szTemp,"%d",pDlg->m_DI4Count);
pDlg->SetDlgItemText(IDC_txtDI4Int,szTemp);
break;
case ADS_EVT_DI_INTERRUPT5:
pDlg->m_DI5Count++;
sprintf(szTemp,"%d",pDlg->m_DI5Count);
pDlg->SetDlgItemText(IDC_txtDI5Int,szTemp);
break;
case ADS_EVT_DI_INTERRUPT6:
pDlg->m_DI6Count++;
sprintf(szTemp,"%d",pDlg->m_DI6Count);
pDlg->SetDlgItemText(IDC_txtDI6Int,szTemp);
break;
case ADS_EVT_DI_INTERRUPT7:
pDlg->m_DI7Count++;
sprintf(szTemp,"%d",pDlg->m_DI7Count);
pDlg->SetDlgItemText(IDC_txtDI7Int,szTemp);
break;
case ADS_EVT_DEVREMOVED:
pDlg->MessageBox("The Device is removed! Please reopen the device!");
pDlg->OnSurprisedRemove();
break;
default :
break;
}
}
return 0;
}
void CDIINTDlg::OnSelectDevice()
{
// TODO: Add your control notification handler code here
UCHAR DeviceName[100];
bThreadloop = FALSE;
DWORD ExitCode;
// TODO: Add your control notification handler code here
if ( m_DeviceHandle != NULL )
{
if(pThread)
{
GetExitCodeThread(pThread->m_hThread,&ExitCode);
if(ExitCode==STILL_ACTIVE)
TerminateThread(pThread->m_hThread,ExitCode);
}
DRV_DeviceClose( &m_DeviceHandle );
}
DRV_SelectDevice( m_hWnd, FALSE, &m_DeviceNum, DeviceName );
m_DeviceName=DeviceName;
OnOpendevice();
}
void CDIINTDlg::OnStop()
{
// TODO: Add your control notification handler code here
DWORD ExitCode;
bThreadloop=FALSE;
m_btnStop.EnableWindow(FALSE);
m_btnStart.EnableWindow(TRUE);
m_BtnExit.EnableWindow(TRUE);
if ( m_DeviceHandle != NULL )
{
if(pThread)
{
GetExitCodeThread(pThread->m_hThread,&ExitCode);
if( ExitCode == STILL_ACTIVE )
TerminateThread(pThread->m_hThread,ExitCode);
}
}
}
void CDIINTDlg::OnChkDI0()
{
// TODO: Add your control notification handler code here
ptEnableEvent.Enabled=((CButton *)GetDlgItem(IDC_ChkDI0))->GetCheck();;
ptEnableEvent.EventType=ADS_EVT_DI_INTERRUPT0;
ptEnableEvent.Count=1;
DRV_EnableEvent(m_DeviceHandle,&ptEnableEvent);
}
void CDIINTDlg::OnChkDI1()
{
// TODO: Add your control notification handler code here
ptEnableEvent.Enabled=((CButton *)GetDlgItem(IDC_ChkDI1))->GetCheck();
ptEnableEvent.EventType=ADS_EVT_DI_INTERRUPT1;
ptEnableEvent.Count=1;
DRV_EnableEvent(m_DeviceHandle,&ptEnableEvent);
}
void CDIINTDlg::OnChkDI2()
{
// TODO: Add your control notification handler code here
ptEnableEvent.Enabled=((CButton *)GetDlgItem(IDC_ChkDI2))->GetCheck();
ptEnableEvent.EventType=ADS_EVT_DI_INTERRUPT2;
ptEnableEvent.Count=1;
DRV_EnableEvent(m_DeviceHandle,&ptEnableEvent);
}
void CDIINTDlg::OnChkDI3()
{
// TODO: Add your control notification handler code here
ptEnableEvent.Enabled=((CButton *)GetDlgItem(IDC_ChkDI3))->GetCheck();
ptEnableEvent.EventType=ADS_EVT_DI_INTERRUPT3;
ptEnableEvent.Count=1;
DRV_EnableEvent(m_DeviceHandle,&ptEnableEvent);
}
void CDIINTDlg::OnChkDI4()
{
// TODO: Add your control notification handler code here
ptEnableEvent.Enabled=((CButton *)GetDlgItem(IDC_ChkDI4))->GetCheck();
ptEnableEvent.EventType=ADS_EVT_DI_INTERRUPT4;
ptEnableEvent.Count=1;
DRV_EnableEvent(m_DeviceHandle,&ptEnableEvent);
}
void CDIINTDlg::OnChkDI5()
{
// TODO: Add your control notification handler code here
ptEnableEvent.Enabled=((CButton *)GetDlgItem(IDC_ChkDI5))->GetCheck();
ptEnableEvent.EventType=ADS_EVT_DI_INTERRUPT5;
ptEnableEvent.Count=1;
DRV_EnableEvent(m_DeviceHandle,&ptEnableEvent);
}
void CDIINTDlg::OnChkDI6()
{
// TODO: Add your control notification handler code here
ptEnableEvent.Enabled=((CButton *)GetDlgItem(IDC_ChkDI6))->GetCheck();
ptEnableEvent.EventType=ADS_EVT_DI_INTERRUPT6;
ptEnableEvent.Count=1;
DRV_EnableEvent(m_DeviceHandle,&ptEnableEvent);
}
void CDIINTDlg::OnChkDI7()
{
// TODO: Add your control notification handler code here
ptEnableEvent.Enabled=((CButton *)GetDlgItem(IDC_ChkDI7))->GetCheck();
ptEnableEvent.EventType=ADS_EVT_DI_INTERRUPT7;
ptEnableEvent.Count=1;
DRV_EnableEvent(m_DeviceHandle,&ptEnableEvent);
}
void CDIINTDlg::OnSelchangelstIntAuxDi()
{
// TODO: Add your control notification handler code here
//Set the Di channel trigger mode
m_DITriggerMode=0;
for(int i=0;i<8;i++)
m_DITriggerMode = m_DITriggerMode | (SendDlgItemMessage(IDC_lstIntAuxDi0+i, LB_GETCURSEL, 0, 0) << i);
m_ErrCde = DRV_DeviceSetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, &m_DITriggerMode, 4);
}
void CDIINTDlg::OnOpendevice()
{
// TODO: Add your control notification handler code here
DWORD dwCount;
m_ErrCde = DRV_DeviceOpen( m_DeviceNum, &m_DeviceHandle);
if ( m_ErrCde != SUCCESS )
{
DRV_GetErrorMessage(m_ErrCde,(LPSTR)szErrMsg);
MessageBox((LPCSTR)szErrMsg,"Driver Message",MB_OK);
DRV_DeviceClose((LONG far *)&m_DeviceHandle);
return;
}
dwCount = sizeof(DWORD);
m_ErrCde = DRV_DeviceGetProperty(m_DeviceHandle, CFG_IrqDiTriggerSignals, &m_DITriggerMode, &dwCount);
if ( m_ErrCde != SUCCESS )
{
DRV_GetErrorMessage(m_ErrCde,(LPSTR)szErrMsg);
MessageBox((LPCSTR)szErrMsg,"Driver Message",MB_OK);
DRV_DeviceClose((LONG far *)&m_DeviceHandle);
return;
}
for(int i=0; i<8; i++)
SendDlgItemMessage(IDC_lstIntAuxDi0+i, LB_SETCURSEL, (m_DITriggerMode>>i & 1), 0);
m_btnStart.EnableWindow(TRUE);
m_btnStop.EnableWindow(FALSE);
m_btnOpenDevice.EnableWindow(FALSE);
m_btnCloseDevice.EnableWindow(TRUE);
for(i = 0; i < 8; i++ )
((CButton *)GetDlgItem(IDC_ChkDI0+i))->SetCheck(0);
UpdateData(FALSE);
}
void CDIINTDlg::OnClosedevice()
{
// TODO: Add your control notification handler code here
m_btnOpenDevice.EnableWindow(TRUE);
m_btnCloseDevice.EnableWindow(FALSE);
OnStop();
if ( m_DeviceHandle != NULL )
DRV_DeviceClose( &m_DeviceHandle );
}
void CDIINTDlg::OnSurprisedRemove()
{
bThreadloop=FALSE;
m_btnStop.EnableWindow(FALSE);
m_btnStart.EnableWindow(TRUE);
m_BtnExit.EnableWindow(TRUE);
m_btnOpenDevice.EnableWindow(TRUE);
m_btnCloseDevice.EnableWindow(FALSE);
if ( m_DeviceHandle != NULL )
DRV_DeviceClose( &m_DeviceHandle );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -