📄 8255_j.cpp
字号:
// 8255_J.cpp : implementation file
//
#include "stdafx.h"
#include "pctest.h"
#include "8255_J.h"
#include "address.h"
#include "adc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern HANDLE hDevice;
extern HANDLE hDevice1;
extern PCHAR DynVxDName;
extern PCHAR IoVxDName;
/////////////////////////////////////////////////////////////////////////////
// C8255_J dialog
C8255_J::C8255_J(CWnd* pParent /*=NULL*/)
: CDialog(C8255_J::IDD, pParent)
{
//{{AFX_DATA_INIT(C8255_J)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
hDevice=hDevice1=NULL;
m_n=0;
}
void C8255_J::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(C8255_J)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(C8255_J, CDialog)
//{{AFX_MSG_MAP(C8255_J)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// C8255_J message handlers
BOOL C8255_J::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
if(hDevice1==NULL)
{
hDevice1 = CreateFile(DynVxDName, 0,0,0,
CREATE_NEW,
FILE_FLAG_DELETE_ON_CLOSE,
0);
if (hDevice1 == INVALID_HANDLE_VALUE)
{
AfxMessageBox("请检查板卡和驱动程序");
CDialog::OnCancel();
return FALSE;
}
m_p=(pci_cfg*)malloc(sizeof(pci_cfg));
BOOL status = DeviceIoControl(
hDevice1,
DIOC_PCICFG,
m_p,
0,
NULL,
0,
NULL,
NULL);
hDevice = CreateFile(IoVxDName, 0,0,0,
CREATE_NEW,
FILE_FLAG_DELETE_ON_CLOSE,
0);
if (hDevice == INVALID_HANDLE_VALUE)
{
AfxMessageBox("请检查板卡和驱动程序");
CDialog::OnCancel();
return FALSE;
}
}
BYTE data=0x80;
BOOL status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_type,
NULL,
data,
NULL,
NULL);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void C8255_J::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
BYTE data;
BOOL status;
switch(nIDEvent)
{
case 1:
Handle_A_B();
break;
case 2:
Handle_AB();
break;
case 3:
Handle_AB_BC();
break;
}
CDialog::OnTimer(nIDEvent);
}
void C8255_J::OnRadio1()
{
// TODO: Add your control notification handler code here
m_n=1;
SetTimer(1,100,NULL);
KillTimer(2);
KillTimer(3);
}
void C8255_J::OnRadio2()
{
// TODO: Add your control notification handler code here
m_n=1;
KillTimer(1);
KillTimer(3);
SetTimer(2,100,NULL);
}
void C8255_J::OnRadio3()
{
// TODO: Add your control notification handler code here
m_n=1;
KillTimer(1);
KillTimer(2);
SetTimer(3,100,NULL);
}
void C8255_J::Handle_A_B()
{ BYTE data;
BOOL status;
switch(m_n)
{
case 1:
m_n+=1;
data=0x01;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 2:
m_n+=1;
data=0x02;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 3:
m_n+=1;
data=0x04;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 4:
m_n=1;
data=0x08;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
}
}
void C8255_J::Handle_AB()
{ BYTE data;
BOOL status;
switch(m_n)
{
case 1:
data=0x03;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
m_n+=1;
break;
case 2:
data=0x06;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
m_n+=1;
break;
case 3:
data=0x0c;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
m_n+=1;
break;
case 4:
data=0x09;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
m_n=1;
break;
}
}
void C8255_J::Handle_AB_BC()
{
BYTE data;
BOOL status;
switch(m_n)
{
case 1:
m_n+=1;
data=0x01;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 2:
m_n+=1;
data=0x03;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 3:
m_n+=1;
data=0x02;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 4:
m_n+=1;
data=0x05;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 5:
m_n+=1;
data=0x04;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 6:
m_n+=1;
data=0x0c;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 7:
m_n+=1;
data=0x08;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
case 8:
m_n=1;
data=9;
status = DeviceIoControl(
hDevice,
DIOC_IO_WRITE,
m_p,
IC_8255_A,
NULL,
data,
NULL,
NULL);
break;
; }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -