当前位置:网站首页>tslib库的移植
tslib库的移植
2022-07-03 07:52:00 【不会学习的小菜鸡】
目录
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;
}
边栏推荐
- 什么是数据类型?数据类型有什么用?
- [at] ABC 258g - triple Reach - violence
- Huawei switches are configured with SSH login remote management switches
- PAT甲级 1030 Travel Plan
- When did you find out that youth was over
- How to configure GDAL under idea
- Redis batch startup and shutdown script
- PIP uses image website to solve the problem of slow network speed
- Pat grade a 1027 colors in Mars
- Huawei s5700 switch initialization and configuration SSH and telnet remote login methods
猜你喜欢

【LeetCode】3. Merge two sorted lists · merge two ordered linked lists

Technical dry goods | thinking about the unification of dynamic and static diagrams of AI framework

haproxy+keepalived集群搭建02

一篇文章让你读懂-曼彻斯特编码

密西根大学张阳教授受聘中国上海交通大学客座教授(图)

【LeetCode】4. Best Time to Buy and Sell Stock·股票买卖最佳时机

haproxy+keepalived搭建01

What is a data type? What is the use of data types?

Pat class a 1028 list sorting

What to do after the browser enters the URL
随机推荐
WorldView卫星遥感影像数据/米级分辨率遥感影像
What is a data type? What is the use of data types?
Go language foundation ----- 09 ----- exception handling (error, panic, recover)
【踩坑系列】mysql 修改root密码失败
Huawei switch console password reset, device initialization, default password
一篇文章让你读懂-曼彻斯特编码
The difference between hdmi2.1 and hdmi2.0 and the conversion of PD signals.
EtherCAT state machine transition (ESM)
Technical dry goods | thinking about the unification of dynamic and static diagrams of AI framework
vcs import src < ros2. Repos failed
Pat grade a 1027 colors in Mars
Client server model
Technical dry goods | hundred lines of code to write Bert, Shengsi mindspire ability reward
Go language foundation ----- 18 ----- collaboration security, mutex lock, read-write lock, anonymous lock, sync Once
创业团队如何落地敏捷测试,提升质量效能?丨声网开发者创业讲堂 Vol.03
PIP uses image website to solve the problem of slow network speed
哪一刻你才发现青春结束了
C2 several methods of merging VCF files
输入三次猜一个数字
What to do after the browser enters the URL