微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 字符设备驱动程序之poll机制

字符设备驱动程序之poll机制

时间:11-21 来源:互联网 点击:

fd = open("/dev/buttons", O_RDWR);

if(fd < 0)

printf("cant open!\n");

fds[0].fd = fd;

fds[0].events = POLLIN;

while(1)

{

ret = poll(fds, 1, 5000); //5000是毫秒为单位,等待5S钟判断fds[0].fd文件是否有新数据可读

if(ret == 0)

{

printf("time out !\n"); //超时

}

else

{

read(fd, &key_vals, 1); //有数据可读

printf("key_vals = 0x%x\n", key_vals);

}

}

return 0;

}

==================================================================

解析:

1、key_drv_fops 结构体中增加:.poll = key_drv_poll,

key_drv_poll函数就去查询有没有按键值更新(/dev/buttons),如果按键按下则返回,否则休眠,等到休眠时间到则自动返回;

2、应用程序中循环调用poll函数,判断按键值有没有更新;如果更新则读取,否则超时提醒。


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top