分类: 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; /*正常返回*/
}