打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
mini2440_buttons驱动详解(下)

 下面是测试代码:

//按键测试程序//

#include <stdio.h>//标准输入输出头文件//

#include <stdlib.h>//标准库//

#include <unistd.h>//一些宏的定义在这里//

#include<sys/ioctl.h>//设备的控制//

#include<sys/types.h>//定义了一些类型//

#include<sys/stat.h>//状态//

#include <fcntl.h>//文件控制//

#include<sys/select.h>//选择?//

#include<sys/time.h>//时间方面的函数//

#include <errno.h>//有关错误方面的宏//

//主函数入口//

int main(void)
{
int i; //键盘输出时用到的循环变量//

int buttons_fd;//buttons设备号//

int key_value[4]; //四个按键的取值//

//打开键盘设备文件//

buttons_fd = open("/dev/buttons",0);//0方式打开//

//打开出错处理//

if(buttons_fd < 0)//打开出错就会返回一个负值//
{
perror("open device buttons");//perror函数?//

   exit(1);//返回1//
}

//for无限循环,等待用户输入//
//这是很典型的程序执行方式//

for(;;)
{
fd_set rds; //fd_settypes.h中定义的类型,实质上是int//
//rds用来存储设备号//

   int ret;//for循环内定义的局部变量ret//

  FD_ZERO(&rds); //rds初始化//
//FD_ZERO是哪里定义的呢?//

  FD_SET(buttons_fd,&rds);//buttons设备号赋给rds//
//FD_SET是哪里定义的呢?//

  //使用系统调用select检查是否能够从/dev/buttons设备读取数据//
//select函数是干什么的呢?//

   ret =select(buttons_fd +1,&rds,NULL,NULL,NULL);
//返回值ret//
//返回值的具体意义是什么呢?//

  //ret的处理//

   if(ret< 0) //ret小于0//
{
perror("select");
exit(1);
   

   if(ret == 0)//ret等于0//
{
printf("Timeout.\n");
}
else //能够读到数据//
if(FD_ISSET(buttons_fd,&rds))//??//
{
//读取键盘驱动发出的数据//
//key_value和键盘驱动中定义一致//

    int ret = read(buttons_fd,key_value,sizeof(key_value));//注意此处的ret和前面的ret有何不同//
//注意键盘设备读取的特点//

    //ret的处理//
if(ret != sizeof(key_value))//没有接收够//
{
if(errno !=EAGAIN)  //???//
perror("read buttons\n");
continue;
}
else //正确接收,则打印到标准终端//
{
for(i = 0;i < 4;i++)//最开始定义的循环变量i//
printf("K%d %s, key value = 0xx\n",i,(key_value[i]& 0x80) ? "released" : key_value[i] ? "presseddown" : "",key_value[i]);
//这一连串的输出,要注意格式//
}
}
}

//关闭设备//

close(buttons_fd);

return 0; //主函数返回//

END!!

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
mini2440按键驱动
问题集锦(16
进程间通信
Linux系统编程之进程间通信方式:命名管道(二)
网络socket编程指南
linux 下文件I/O编程 (open、read、write、lseek、close)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服