|  | 
 
| 在GPIOTEST的应用例程里(配套光盘中),用        “gpiodriver=CreateFile(L"GIO1:",GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,NULL );”来初始化IO口。再用“DeviceIoControl(gpiodriver,IO_CTL_GPIO_1_ON, NULL,0,NULL,0,NULL,NULL);”来设置IO口的值。源码如下: ============================================================
 BOOL CGPIO_TestDlg::OnInitDialog()
 {
 CDialog::OnInitDialog();
 
 // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
 //  执行此操作
 SetIcon(m_hIcon, TRUE);                        // 设置大图标
 SetIcon(m_hIcon, FALSE);                // 设置小图标
 
 // TODO: 在此添加额外的初始化代码
 
 gpiodriver=CreateFile(L"GIO1:",GENERIC_READ | GENERIC_WRITE, 0,NULL,OPEN_EXISTING,0,NULL );
 
 if(!gpiodriver)
 MessageBox(L"打开GPIO设备失败!");
 
 return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
 }
 
 void CGPIO_TestDlg::OnBnClickedLed1On()
 {
 // TODO: 在此添加控件通知处理程序代码
 CDC *pDC = new CClientDC(this);
 CBrush brush;
 DeviceIoControl(gpiodriver,IO_CTL_GPIO_1_ON, NULL,0,NULL,0,NULL,NULL);
 //下面绘制一个圆来表示灯亮和灭。
 brush.CreateSolidBrush(RGB(255,0,0));
 CBrush *pOldBrush = pDC->SelectObject(&brush);
 pDC->Ellipse(105,10,117,22);
 pDC->SelectObject(pOldBrush);
 delete pDC;
 }
 ============================================================
 问题是:在测试程序中有四个LED,DeviceIoControl函数只有gpiodrier一个句柄,怎么定位到某个特定的IO口上?
 | 
 |