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

📄 dlgpcl730.cpp

📁 研华数据采集卡PCI1713,PCI1720,PCL730测试程序
💻 CPP
字号:
// DlgPcl730.cpp : implementation file
//

#include "stdafx.h"
#include "CardTest.h"
#include "DlgPcl730.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgPcl730 dialog


CDlgPcl730::CDlgPcl730(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgPcl730::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgPcl730)
	//}}AFX_DATA_INIT
	m_bPcl730On = FALSE;
	m_bTimerOn	= FALSE;
	m_nState	= 0;
	m_usState	= 0;
}


void CDlgPcl730::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgPcl730)
	DDX_Control(pDX, IDC_LED10, m_Led10);
	DDX_Control(pDX, IDC_LED9, m_Led9);
	DDX_Control(pDX, IDC_LED8, m_Led8);
	DDX_Control(pDX, IDC_LED7, m_Led7);
	DDX_Control(pDX, IDC_LED6, m_Led6);
	DDX_Control(pDX, IDC_LED5, m_Led5);
	DDX_Control(pDX, IDC_LED4, m_Led4);
	DDX_Control(pDX, IDC_LED3, m_Led3);
	DDX_Control(pDX, IDC_LED2, m_Led2);
	DDX_Control(pDX, IDC_LED15, m_Led15);
	DDX_Control(pDX, IDC_LED14, m_Led14);
	DDX_Control(pDX, IDC_LED13, m_Led13);
	DDX_Control(pDX, IDC_LED12, m_Led12);
	DDX_Control(pDX, IDC_LED11, m_Led11);
	DDX_Control(pDX, IDC_LED1, m_Led1);
	DDX_Control(pDX, IDC_LED0, m_Led0);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgPcl730, CDialog)
	//{{AFX_MSG_MAP(CDlgPcl730)
	ON_WM_DESTROY()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_DIGOUT,OnDigOut)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgPcl730 message handlers

BOOL CDlgPcl730::OnInitDialog() 
{
	CDialog::OnInitDialog();

	m_Led0.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led1.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led2.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led3.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led4.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led5.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led6.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led7.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led8.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led9.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led10.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led11.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led12.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led13.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led14.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);
	m_Led15.LoadBitmaps(IDB_RBU,IDB_RBD,IDB_RBF,IDB_RBX);

	OpenPcl730();
	if(SetTimer(1, 200, NULL) == 1)
		m_bTimerOn = TRUE;
	else
		m_bTimerOn = FALSE;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

int CDlgPcl730::DigBitIn(USHORT port, USHORT bit, USHORT state)
{
	Pcl730.ptDioReadBit.port = port;
	Pcl730.ptDioReadBit.bit = bit;
	Pcl730.ptDioReadBit.state = (USHORT far *)&state;
	if((Pcl730.ErrCde = Pcl730.DioReadBit(Pcl730.PCL730Handle, 
			(LPT_DioReadBit)&Pcl730.ptDioReadBit)) != SUCCESS)
	{
		Pcl730.ErrMessage(Pcl730.ErrCde,(LPSTR)Pcl730.szErrMsg);
		ClosePcl730();
		return 2;			// 返回值为2表示开关量读入错误
	}
	else 
		return (int)state;	// 返回读入的状态
}

int CDlgPcl730::DigBitOut(USHORT port, USHORT bit, USHORT state)
{
	Pcl730.ptDioWriteBit.port  = port;
	Pcl730.ptDioWriteBit.bit   = bit;
	Pcl730.ptDioWriteBit.state = state;
	if((Pcl730.ErrCde = Pcl730.DioWriteBit(Pcl730.PCL730Handle, 
			(LPT_DioWriteBit)&Pcl730.ptDioWriteBit)) != SUCCESS)
	{
		ClosePcl730();
		return 0;
	}
	else 
		return 1;
}

void CDlgPcl730::ClosePcl730()
{
	Pcl730.CloseDevice((LONG *)&Pcl730.PCL730Handle);
	m_bPcl730On = FALSE;
}

void CDlgPcl730::OpenPcl730()
{
	if((Pcl730.ErrCde=Pcl730.OpenDevice(PCL730,
		(LONG *)&Pcl730.PCL730Handle)!=SUCCESS))
	{
		strcpy(Pcl730.szErrMsg,"PCL730 打开错误!");
		AfxMessageBox((LPCSTR)Pcl730.szErrMsg,MB_OK,0);
		m_bPcl730On = FALSE;
	}
	else
		m_bPcl730On = TRUE;
}

