天嵌 ARM开发社区

 找回密码
 注册
查看: 1763|回复: 3

提问,关于应用程序中的io控制

[复制链接]
paul85 发表于 2009-11-2 11:39:17 | 显示全部楼层 |阅读模式
在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口上?
 楼主| paul85 发表于 2009-11-2 11:43:51 | 显示全部楼层
DeviceIoControl的函数原型为BOOL DeviceIoControl( HANDLE hDevice, // 设备句柄
DWORD dwIoControlCode, // 控制码
LPVOID lpInBuffer, // 输入数据缓冲区指针
DWORD nInBufferSize, // 输入数据缓冲区长度
LPVOID lpOutBuffer, // 输出数据缓冲区指针
DWORD nOutBufferSize, // 输出数据缓冲区长度
LPDWORD lpBytesReturned, // 输出数据实际长度单元长度
LPOVERLAPPED lpOverlapped // 重叠操作结构指针);
----------------------------------------------
其中“DWORD dwIoControlCode, // 控制码 ”控制码该如何使用?



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sanshao27/articles/1484970.aspx
 楼主| paul85 发表于 2009-11-2 11:45:15 | 显示全部楼层
请求大家帮忙分析!
亚瑟王 发表于 2009-11-12 18:41:14 | 显示全部楼层
控制字在驱动中定义的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-7 00:13 , Processed in 1.026406 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表