Chinaunix首页 | 论坛 | 博客
  • 博客访问: 434045
  • 博文数量: 53
  • 博客积分: 2746
  • 博客等级: 少校
  • 技术积分: 829
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-14 10:41
文章分类

全部博文(53)

文章存档

2016年(2)

2013年(1)

2012年(7)

2011年(10)

2010年(5)

2009年(20)

2008年(8)

我的朋友

分类: LINUX

2009-06-22 16:17:26

#include                               /*下面函数要用到的头文件*/
#include
#include
#include

int main(int argc, char **argv)                 /*运行时参数传递,传开或关哪个LED*/
{                                              
 int on;                                        /*定义led状态变量*/
 int led_no;                                    /*定义led变量--哪个led*/
 int fd;                                        /*定义led设备文件描述符的变量*/
 if (                         argc != 3 || \    /*判断命令输入参数个数*/
    sscanf(argv[1], "%d", &led_no) != 1 || \    /*用sscaf()把第1个字符串参数转成整型附给led_no,表示要操作哪个LED*/
         sscanf(argv[2],"%d", &on) != 1 || \    /*第2个字符串参数作为LED状态*/
                       on < 0 || on > 1 || \    /*开和关,两个状态*/
                led_no < 0 || led_no > 3 ) \    /*4个LED*/
 {
  fprintf(stderr, "Usage: leds led_no 0|1\n");  /*如果条件不满足输出出错信息*/
  exit(1);                                      /*退出程序*/
 }
  fd = open("/dev/leds0", 0);                   /*为只读打开leds0文件,取出文件描述符*/
  if (fd < 0) {                                
   fd = open("/dev/leds", 0);                   /*如果打开leds0出错,再以只读方式打开leds文件*/
 }
  if (fd < 0) {
   perror("open device leds");                  /*如果打开led文件出错,拿不到文件描述符,用perror宏输出错原因及信息*/
  exit(1);                                      /*出错退出*/
 }
  ioctl(fd, on, led_no);                        /*用ioctl()函数控制LED,其中fd--是前面打开的LED文件描述符,on--是开关命令0和1,led_no--是哪个LED*/
  close(fd);                                    /*关闭LED描述符,与前面open()对应*/
  return 0;                                     /*正常返回*/
}

阅读(1344) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~