主题 : 关于用button控制led问题,代码中有2处不明白,请明白的指导指导我 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 5629
精华: 0
发帖: 74
金钱: 755 两
威望: 496 点
综合积分: 148 分
注册时间: 2009-05-01
最后登录: 2012-03-16
楼主  发表于: 2009-09-28 17:11

 关于用button控制led问题,代码中有2处不明白,请明白的指导指导我

添附里是友善的button,led的驱动源码和thmono老兄的测试代码。
这是button控制led测试代码中的一部分,想问一下,这里的read跟驱动是怎么联系在一起的,
if (ret == 0)
{
    printf("Timeout.\n");
        
}
        else if (FD_ISSET(buttons_fd, &rds))
{
            int ret = read(buttons_fd, key_value, sizeof key_value)
            if (ret != sizeof key_value)
{
            if (errno != EAGAIN)
            perror("read buttons\n");
            continue;


下面是button驱动的一部分,代码中min(sizeof(key_values)是什么意思啊?找了一天也没整明白。
static int s3c24xx_BUTTONS_read(struct file *filp, char __user *buff,
             size_t count, loff_t *offp)

{
    unsigned long err; 
    if (!ev_press) {   
    if (filp->f_flags & O_NONBLOCK)
        return -EAGAIN;
    else
        wait_event_interruptible(button_waitq, ev_press);
    }
    ev_press = 0;
    err = copy_to_user(buff, (const void *)key_values, min(sizeof(key_values), count));
    return err ? -EFAULT : min(sizeof(key_values), count);
}

有明白的请指导一下,谢谢
附件: buttons_test.c.tar (10 K) 下载次数:26
级别: 新手上路
UID: 9637
精华: 0
发帖: 25
金钱: 190 两
威望: 77 点
综合积分: 50 分
注册时间: 2009-10-08
最后登录: 2012-10-10
1楼  发表于: 2009-10-15 15:49
你只看到了一部分代码,read前先要打开驱动,button-fd=open("/dev/buttons",0);
然后调用read来读取按键。
控制LED,同样也是要先打开驱动,然后控制。