📄 ledloop.cpp
字号:
// ledloop.cpp : implementation file
//
#include "stdafx.h"
#include "pctest.h"
#include "ledloop.h"
#include "adc.h"
#include "address.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern PCHAR mDynVxDName ;
/////////////////////////////////////////////////////////////////////////////
// Cledloop dialog
Cledloop::Cledloop(CWnd* pParent /*=NULL*/)
: CDialog(Cledloop::IDD, pParent)
{
//{{AFX_DATA_INIT(Cledloop)
m_way = -1;
//}}AFX_DATA_INIT
hDevice=hDevice2=NULL;
if(!b[0].LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2))
{
TRACE0("Failed to load bitmaps for buttons\n");
}
if(!b[1].LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2))
{
TRACE0("Failed to load bitmaps for buttons\n");
}
if(!b[2].LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2))
{
TRACE0("Failed to load bitmaps for buttons\n");
}
if(!b[3].LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2))
{
TRACE0("Failed to load bitmaps for buttons\n");
}
if(!b[4].LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2))
{
TRACE0("Failed to load bitmaps for buttons\n");
}
if(!b[5].LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2))
{
TRACE0("Failed to load bitmaps for buttons\n");
}
if(!b[6].LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2))
{
TRACE0("Failed to load bitmaps for buttons\n");
}
if(!b[7].LoadBitmaps(IDB_BITMAP1,IDB_BITMAP2))
{
TRACE0("Failed to load bitmaps for buttons\n");
}
m_LEDbit=0;
}
void Cledloop::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(Cledloop)
DDX_Radio(pDX, IDC_RADIO9, m_way);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(Cledloop, CDialog)
//{{AFX_MSG_MAP(Cledloop)
ON_BN_CLICKED(IDC_RADIO9, OnRadio9)
ON_BN_CLICKED(IDC_RADIO10, OnRadio10)
ON_BN_CLICKED(IDC_RADIO11, OnRadio11)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// Cledloop message handlers
void Cledloop::OnCancel()
{CDialog::OnCancel();
}
BOOL Cledloop::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
VERIFY(b[0].SubclassDlgItem(IDC_BUTTON1, this));
b[0].SizeToContent();
VERIFY(b[1].SubclassDlgItem(IDC_BUTTON2, this));
b[1].SizeToContent();
VERIFY(b[2].SubclassDlgItem(IDC_BUTTON3, this));
b[2].SizeToContent();
VERIFY(b[3].SubclassDlgItem(IDC_BUTTON4, this));
b[3].SizeToContent();
VERIFY(b[4].SubclassDlgItem(IDC_BUTTON5, this));
b[4].SizeToContent();
VERIFY(b[5].SubclassDlgItem(IDC_BUTTON6, this));
b[5].SizeToContent();
VERIFY(b[6].SubclassDlgItem(IDC_BUTTON7, this));
b[6].SizeToContent();
VERIFY(b[7].SubclassDlgItem(IDC_BUTTON8, this));
b[7].SizeToContent();
if(hDevice==NULL)
{
hDevice = CreateFile(mDynVxDName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hDevice == INVALID_HANDLE_VALUE)
{
AfxMessageBox("请检查板卡和驱动程序");
CDialog::OnCancel();
return FALSE;
}
W_AD=(Write_AD*)malloc(sizeof(Write_AD));
W_AD->Data=0;
W_AD->Address=IC_LED;
DeviceIoControl(
hDevice,
IOCTL_IOW,
W_AD,
sizeof(W_AD)+1,
NULL,
0,
&nRet,
NULL);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void Cledloop::OnRadio9()
{
// TODO: Add your control notification handler code here
KillTimer(3);
KillTimer(2);
m_LEDbit=0;
UpdateData(TRUE);
SetTimer(1,500,NULL);
}
void Cledloop::OnRadio10()
{
// TODO: Add your control notification handler code here
KillTimer(1);
KillTimer(3);
m_LEDbit=0;
UpdateData(TRUE);
SetTimer(2,500,NULL);
}
void Cledloop::OnRadio11()
{
// TODO: Add your control notification handler code here
KillTimer(2);
KillTimer(1);
m_LEDbit=0;
UpdateData(TRUE);
SetTimer(3,500,NULL);
}
void Cledloop::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
int m_a=0;
switch(nIDEvent)
{
case 1:
m_LEDbit+=1;
if(m_LEDbit>8)
{
m_LEDbit=1;
}
Handleloop1(m_LEDbit);
break;
case 2:
m_LEDbit+=1;
if(m_LEDbit>8)
{
m_LEDbit=1;
}
m_a=9-m_LEDbit;
Handleloop1(m_a);
break;
case 3:
m_LEDbit+=1;
if(m_LEDbit>4)
{
m_LEDbit=1;
}
Handleloop2(m_LEDbit);
break;
}
CDialog::OnTimer(nIDEvent);
}
void Cledloop::Handleloop1(int m_a)
{
BYTE data=0x01;
data=data<<(m_a-1);
W_AD->Data=data;
W_AD->Address=IC_LED;
DeviceIoControl(
hDevice,
IOCTL_IOW,
W_AD,
sizeof(W_AD)+1,
NULL,
0,
&nRet,
NULL);
for(int x=0;x<8;x++)
{
if(x==m_a-1)
{
b[x].SetState(2);
}else{
b[x].SetState(0);
}
}
}
void Cledloop::Handleloop2(int m_a)
{
switch(m_a)
{
case 1:
b[0].SetState(0);
b[1].SetState (0);
b[2].SetState(0);
b[3].SetState (2);
b[4].SetState(2);
b[5].SetState (0);
b[6].SetState(0);
b[7].SetState (0);
data=0x18;
break;
case 2:
b[0].SetState(0);
b[1].SetState (0);
b[2].SetState(2);
b[3].SetState (0);
b[4].SetState(0);
b[5].SetState (2);
b[6].SetState(0);
b[7].SetState (0);
data=0x24;
break;
case 3:
b[0].SetState(0);
b[1].SetState (2);
b[2].SetState(0);
b[3].SetState (0);
b[4].SetState(0);
b[5].SetState (0);
b[6].SetState(2);
b[7].SetState (0);
data=0x42;
break;
case 4:
b[0].SetState(2);
b[1].SetState (0);
b[2].SetState(0);
b[3].SetState (0);
b[4].SetState(0);
b[5].SetState (0);
b[6].SetState(0);
b[7].SetState (2);
data=0x81;
break;
}
W_AD->Data=data;
W_AD->Address=IC_LED;
DeviceIoControl(
hDevice,
IOCTL_IOW,
W_AD,
sizeof(W_AD)+1,
NULL,
0,
&nRet,
NULL);
}
void Cledloop::OnOK()
{
// TODO: Add extra validation here
W_AD->Data=0x00;
W_AD->Address=IC_LED;
DeviceIoControl(
hDevice,
IOCTL_IOW,
W_AD,
sizeof(W_AD)+1,
NULL,
0,
&nRet,
NULL);
KillTimer(3);
KillTimer(2);
KillTimer(1);
if(hDevice!=NULL)
{
CloseHandle( hDevice);
hDevice=NULL;
}
if(hDevice2!=NULL)
{
CloseHandle( hDevice2);
hDevice2=NULL;
}
CDialog::OnOK();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -