s3c2440 LCD之按键控制截屏与保存

xiaoxiao2021-02-27  295

明月楼高休独倚,酒入愁肠,化作相思泪。——范仲淹《苏幕遮》

最近被这个第三方源软件的安装和Makefile搞得不要不要的,不过还好,正当我头疼的时候,得到了高人指导,下面来谈谈吧。

我们板子LCD的功能实在太多了,不过光是显示一些颜色,画一些图形之类的,没有什么实际应用,只是图个好玩,于是我就学习了一下这个LCD的截图软件,用来截屏,并清晰显示在我们的windows下。下面就来说说我们的流程。

专用的framebuffer截图软件fbgrab需要两个必须库的依赖:

libpng库:http://linux.softpedia.com/get/Programming/Libraries/libpng-167.shtml

zlib库:http://www.zlib.net/

这两个库的安装流程都是和第三方的一样,有Makefile直接make,然后make install。没有的话先 .configure。

然后就是我们的抓图软件fbgrab:

fbgrab:https://fbgrab.monells.se/

下载完成后按照步骤安装并用我们的交叉编译器编译我们的fbgrab,当然,我们得在Makefile中添加我们交叉编译器的路径:gcc=xxxxxxxxx。

这些都做完了以后我们得添加framebuffer对我们fbgrab的支持:

$vim /opt/buildroot-2012.08/boot/grub/menu.lst

在kernel这一行最后添加 vga=0x0317 。然后重新编译我们的内核,烧录开发板中,再将我们的fbgrab传入开发板并给可执行权限。最后运行

./fbgrab xxx.png 即可生成一张.png格式的图片,即当前你的LCD的画面,而framebuffer自带的命令cp xxx > /dev/fb0只能截图,却不能将其转化为我们计算机能识别的图片格式,所以,我们不得不使用fbgrab这个简单实用的软件。

既然实现了截图,那我们可以结合我们的按键驱动,做一个按键截屏并发送到windows下的功能,下面给出代码:

#include <stdio.h> #include <stdlib.h> #include <sys/ioctl.h> #include <fcntl.h> #include <unistd.h> #include <linux/fb.h> #include <sys/mman.h> #define KEY1 0x01 #define KEY2 0x02 #define KEY3 0x04 #define KEY4 0x08 #define PLATDRV_MAGIC 0x60 #define OFF _IO (PLATDRV_MAGIC,0x18) #define ON _IO (PLATDRV_MAGIC,0X19) int main (int argc, char **argv) { int button_fd; int ret_button; int current_button; button_fd = open("/dev/button", 0); if (button_fd < 0) { printf("open button failed.\n"); exit(1); } while (1) { ret_button = read(button_fd, ¤t_button, sizeof(4)); if (ret_button != sizeof(current_button)) { printf("Read() button failed.\n"); } else { if (current_button == KEY1) { system("./fbgrab 123.png"); } else if (current_button == KEY2) { system("tftp -pr 123.png 192.168.1.8"); } } close(button_fd); return 0; } 按键驱动前面已经谈到过,这里的system函数简单明了,直接执行命令,当然,如果你的/bin目录下添加了fbgrab这个命令,前面的“./”就没必要加了。上一篇提到过execl函数,这个函数的使用必须配合fork,所以代码会很繁杂,而system函数会自己创建一个进程,将他封装起来去做其他的事情,因此这里用到的是system,代码很简单,安装好按键驱动,然后执行测试程序,按下按键1,截屏,按键2,发送到我们的Windows下,这里的地址还是我们的服务器ip。 这里切记,最好在/bin下添加我们的命令,不然后果很严重。 如果有再需要改进的地方,望大家给出建议。

转载请注明原文地址: https://www.6miu.com/read-3428.html

最新回复(0)