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

📄 dio.cpp

📁 pci7222单片机的驱动程序
💻 CPP
字号:
// dio.cpp : implementation file
//

#include "stdafx.h"
#include "pci7222.h"
#include "dio.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
mPCH365_IO_REG mBaseAddr;
/////////////////////////////////////////////////////////////////////////////
// dio dialog


dio::dio(CWnd* pParent /*=NULL*/)
	: CDialog(dio::IDD, pParent)
{
	//{{AFX_DATA_INIT(dio)
	m_iIO = -1;
	m_strDo1 = _T("");
	m_strDo2 = _T("");
	m_strIn1 = _T("");
	m_strIn2 = _T("");
	//}}AFX_DATA_INIT
}


void dio::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(dio)
	DDX_Radio(pDX, IDC_DI_RADIO, m_iIO);
	DDX_Text(pDX, IDC_EDIT1, m_strDo1);
	DDX_Text(pDX, IDC_EDIT2, m_strDo2);
	DDX_Text(pDX, IDC_INPUT1, m_strIn1);
	DDX_Text(pDX, IDC_INPUT2, m_strIn2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(dio, CDialog)
	//{{AFX_MSG_MAP(dio)
	ON_BN_CLICKED(IDC_DIO_EXIT, OnDioExit)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_DI_RADIO, OnDiRadio)
	ON_BN_CLICKED(IDC_DO_RADIO, OnDoRadio)
	ON_BN_CLICKED(IDC_ALL_PUT, OnAllPut)
	ON_BN_CLICKED(IDC_HELP_BUTTON, OnHelpButton)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// dio message handlers

BOOL dio::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	 
    m_iIO=0;
    m_strIn1=_T("1--8路开关量输入显示(16进制):");
	m_strIn2=_T("9--16路开关量输入显示(16进制):");
	UpdateData(false);
	GetDlgItem(IDC_EDIT1)->EnableWindow(false);
	GetDlgItem(IDC_EDIT2)->EnableWindow(false);
	SetTimer(1,100,NULL);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void dio::OnDioExit() 
{
	// TODO: Add your control notification handler code here
	
	OnOK();
}

void dio::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	UCHAR cByte1,cByte2;
    if(m_iIO==0)
	{
		
	    GetDlgItem(IDC_EDIT1)->EnableWindow(false);
	    GetDlgItem(IDC_EDIT2)->EnableWindow(false);
		m_strIn1=_T("1--8路开关量输入显示(16进制):");
	    m_strIn2=_T("9--16路开关量输入显示(16进制):");
		CH365mReadIoByte( 0, &mBaseAddr->mCh365IoPort[4], &cByte1 );
        CH365mReadIoByte( 0, &mBaseAddr->mCh365IoPort[5], &cByte2 );
		//读开关量
		m_strDo1.Format("%x",cByte1);
		m_strDo2.Format("%x",cByte2);
        UpdateData(false);
	}
	CDialog::OnTimer(nIDEvent);
}

void dio::OnDiRadio() 
{
	// TODO: Add your control notification handler code here
	m_iIO=0;
	m_strDo1 = _T("");
	m_strDo2 = _T("");
	m_strIn1=_T("1--8路开关量输入显示(16进制):");
	m_strIn2=_T("9--16路开关量输入显示(16进制):");
	UpdateData(false);
	GetDlgItem(IDC_EDIT1)->EnableWindow(false);
	GetDlgItem(IDC_EDIT2)->EnableWindow(false);
	SetTimer(1,100,NULL);
}

void dio::OnDoRadio() 
{
	// TODO: Add your control notification handler code here
	KillTimer(1);
	UpdateData(true);
	int ir;
    ir=MessageBox(
		"你确定设置为输出方式吗?",
		"CH365开关量测试界面",
		MB_YESNO + MB_ICONQUESTION);
	if (ir==IDNO)
	{
		int i=SetTimer(1,100,NULL);
        m_iIO=0;
		m_strIn1=_T("1--8路开关量输入显示(16进制):");
	    m_strIn2=_T("9--16路开关量输入显示(16进制):");
		if(i==0)
		AfxMessageBox("cannot install timer!");
		UpdateData(FALSE);
		GetDlgItem(IDC_EDIT1)->EnableWindow(false);
	    GetDlgItem(IDC_EDIT2)->EnableWindow(false);
	}
	else
	{
		GetDlgItem(IDC_EDIT1)->EnableWindow(true);
	    GetDlgItem(IDC_EDIT2)->EnableWindow(true);
		m_iIO=1;
		m_strIn1=_T("1--8路开关量(16进制)输出:");
	    m_strIn2=_T("9--16路开关量(16进制)输出:");
		UpdateData(false);
	}
}

void dio::OnAllPut() 
{
	// TODO: Add your control notification handler code here
	UCHAR cByte1,cByte2;
    if(m_iIO==1)
	{

		 UpdateData(true);
		 sscanf(m_strDo1,"%x",&cByte1);
		 sscanf(m_strDo2,"%x",&cByte2);
         CH365mWriteIoByte(0,&mBaseAddr->mCh365IoPort[6],cByte1);
		 CH365mWriteIoByte(0,&mBaseAddr->mCh365IoPort[7],cByte2);
		 //写开关量
	}
}

void dio::OnHelpButton() 
{
	// TODO: Add your control notification handler code here
	m_help.DoModal();
}

⌨️ 快捷键说明

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