led控制

一、函数解析

1、sscanf() - 从一个字符串中读进与指定格式相符的数据.
  函数原型:
  int sscanf( string str, string fmt, mixed var1, mixed var2 ... );

        str   输入的字符

        fmt   输出的格式

        var    保存输出数据的变量

2、open函数

     头文件

      #include<sys/types.h>  /*提供类型pid_t,size_t的定义*/

     #include<sys/stat.h>

     #include<fcntl.h>

     函数原型

      int open(const char *path, int oflags,mode_t mode);

     函数说明

     open建立了一条到文件或设备的访问路径。

      open函数一般用于打开或者创建文件,在打开或创建文件时可以制定文件的属性及用户的权限等各种参数。

    

      第一个参数path表示:路径名或者文件名。路径名为绝对路径名(如C:/cpp/a.cpp),文件则是在当前工作目录下的。

      第二个参数oflags表示:打开文件所采取的动作。

      可能值:必须指定下面某一种:

      O_RDONLY(只读),

      O_WRONLY(只写),

      O_RDWR(可读可写)

      打开/创建文件时,至少得使用上述三个常量中的一个,以下常量是选用的:

      O_APPEND      每次写操作都写入文件的末尾

    O_CREAT        如果指定文件不存在,则创建这个文件

    O_EXCL         如果要创建的文件已存在,则返回 -1,并且修改errno的值

    O_TRUNC        如果文件存在,并且以只写/读写方式打开,则清空文件全部内容

    O_NOCTTY       如果路径名指向终端设备,不要把这个设备用作控制终端。

     O_NONBLOCK     如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O

                       设置为非阻塞模式(nonblocking mode)

       第三个参数mode表示:设置文件访问权限的初始值。(与用户掩码umask变量有关,实际的访问权限有mode &~umask确        定)

       S_IRUSR,S_IWUSER,S_IXUSR,S_IRGRP,S_IWGRP,S_IXGRP,S_IROTH,S_IWOTH,S_IXOTH.其中R:读,W:写,X:执行,USR:文件所属的用户,GRP:文件所属的组,OTH:其他用户。

二、应用程序

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char **argv)
{
	int on;
	int led_no;
	int fd;

	if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on) != 1 ||
			on < 0 || on > 1 || led_no < 0 || led_no > 3) {
		fprintf(stderr, "Usage: leds led_no 0|1\n");
		exit(1);
	}

		fd = open("/dev/leds", 0);
      if(fd<0)
     {
     printf("error\n");
     }

	ioctl(fd, on, led_no);
	close(fd);

	return 0;
}

猜你喜欢

转载自blog.csdn.net/danwuxie/article/details/82759744
led
今日推荐