第06课第2节_APP_编写支持开关机(suspend)的应用程序

编写支持开关机(suspend)的应用程序

思路:

读按键, 得到某个值就执行 echo mem > /sys/power/state  系统就会进入休眠状态,唤醒只需要按某个按键就可以,不需要我们应用程序的支持。

 

         文件8th_buttons_input继承自第3课第2节。这个驱动程序让我们的JZ2440具备唤醒功能。

 

 

 

编译调试:

虚拟机上执行  arm-linux-gcc –o power power.c 编译应用程序

./power /dev/event1  &     //&表示在后台执行

实验效果:按下按键送开时进入休眠,再按一下就被唤醒。视频说是要配合那个继承自第3课第2节的驱动程序一起只用,但是视频中并没有看到加载驱动。

不明白系统是怎么被唤醒的?

 

Power.c代码详解:

 

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

#include <sys/time.h>     //在这个头文件里面含有struct timeval的定义

#include <stdlib.h>

#include <stdio.h>

 

#define EV_KEY                           0x01

#define KEY_L                    38

 

struct input_event {

         struct timeval time;  

         unsigned short type;

         unsigned short code;

         int  value;

};

 

 

/* power <dev> */   //该应用程序使用办法

int main(int argc, char **argv)

{

         int fd;

         int ret;

         struct input_event event;

        

         if (argc != 2)

         {

                   printf("Usage:\n");

                   printf("%s <dev>\n", argv[0]);

                   return -1;

         }

        

         /* open */

         fd = open(argv[1], O_RDONLY);   //在虚拟机上执行man 2 open命令可查看使用open函数需要包含的头文件。

         if (fd < 0)

         {

                   printf("can't open %s\n", argv[1]);

                   return -1;

         }

 

         while (1)

         {

                   /* read */

                   ret = read(fd, &event, sizeof(event));

                   if (ret != sizeof(event))

                   {

                            printf("can't read: ret = %d\n", ret);

                            return -1;

                   }

 

                   /* 按键类, L键, 松开 */     

                   if (event.type == EV_KEY && event.code == KEY_L && event.value == 0)  //0表示松开按键的时候才休眠

                   {

                            /* echo mem > /sys/power/state */

                            system("echo mem > /sys/power/state");

                   }

         }

         return 0;

}

猜你喜欢

转载自blog.csdn.net/hahaha_2017/article/details/81237048