void CDlgPcl730::InitPcl730()
{
	if(m_bPcl730On == TRUE)
	{
		Pcl730.ptDioWritePortByte.port  = 0;
		Pcl730.ptDioWritePortByte.mask  = 0xff;
		Pcl730.ptDioWritePortByte.state = 0;
		if ((Pcl730.ErrCde = Pcl730.DioWritePortByte(Pcl730.PCL730Handle,
			(LPT_DioWritePortByte)&Pcl730.ptDioWritePortByte)) != SUCCESS)
		{
			Pcl730.ErrMessage(Pcl730.ErrCde,(LPSTR)Pcl730.szErrMsg);
			ClosePcl730();
			MessageBox((LPSTR)Pcl730.szErrMsg);
		}
	}
	else
	{
		MessageBox("PCL730打开失败,初始化不成功!");	
	}
}

void CDlgPcl730::OnDigOut()
{
	m_usState = (USHORT)m_Led0.GetBtnOn();
	DigBitOut(0, 0, m_usState);
	m_usState = (USHORT)m_Led1.GetBtnOn();
	DigBitOut(0, 1, m_usState);
	m_usState = (USHORT)m_Led2.GetBtnOn();
	DigBitOut(0, 2, m_usState);
	m_usState = (USHORT)m_Led3.GetBtnOn();
	DigBitOut(0, 3, m_usState);
	m_usState = (USHORT)m_Led4.GetBtnOn();
	DigBitOut(0, 4, m_usState);
	m_usState = (USHORT)m_Led5.GetBtnOn();
	DigBitOut(0, 5, m_usState);
	m_usState = (USHORT)m_Led6.GetBtnOn();
	DigBitOut(0, 6, m_usState);
	m_usState = (USHORT)m_Led7.GetBtnOn();
	DigBitOut(0, 7, m_usState);
}

void CDlgPcl730::OnDestroy() 
{
	CDialog::OnDestroy();
	
	if(m_bPcl730On == TRUE)
	{
		InitPcl730();
		ClosePcl730();
	}
	else
	{
		OpenPcl730();
		InitPcl730();
		ClosePcl730();
	}	
	
}

void CDlgPcl730::OnTimer(UINT nIDEvent) 
{
	m_nState = DigBitIn(0, 0, m_usState);
	if(m_nState == 1)
	{
		m_Led8.SetButtonState(BUTTON_ON);
		m_Led8.EnableWindow(FALSE);
	}
	else
	{
		m_Led8.SetButtonState(BUTTON_OFF);
		m_Led8.EnableWindow(FALSE);
	}
	m_nState = DigBitIn(0, 1, m_usState);
	if(m_nState == 1)
	{
		m_Led9.SetButtonState(BUTTON_ON);
		m_Led9.EnableWindow(FALSE);
	}
	else
	{
		m_Led9.SetButtonState(BUTTON_OFF);
		m_Led9.EnableWindow(FALSE);
	}
	m_nState = DigBitIn(0, 2, m_usState);
	if(m_nState == 1)
	{
		m_Led10.SetButtonState(BUTTON_ON);
		m_Led10.EnableWindow(FALSE);
	}
	else
	{
		m_Led10.SetButtonState(BUTTON_OFF);
		m_Led10.EnableWindow(FALSE);
	}
	m_nState = DigBitIn(0, 3, m_usState);
	if(m_nState == 1)
	{
		m_Led11.SetButtonState(BUTTON_ON);
		m_Led11.EnableWindow(FALSE);
	}
	else
	{
		m_Led11.SetButtonState(BUTTON_OFF);
		m_Led11.EnableWindow(FALSE);
	}
	m_nState = DigBitIn(0, 4, m_usState);
	if(m_nState == 1)
	{
		m_Led12.SetButtonState(BUTTON_ON);
		m_Led12.EnableWindow(FALSE);
	}
	else
	{
		m_Led12.SetButtonState(BUTTON_OFF);
		m_Led12.EnableWindow(FALSE);
	}
	m_nState = DigBitIn(0, 5, m_usState);
	if(m_nState == 1)
	{
		m_Led13.SetButtonState(BUTTON_ON);
		m_Led13.EnableWindow(FALSE);
	}
	else
	{
		m_Led13.SetButtonState(BUTTON_OFF);
		m_Led13.EnableWindow(FALSE);
	}
	m_nState = DigBitIn(0, 6, m_usState);
	if(m_nState == 1)
	{
		m_Led14.SetButtonState(BUTTON_ON);
		m_Led14.EnableWindow(FALSE);
	}
	else
	{
		m_Led14.SetButtonState(BUTTON_OFF);
		m_Led14.EnableWindow(FALSE);
	}
	m_nState = DigBitIn(0, 7, m_usState);
	if(m_nState == 1)
	{
		m_Led15.SetButtonState(BUTTON_ON);
		m_Led15.EnableWindow(FALSE);
	}
	else
	{
		m_Led15.SetButtonState(BUTTON_OFF);
		m_Led15.EnableWindow(FALSE);
	}	
	CDialog::OnTimer(nIDEvent);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -