linux的触摸屏之五:帧缓冲设备上较准界面的配置
(1)帧缓冲设备跟TTY的关系。需要关注tty跟帧缓冲设备的关系,一般情况下帧缓冲设备是可以独立操作的,但是如果为了保证单独占用不被抢占,似乎还要关联一个tty终端。这里用的是虚终端VT。
虚终端,也叫虚屏,它的英文名字为virtual terminal,缩写为VT或vt。在Unix系统用户中,虚终端有着广泛的应用。它解决了主控台单一交互界面的限制,使用户可在保护当前界面的情况下启用另一界面去做另一工作。我们可利用Unix系统提供的系统调用来编制虚终端程序,并可把它加入到我们的应用程序中去。
我们可利用ioctl函数操纵虚终端设备文件,实现与Unix系统内核的交互,得到我们所需要的服务。使用ioctl的具体形式如下:
int ioct1(int filedes,int request,…/*参数*/。request为请求的服务,随后的参数可为各种数据类型,视具体情况而定。
VT_OPENQRY 查找一个可利用的虚终端。
VT_SETMODE 设置虚终端模式(自动或进程控制)。
VT_GETSTATE 获取全部虚终端的状态信息。
VT_ACTIVATE 使在参数中指定的虚终端号为活动虚终端。如果指定的虚终端不处于打开状态或者不存在,调用将失败。
VT_WAITACTIVE 等待虚终端被激活,不需要参数。
有了上面的介绍,现在我们就可以实现虚终端了:
1,查找是否有可利用的虚终端,如没有,则结束。
2,打开可利用虚终端设备文件,以便进行。
3,利用ioctl的TCSETSW功能设置虚终端参数。
4,利用ioctl的VT_ACTIVATE功能激活虚终端,并利用VT_WAITACTIVE功能等待其可用。
5,用putenv函数设置环境变量。
至此,一个虚终端程序就实现了。
(2)open_framebuffer
static int con_fd, fb_fd, last_vt = -1;
static struct fb_fix_screeninfo fix;
static struct fb_var_screeninfo var;
static unsigned char *fbuffer;
static unsigned char **line_addr;
static int fb_fd=0;
static int bytes_per_pixel;
static unsigned colormap [256];
__u32 xres, yres;
#define TSLIB_FBDEVICE "/dev/graphics/fb0"
static char *defaultfbdevice = "/dev/graphics/fb0";
static char *defaultconsoledevice = "/dev/tty";
static char *fbdevice = NULL;
static char *consoledevice = NULL;
int open_framebuffer(void)
{
&nb
相关文档:
Apache 是世界排名第一的Web 服务器, 根据Netcraf所作的调查,世界上百分之五十以上的 Web 服务器在使用 Apache。 尤其是现在,使用 LAMP(Linux + Apache + MySQL + PHP)来搭建中等级别的应用已经是一种流行的方式,因此,掌握 Apache 的配置是系统工程师必备的技能之一。 使用 LAMP(Linux + Apache + MySQL + PHP)来搭� ......
在linux下使用共享内存时,照着书上或者网上的方法,使用shmat函数时,老是会碰到一个问题
提示:
shmat error
permission denied
每次需要sudo一下才能够正常运行,并且如果普通用户使用ipcs查看的话,是看不见已经分配的共享内存的,需要在root用户下才能看见, 最开始以为是shmat需要root用户的权限,后来发现不是这� ......
最近需要在Linux系统下编译多个Fortran程序,在网上搜索了一下,但是资料不多,也许因为这个问题比较简单,不值一提,但还是把我知道的
写出来,供大家参考:
方法一:
假如现在有两个Fortran程序fun.f90和main.f90,其中
main.f90是主程序,fun.f90是在主程序中调用的子程序,将这两个文件放到一个目录下,使 ......