tslib库的移植

本文涉及的产品
文本翻译,文本翻译 100万字符
图片翻译,图片翻译 100张
语种识别,语种识别 100万字符
简介: tslib库的移植

tslib库的移植

1. 下载

下载地址:github仓库

2. 将下载好的压缩包移动到linux虚拟机上,并解压,进入该目录

tar -xJf tslib-1.21.tar.xz
cd tslib-1.21

3. 执行configure来配置Makefile文件

注意: prefix不能随便指明路径,因为以后运行程序的时候,程序会根据该路径去寻找库文件。如果打算将编译好的lib下所有的库文件放在开发板的/lib下,

那么就应该将prefix设置为/;如果打算将编译好的lib下的所有库文件放在开发板的/usr/lib下,那么就应该将prefix设置为/usr

./configure --host=arm-linux-gnueabihf prefix=/

4. 执行make编译库

make DESTDIR=/home/hxd/tools/tslib   # DESTDIR用于指定你的安装位置
make install

5. 将编译好的文件配置到编译工具链

该步骤可做可不做,做了以后编译程序的时候可以不用手动指定需要该库的库文件路径和头文件路径

关于将编译好的库放在那个位置,可以查看这篇文章的1.5小节: https://blog.csdn.net/weixin_47024013/article/details/125527484

cp /home/hxd/tools/tslib/include/* -rfd /usr/lib/gcc-cross/arm-linux-gnueabihf/9/include/   # 第一个路径与你指定的库的安装路径有关
cp /home/hxd/tools/tslib/lib/* -rfd /usr/lib/gcc-cross/arm-linux/gnueabihf/9/
cp /home/hxd/tools/tslib/etc/* -rfd /etc/

6. 将编译好的库配置到开发板上

我们只需要将lib文件夹的所有文件放在开发板的/lib文件夹下(/lib还是/usr/lib取决于你的第三步)

先将tslib文件夹复制nfs的目录下,然后开发板挂载该nfs,也可以通过其他方式将文件拷贝到服务器上
cp -rfd /mnt/tslib/lib/* /lib

7. 实例

7.1 单点触摸

#include<stdio.h>
#include<stdlib.h>
#include<tslib.h>
int main()
{
  struct tsdev *ts = NULL;  // 设备句柄
  struct ts_sample samp;
  int pressure = 0;
  ts = ts_setup(NULL, 0);
  if (ts == NULL) {
    fprintf(stderr, "ts_setup error\n");
    exit(-1);
  }
  for(;;) {
    if (0 > ts_read(ts, &samp, 1)) {
      fprintf(stderr, "ts_read error\n");
      exit(-1);
    }
    if (samp.pressure > 0) {
      if (pressure > 0) {
        printf("移动(%d, %d)\n", samp.x, samp.y);
      } else {
        printf("按下(%d, %d)\n", samp.x, samp.y);
      }
      pressure = samp.pressure;
    } else if (samp.pressure == 0 && pressure > 0) {
      printf("松开(%d, %d)\n", samp.x, samp.y);
      pressure = samp.pressure;
    }
  }
}

7.2 多点触摸

#include<stdio.h>
#include<stdlib.h>
#include<sys/ioctl.h>
#include<linux/input.h>
#include<tslib.h>
#include<string.h>
int main()
{
  struct tsdev *ts = NULL;
  struct ts_sample_mt *mt_ptr = NULL;
  struct ts_sample_mt *mt_old = NULL;
  struct input_absinfo slot;
  int max_slots;
  int i = 0;
  // 初始化
  ts = ts_setup(NULL, 0);
  if (ts < 0) {
    printf("setup error\n");
    return -1;
  }
  // 获取该触摸屏支持的触摸点数
  if (0 > ioctl(ts_fd(ts), EVIOCGABS(ABS_MT_SLOT), &slot)) {
    printf("ioctl error\n");
    return -1;
  }
  max_slots = slot.maximum - slot.minimum + 1;
  printf("max_slots: %d\n", max_slots);
  // 开辟空间
  mt_ptr = (struct ts_sample_mt *)malloc(sizeof(struct ts_sample_mt)*max_slots);
  mt_old = (struct ts_sample_mt *)malloc(sizeof(struct ts_sample_mt)*max_slots);
  if (mt_ptr == NULL || mt_old == NULL) {
    printf("malloc error\n");
    return -1;
  }
  memset(mt_ptr, 0, sizeof(struct ts_sample_mt)*max_slots);
  memset(mt_old, 0, sizeof(struct ts_sample_mt)*max_slots);
  for(;;) {
    if (ts_read_mt(ts, &mt_ptr, max_slots, 1) < 0) {
      printf("ts_read_mt error\n");
      exit(-1);
    }
    //printf("-------debug---------\n");
    for (i=0;i<max_slots;i++) {
      if (mt_ptr[i].valid) {
        printf("i: %d\n", i);
        if (mt_ptr[i].pressure > 0) {
          if (mt_old[i].pressure > 0) {
            printf("slot<%d>, 移动(%d, %d)\n", mt_ptr[i].slot, mt_ptr[i].x, mt_ptr[i].y);
          } else {
            printf("slot<%d>, 按下(%d, %d)\n", mt_ptr[i].slot, mt_ptr[i].x, mt_ptr[i].y);
          }
          memcpy(&mt_old[i], &mt_ptr[i], sizeof(struct ts_sample_mt));
        } else {
          printf("slot<%d>, 松开(%d, %d)\n", mt_ptr[i].slot, mt_ptr[i].x, mt_ptr[i].y);
          memcpy(&mt_old[i], &mt_ptr[i], sizeof(struct ts_sample_mt));
        }
      }
    }
  }
  free(mt_ptr);
  free(mt_old);
  return 0;
}


目录
相关文章
|
2月前
|
存储 编解码 Ubuntu
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
【QT】linux下alsa库的移植和QT中音视频的处理&笔记
|
3月前
|
编译器
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
114 0
|
3月前
交叉编译libvisca库ARM版本
交叉编译libvisca库ARM版本
74 0
|
11月前
|
Ubuntu Java 编译器
iMX6 yocto平台QT交叉编译环境搭建
iMX6 yocto平台QT交叉编译环境搭建
215 0
iMX6 yocto平台QT交叉编译环境搭建
|
XML 数据管理 编译器
Qt+GDAL开发笔记(二):在windows系统msvc207x64编译GDAL库、搭建开发环境和基础Demo
上一篇使用mingw32版本的gdal,过程曲折,为更好的更方便搭建环境,在windows上msvc方式对于库比较友好。
|
XML 数据管理 Linux
Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo
麒麟系统上做全球北斗定位终端开发,调试工具要做一个windows版本方便校对,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标,所以需要转换,可以使用公式转换,但是之前涉及到了另一个shang市公司项目使用WG,最终选择了GDAL库进行转换。
|
Linux
freetype库的移植
freetype库的移植
301 0
|
Linux Windows C语言
移植ffmpeg到VC环境心得
所有想学习ffmpeg的网友有福了,大名鼎鼎的ffmpeg,移植到Windows的VC6版本全部开源,编译环境为VC6+SP5+VCPP5。别忘记了顶贴哦。 移植ffmpeg到windows,主要的修改是ffmpeg中VC6不支持C99语法,简单移植步骤如下: 1:首先装好Linux、VMware和SDL,配置好smb,在Linux下编译通过,验证能正确的Run。
780 0