帮忙注释一下程序,看不懂,最好详细点
谁能帮忙注释一下,谢谢
#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 buttons_fd;
char buttons[6]={'0','0','0','0','0','0'};
buttons_fd=open("/dev/buttons",0);
if(buttons_fd<0){
perror("open device buttons");
exit(1);
}
for(;;){
char current_buttons[6];
int count_of_changed_key;
int i;
if(read(buttons_fd,current_buttons,sizeof current_buttons)!=sizeof current_buttons)
{
perror("read buttons:");
exit(1);
}
for(i=0,count_of_changed_key=0;i<sizeof buttons/sizeof buttons[0];i++){
if(buttons[i]!=current_buttons[i]){
buttons[i]=current_buttons[i];
printf("%skey %d is %s",count_of_changed_key?",":"",i+1,buttons[i]=='0'?"up":"down");
count_of_changed_key++;
}
}
if(count_of_changed_key){
printf("\n");
}
}
close(buttons_fd);
return 0;
}
[解决办法]
整体来看是一个监测button设备的程序
#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 buttons_fd = 0;
char buttons[6]={0};
buttons_fd=open("/dev/buttons",O_RDONLY);//O_RDONLY:0 只读模式打开文件
if(buttons_fd < 0)//文件不存在,或打开失败
{
perror("open device buttons");
exit(1);
}
for (;;)
{
char current_buttons[6];
int count_of_changed_key;
int i;
if(read(buttons_fd, current_buttons, sizeof current_buttons) != sizeof current_buttons)//文件读取完成或失败
{
perror("read buttons:");
exit(1);
}
for (i=0, count_of_changed_key = 0; i < sizeof buttons / sizeof buttons[0]; i++)
{
if (buttons[i] != current_buttons[i])//从设备读取的button状态与默认button状态比较
{
buttons[i]=current_buttons[i];//默认button状态更新
printf("%skey %d is %s",count_of_changed_key?",":"",i+1,buttons[i]=='0'?"up":"down");//打印Button是Up还是Down操作
count_of_changed_key++;
}
}
if (count_of_changed_key)
{
printf("\n");
}
}
close(buttons_fd);
return 0;
}