1、GPIOLEDDlg.cpp程序代码
m_hDev=CreateFile(_T("GIO1:"),GENERIC_WRITE,0,NUL
L,OPEN_EXISTING,0,0);
if(m_hDev==INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("打开设备失败"));
}
m_hDev1=CreateFile(_T("LED2:"),GENERIC_WRITE,0,NU
LL,OPEN_EXISTING,0,0);
if(m_hDev==INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("打开设备失败"));
}
return TRUE; // return TRUE unless you set the focus to a
control
}
void CGPIOLEDDlg::OnButton1()
{
// TODO: Add your control notification handler code here
//设置LED灯亮
KillTimer(1);
KillTimer(2);
KillTimer(3);
KillTimer(4);
m_bValue=FALSE;
WriteFile(m_hDev,&m_bValue,4,&m_dwBytes,NULL);
}
void CGPIOLEDDlg::OnButton2()
{
// TODO: Add your control notification handler code here
//设置LED灯熄灭
KillTimer(1);
KillTimer(2);
KillTimer(3);
KillTimer(4);
m_bValue=TRUE;
WriteFile(m_hDev,&m_bValue,4,&m_dwBytes,NULL);
}
void CGPIOLEDDlg::OnButton3()
{
// TODO: Add your control notification handler code here
m_cla=0;
m_bValue=FALSE;
KillTimer(2);
KillTimer(3);
KillTimer(4);
SetTimer(1,1000,NULL);
}
void CGPIOLEDDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call
default
if(nIDEvent==1)
{
//设置LED闪烁
m_cla=m_cla+1;
if(m_bValue==FALSE)
{
if(m_cla==m_s1)
{
m_bValue=TRUE;
m_cla=0;
}
}
if(m_bValue==TRUE)
{
if(m_cla==m_s2)
{
m_bValue=FALSE;
m_cla=0;
}
}
WriteFile(m_hDev,&m_bValue,4,&m_dwBytes,NULL);
}
if(nIDEvent==2)
{
//LED的循环
BYTE data2[4]={0,0,0,0};
DWORD bytes;
m_cla=m_cla+1;
if(m_bValue==1)
{
if(m_cla==m_s1)
{
WriteFile(m_hDev1,data2,4,&bytes,NULL);
m_cla=0;
m_bValue=0;
}
}
else
{
if(m_cla==m_s1)
{
WriteFile(m_hDev1,data,4,&bytes,NULL);
m_cla=0;
m_bValue=1;
}
}
}
if(nIDEvent==3)
{
//LED的单闪
BYTE data2[4]={data[0],0x00,0x00,0x00};
BYTE data3[4]={0x00,data[1],0x00,0x00};
BYTE data4[4]={0x00,0x00,data[2],0x00};
BYTE data5[4]={0x00,0x00,0x00,data[3]};
DWORD bytes;
m_cla=m_cla+1;
if(m_cla==m_s1)
{
if(i>3)
{
i=0;
}
if(i==0)
{
WriteFile(m_hDev1,data2,4,&bytes,NULL);
}
if(i==1)
{
WriteFile(m_hDev1,data3,4,&bytes,NULL);
}
if(i==2)
{
WriteFile(m_hDev1,data4,4,&bytes,NULL);
}
if(i==3)
{
WriteFile(m_hDev1,data5,4,&bytes,NULL);
}
i=i+1;
m_cla=0;
}
}
if(nIDEvent==4)
{
//LED的右移
BYTE a;
DWORD bytes;
m_cla=m_cla+1;
if(m_cla==m_s1)
{
a=data[3];
data[3]=data[2];
data[2]=data[1];
data[1]=data[0];
data[0]=a;
WriteFile(m_hDev1,data,4,&bytes,NULL);
m_cla=0;
}
}
CDialog::OnTimer(nIDEvent);
}
void CGPIOLEDDlg::OnButton4()
{
// TODO: Add your control notification handler code here
BOOL b1,b2;
UINT q;
UINT val1=GetDlgItemInt(IDC_EDIT1,&b1,FALSE);
UINT val2=GetDlgItemInt(IDC_EDIT2,&b2,FALSE);
m_s1=0;
m_s2=0;
data[0]=0;
data[1]=0;
data[2]=0;
data[3]=0;
//获取Edit框的
memset(data,0,2);
if(b1)
{
int i1,n1;
char str1[16];
n1=sprintf(str1,"%d",val1);
n1=n1>2?2:n1;
for(i1=0;i1
2?2:n2;
for(i2=0;i24?4:n1;
for(i1=0;i14?4:n2;
for(i2=0;i24?4:n;
if(str[3]==0)
{
q=1;
}
if(str[2]==0)
{
q=2;
}
if(str[1]==0)
{
q=3;
}
for (i=q;i4?4:n;
if(str[3]==0)
{
q=1;
}
if(str[2]==0)
{
q=2;
}
if(str[1]==0)
{
q=3;
}
for (i=q;i4?4:n;
if(str[3]==0)
{
q=1;
}
if(str[2]==0)
{
q=2;
}
if(str[1]==0)
{
q=3;
}
for (i=q;i4?4:n;
if(str[3]==0)
{
q=1;
}
if(str[2]==0)
{
q=2;
}
if(str[1]==0)
{
q=3;
}
for (i=q;i4?4:n;
if(str[3]==0)
{
q=1;
}
if(str[2]==0)
{
q=2;
}
if(str[1]==0)
{
q=3;
}
for (i=q;i9999)
{
m=m-m/10000*10000;
}
m1=m/1000;
m2=(m-m1*1000)/100;
m3=(m-m1*1000-m2*100)/10;
m4=m-m1*1000-m2*100-m3*10;
}
if(ii==2)
{
m=data[0]*1000+data[1]*100+data[2]*10+data[3]-data2[0]*1
000-data2[1]*100-data2[2]*10-data2[3];
if(m>9999)
{
m=m-m/10000*10000;
}
m1=m/1000;
m2=(m-m1*1000)/100;
m3=(m-m1*1000-m2*100)/10;
m4=m-m1*1000-m2*100-m3*10;
}
if(ii==3)
{
m=(data[0]*1000+data[1]*100+data[2]*10+data[3])*(data2[0]
*1000+data2[1]*100+data2[2]*10+data2[3]);
if(m>9999)
{
m=m-m/10000*10000;
}
m1=m/1000;
m2=(m-m1*1000)/100;
m3=(m-m1*1000-m2*100)/10;
m4=m-m1*1000-m2*100-m3*10;
}
if(ii==4)
{
m=(data[0]*1000+data[1]*100+data[2]*10+data[3])/(data2[0]
*1000+data2[1]*100+data2[2]*10+data2[3]);
if(m>9999)
{
m=m-m/10000*10000;
}
m1=m/1000;
m2=(m-m1*1000)/100;
m3=(m-m1*1000-m2*100)/10;
m4=m-m1*1000-m2*100-m3*10;
}
data[0]=ledfont[m1];
data[1]=ledfont[m2];
data[2]=ledfont[m3];
data[3]=ledfont[m4];
WriteFile(m_hDev1,data,4,&bytes,NULL);
SetDlgItemInt(IDC_EDIT7,m);
}
void CGPIOLEDDlg::OnButton9()
{
// TODO: Add your control notification handler code here
DWORD bytes;
m_bValue=1;
m_cla=0;
WriteFile(m_hDev1,data,4,&bytes,NULL);
KillTimer(1);
KillTimer(2);
KillTimer(4);
SetTimer(3,1000,NULL);
}
void CGPIOLEDDlg::OnButton8()
{
// TODO: Add your control notification handler code here
DWORD bytes;
m_bValue=1;
m_cla=0;
WriteFile(m_hDev1,data,4,&bytes,NULL);
KillTimer(1);
KillTimer(2);
KillTimer(3);
SetTimer(4,1000,NULL);
}
2、GPIOLEDDlg.h程序代码
const BYTE
ledfont[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
class CDigiDlg : public CDialog
{
// Construction
public:
CGPIOLEDDlg(CWnd* pParent = NULL); // standard
constructor
HANDLE m_hDev; //声明一个句柄 用来接收WriteFile的返
回值
BOOL m_bValue; //m-bValue是一个二进制的变量 用来控
制LED的状态
DWORD m_dwBytes; //声明了一个双字类型的变量 用作
WriteFile的参数
UINT m_cla; //计数器的计数时间参数
BYTE data[4]; //文本框输入数据
BYTE data1[4]; //LED时间控制文本框输入数据
HANDLE m_hDev1; //声明一个句柄 用来接收CreateFile
的返回值
DWORD m_dwWrittenBytes; //声明了一个双字类型的变
量 用作CreateFile的参数
UINT m_s1; //亮灯时间
UINT m_s2; //灭灯时间
UINT i; //循环计数
UINT ii; //记录运算类型