Linux- 控制 LED 灯设备(LED 子系统)
2022-01-17 本文已影响0人
飞向深空
C库方式
/sys 目录用于把内核的设备驱动导出到用户空间,可通过访问 sys 目录及其下
的文件,来查看甚至控制内核的一些驱动设备。
硬件设备也是文件,通过打开对应的设备文件可以初始化设备,部分设备还可以通过读写设备文件实现对硬件的控制。
下面对电脑的大写锁定LED灯进行闪烁操作
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define capslock_led "/sys/class/leds/input2::capslock/brightness"
int main(int argc,char *argv[])
{
FILE *caps;
caps = fopen(capslock_led,"w");
if(caps<0)
{
printf("Fail to Open %s device\n",capslock_led);
exit(1);
}
while(1)
{
fwrite("255",3,1,caps);
fflush(caps);
sleep(1);
fwrite("0",1,1,caps);
fflush(caps);
sleep(1);
}
return 0;
}
系统调用方式
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#define capslock_led "/sys/class/leds/input2::capslock/brightness"
int main(int argc,char *argv[])
{
FILE *caps;
caps = open(capslock_led , O_WRONLY);
if(caps<0)
{
printf("Fail to Open %s device\n",capslock_led);
exit(1);
}
while(1)
{
write(caps,"255", 3);
sleep(1);
write(caps,"0", 1);
sleep(1);
}
return 0;
}