/*
* 触摸屏tslib测试程序
* author:xiaohe
* Time:2012.06.26
*/
//#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <sys/fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/time.h>
#include <tslib.h>
//#include <fbutils.h>
static void sig(int sig)
{
fflush(stderr);
printf("signal %d caught\n", sig);
fflush(stdout);
exit(1);
}
int main()
{
struct tsdev *ts;//位于ts_private.h
int x, y;
unsigned int i;
unsigned int mode = 0;
int quit_pressed = 0;
char *tsdevice=NULL;
signal(SIGSEGV, sig);//设置信号处理函数
signal(SIGINT, sig);
signal(SIGTERM, sig);
if( (tsdevice = getenv("TSLIB_TSDEVICE")) != NULL ) {
ts = ts_open(tsdevice,0);//打开设备,并返回ts结构体,
} else {
if (!(ts = ts_open("/dev/input/event0", 0)))
ts = ts_open("/dev/touchscreen/ucb1x00", 0);
}
if (!ts) {
perror("ts_open");
exit(1);
}
if (ts_config(ts)) {//打开配置文件并装载模块插件
perror("ts_config");
exit(1);
}
while (1) {
struct ts_sample samp;
int ret;
ret = ts_read(ts, &samp, 1);//读取触摸屏,依次按下最后以此读取pressure为0,其他时候为255
if (ret < 0) {
perror("ts_read");
exit(1);
}
if (ret != 1)
continue;
printf("%ld.%06ld: %6d %6d %6d\n", samp.tv.tv_sec, samp.tv.tv_usec,
samp.x, samp.y, samp.pressure);
}
return 0;
}