开发环境:
主机:Ubuntu12.04
开发板:RT5350
Openwrt:Openwrt15.05
1 编写应用程序
在前面的章节中, 我们成功的写出了我们自己的驱动程序, 并且向应用程序提供了 open、ioctl 两个接口,那么接下来我们就来编写应用程序,调用这些接口。
#include < stdio.h >
#include < curses.h >
#include < sys/types.h >
#include < sys/stat.h >
#include < fcntl.h >
#include < unistd.h >
#include < sys/ioctl.h >
#include < string.h >
#define MYLEDS_LED1_ON 0
#define MYLEDS_LED1_OFF 1
#define MYLEDS_LED2_ON 2
#define MYLEDS_LED2_OFF 3
/*
** ledtest < dev > < on|off >
**/
void print_usage(char *file)
{
printf("Usage:\\n");
printf("%s < dev > < on|off >\\n",file);
printf("eg. \\n");
printf("%s led1 on\\n", file);
printf("%s led1 off\\n", file);
printf("%s led2 on\\n", file);
printf("%s led2 off\\n", file);
}
int main(int argc, char **argv)
{
int fd;
if (argc != 3)
{
print_usage(argv[0]);
return 0;
}
/* 1.打开设备节点 */
fd = open("/dev/myleds", O_RDWR | O_NONBLOCK);
if (fd < 0)
{
printf("can't open!\\n");
return -1;
}
/* 2.根据参数不同,控制 LEDs */
if(!strcmp("led1", argv[1]))
{
if (!strcmp("on", argv[2]))
{
// 亮灯
ioctl(fd, MYLEDS_LED1_ON);
}
else if (!strcmp("off", argv[2]))
{
// 灭灯
ioctl(fd, MYLEDS_LED1_OFF);
}
else
{
print_usage(argv[0]);
return 0;
}
}
else if(!strcmp("led2", argv[1]))
{
if (!strcmp("on", argv[2]))
{
// 亮灯
ioctl(fd, MYLEDS_LED2_ON);
}
else if (!strcmp("off", argv[2]))
{
// 灭灯
ioctl(fd, MYLEDS_LED2_OFF);
}
else
{
print_usage(argv[0]);
return 0;
}
}
else
{
print_usage(argv[0]);
return