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

📄 diintdlg.cpp

📁 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    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 + -