一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

tslib庫編譯與移植

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-11-26 09:14 ? 次閱讀

1.tslib庫簡(jiǎn)介

??tslib 是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫,是一個(gè)開源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。

2 相關(guān)工具安裝

??安裝必要工具libtool、automake、autoconf

$ sudo apt-get install libtool
$ sudo apt-get install automake
$ sudo apt-get install autoconf

3 tslib安裝步驟

系統(tǒng)環(huán)境

開發(fā)環(huán)境: Ubuntu18.04
目標(biāo)開發(fā)板: Tiny4412
交叉編譯器: arm-linux-gcc
Linux內(nèi)核: Linux3.5

??1.下載tslib庫源碼包,將源碼解壓到用戶目錄下。

tslib源碼下載地址:https://github.com/libts/tslib/releases

[wbyq@wbyq soft_work]$ tar xvf /mnt/hgfs/ubuntu/soft_pack/tslib-master.tar.gz  #解壓
[wbyq@wbyq soft_work]$cd tslib-master/tslib-master/    #進(jìn)入到源碼目錄下
[wbyq@wbyq tslib-master]$ ls
pYYBAGOBaI6AG2iBAACfFzUyPlM220.png#pic_center

??2.configure配置,生成Makefile文件。

[wbyq@wbyq tslib-master]$ ./autogen.sh
[wbyq@wbyq tslib-master]$ ./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache --prefix=$PWD/_install

- -host=arm-linux - - -指定編譯器
- -prefix=$PWD/_install - - -指定安裝目錄

??3.編譯安裝。

[wbyq@wbyq tslib-master]$ make && make install  

??編譯安裝好后會(huì)生成 _install 文件夾。

poYBAGOBaI-AZgBjAAFoTBCxuFI230.png#pic_center

??生成的文件信息:

[wbyq@wbyq tslib-master]$ cd _install/
[wbyq@wbyq _install]$ tree
.
├── bin
│   ├── ts_calibrate
│   ├── ts_harvest
│   ├── ts_print
│   ├── ts_print_raw
│   └── ts_test
├── etc
│   └── ts.conf
├── include
│   └── tslib.h
└── lib
    ├── libts-1.0.so.0 -> libts-1.0.so.0.0.0
    ├── libts-1.0.so.0.0.0
    ├── libts.la
    ├── libts.so -> libts-1.0.so.0.0.0
    ├── pkgconfig
    │   ├── tslib-1.0.pc
    │   └── tslib.pc
    └── ts
        ├── arctic2.la
        ├── arctic2.so
        ├── collie.la
        ├── collie.so
        ├── corgi.la
        ├── corgi.so
        ├── dejitter.la
        ├── dejitter.so
        ├── dmc.la
        ├── dmc.so
        ├── galax.la
        ├── galax.so
        ├── h3600.la
        ├── h3600.so
        ├── input.la
        ├── input.so
        ├── linear_h2200.la
        ├── linear_h2200.so
        ├── linear.la
        ├── linear.so
        ├── mk712.la
        ├── mk712.so
        ├── pthres.la
        ├── pthres.so
        ├── tatung.la
        ├── tatung.so
        ├── touchkit.la
        ├── touchkit.so
        ├── ucb1x00.la
        ├── ucb1x00.so
        ├── variance.la
        └── variance.so

6 directories, 45 files

?4.拷貝bin目錄下的文件到開發(fā)板/bin目錄下。

[wbyq@wbyq _install]$ cp bin/* /home/wbyq/soft_work/rootfs/bin/

?5.拷貝lib目錄下的.so文件到開發(fā)板的/lib目錄下。

[wbyq@wbyq _install]$ cp lib/*.so* /home/wbyq/soft_work/rootfs/lib/ -rfdv
[wbyq@wbyq _install]$ cp lib/ts/ /home/wbyq/soft_work/rootfs/lib/ -rfdv

??6.拷貝etc/ts.conf文件到開發(fā)板的/etc目錄下。

[wbyq@wbyq _install]$ cp etc/ts.conf /home/wbyq/soft_work/rootfs/etc/ 

? 7.修改配置文件。
??如果希望使用linux輸入層事件接口,需要取消module_raw input 注釋。

[wbyq@wbyq _install]$ vim /home/wbyq/soft_work/rootfs/etc/ts.conf
pYYBAGOBaI-ABCi9AAHWuXgb7IM175.png#pic_center

??8.配置開發(fā)板的的啟動(dòng)文件 profile。

[wbyq@wbyq _install]$ vim /home/wbyq/soft_work/rootfs/etc/profile 
poYBAGOBaJCAZ7O-AAJsvZrzwU8084.png#pic_center
export set TSLIB_TSDEVICE=/dev/input/event2 #設(shè)置觸摸屏設(shè)備節(jié)點(diǎn)
export set TSLIB_CONFFILE=/etc/ts.conf #配置文件環(huán)境變量
export set TSLIB_PLUGINDIR=/lib/ts #指定tslib插件目錄
export set TSLIB_CALIBFILE=/etc/pointercal  #指定校準(zhǔn)之后,信息保存的位置(會(huì)自動(dòng)生成)
export set TSLIB_CONSOLEDEVICE=none  #指定控制臺(tái)設(shè)備文件名字,默認(rèn)沒有。填none
export set TSLIB_FBDEVICE=/dev/fb0 #屏幕設(shè)備節(jié)點(diǎn)

注意: 設(shè)置完環(huán)境變量之后,需要重啟開發(fā)板生效,或者使用 source 命令立即生效。

4 開發(fā)板運(yùn)行效果

??安裝觸摸屏驅(qū)動(dòng),檢查觸摸屏設(shè)備節(jié)點(diǎn)是否為上面設(shè)置的event2,運(yùn)行ts_test。

[root@wbyq code]# insmod ft5x06_dev.ko 
[  759.390000] IIC子系統(tǒng):設(shè)備層注冊(cè)成功
[root@wbyq code]# insmod ft5x06_drv.ko 
[  762.175000] IIC子系統(tǒng):驅(qū)動(dòng)層注冊(cè)成功
[  762.175000] 資源匹配成功
[  762.175000] input: Unspecified device as /devices/virtual/input/input3
[root@wbyq code]# ts_test 
874.277420:    388    354      1
874.322712:    384    352      1
874.337917:    369    348      1
874.353162:    355    346      1
874.368397:    332    343      1
874.383524:    304    339      1
874.398664:    277    337      1
874.413889:    258    336      1
874.429156:    243    335      1
874.444247:    234    334      1
874.474649:    230    333      1
874.489914:    236    330      1
874.504974:    248    328      1
pYYBAGOBaJCASifKAAHqG0EDMJE024.png#pic_centerpYYBAGOBaJGAWONQAAKXZO7A0lc832.png#pic_center

??tslib中提供的測(cè)試命令,是通過ts.config文件讀取相應(yīng)的觸摸屏配置信息和LCD屏配置信息。

5 調(diào)用tslib庫獲取觸摸屏坐標(biāo)

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include "tslib.h"
int main(int argc,char *argv[])
{
	struct tsdev *ts;
	char *tsdevice=NULL;
	/*打開觸摸屏設(shè)備節(jié)點(diǎn)*/
	if( (tsdevice = getenv("TSLIB_TSDEVICE")) != NULL ) {
		ts = ts_open(tsdevice,0);
	} 
	else {
		ts = ts_open("/dev/input/event2",0);
	}
	if(ts==NULL)
	{
		perror("ts_open");
		exit(1);
	}
	if (ts_config(ts)) {
		perror("ts_config");
		exit(1);
	}
	struct ts_sample samp;
	int ret;
	printf("   時(shí)間    t X坐標(biāo)   t Y坐標(biāo)t壓力值 n");
	while (1) {
		ret = ts_read(ts, &samp, 1);
		if (ret < 0) {
			perror("ts_read");
			exit(1);
		}
		if (ret != 1)
			continue;
		printf("[%ld.%06ld] %6d %6d %6dn", samp.tv.tv_sec, samp.tv.tv_usec,
											samp.x, samp.y, samp.pressure);
	}
	return 0;	
}

程序編譯:

cflags=-I/home/wbyq/soft_work/tslib-master/tslib-master/_install/include  #指定頭文件
cflags+=-L/home/wbyq/soft_work/tslib-master/tslib-master/_install/lib  #指定庫文件路徑
cflags+=-lts  #指定庫
app:
	arm-linux-gcc app.c -o app $(cflags)

運(yùn)行效果:

[root@wbyq code]# ./app 
   時(shí)間       X坐標(biāo)   Y坐標(biāo)   壓力值 
[4591.061816]    337    369      1
[4591.124190]    337    369      0
[4592.426659]    512    399      1
[4592.502302]    507    400      1
[4592.517474]    503    401      1
[4592.532512]    500    403      1
[4592.547776]    494    405      1
[4592.562922]    489    408      1
[4592.578111]    483    410      1
[4592.593260]    479    412      1
[4592.624739]    475    415      1
[4592.655903]    472    417      0
[4592.972564]    442    402      1
[4593.063510]    445    402      1
[4593.078637]    449    402      1
[4593.093764]    452    403      1
[4593.109025]    459    404      1
[4593.124148]    465    404      1
pYYBAGOBaJKAc582AAD3OU0pxnc494.png#pic_center

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5125

    文章

    19438

    瀏覽量

    313070
  • 觸摸屏
    +關(guān)注

    關(guān)注

    42

    文章

    2336

    瀏覽量

    117726
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    392

    瀏覽量

    28509
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1652

    瀏覽量

    49729
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    674

    瀏覽量

    33599
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux系統(tǒng)中tslib的基本原理與實(shí)現(xiàn)方法

    今天主要和大家聊一聊,如何使用tslib來完成對(duì)應(yīng)的功能。
    發(fā)表于 11-14 09:57 ?3018次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-交叉編譯移植tslib

    tslib是專門為觸摸屏設(shè)備所開發(fā)的Linux應(yīng)用層函數(shù)。1、下載源碼。https://github.com/libts/tslib/releases2、拷貝源碼到開發(fā)環(huán)境/home/elf
    發(fā)表于 07-24 10:47

    【OK210試用體驗(yàn)】之qt移植tslib編譯和配置

    解決了,其他移植前首先需要tslib,該是觸摸屏校準(zhǔn)時(shí)需要的文件,如對(duì)觸摸屏的數(shù)據(jù)進(jìn)行過濾、去抖動(dòng)等,qt的
    發(fā)表于 09-28 12:46

    tslib1.4的編譯與安裝

    tslib1.4 是觸摸屏用于校準(zhǔn)的一個(gè)軟件,是一個(gè)開源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。因此這里先
    發(fā)表于 10-13 10:22

    移植tslib后,ts_calibrate測(cè)試屏幕黑屏

    移植tslib后,執(zhí)行ts_calibrate或ts_test,屏幕立馬黑屏,是什么原因呢?
    發(fā)表于 10-14 10:14

    移植TSLIB后測(cè)試TSLIB帶的程序,觸摸測(cè)試程序時(shí)界面下面的圖標(biāo)也會(huì)被點(diǎn)開

    我在OK6410上移植tslib后,配置好環(huán)境變量等,運(yùn)行 tslib/bin/下面的幾個(gè)測(cè)試程序,如ts_test ts_print,以及觸摸屏校準(zhǔn),這時(shí)會(huì)彈出個(gè)黑色界面,上面有十
    發(fā)表于 05-18 17:30

    【創(chuàng)龍AM4379 Cortex-A9試用體驗(yàn)】之移植QT5.4.1與tslib1.4到TL-4379開發(fā)板

    移植。1.交叉編譯tslib1.4當(dāng)前,對(duì)觸摸屏信號(hào)的獲取、校正、濾波處理,均采用開源的tslib,我們采用tslib1.4.首先到網(wǎng)上下
    發(fā)表于 06-26 15:56

    【Rico Board試用體驗(yàn)】之編譯觸摸屏驅(qū)動(dòng)Tslib

    PC上的不太一樣,需要先對(duì)Tslib進(jìn)行移植,其中也要保證交叉編譯器一致,這里我們選用官方提供的交叉編譯器即可。具體搭建環(huán)境參考前面帖子,下面說下具體
    發(fā)表于 12-28 09:04

    移植tslib出現(xiàn)selected device is not a touchscreen I understand的解決方法

    本帖最后由 weidongshan 于 2018-1-23 16:10 編輯 首發(fā)平臺(tái):微信公眾號(hào)baiwenkeji很多人在做觸摸屏驅(qū)動(dòng)實(shí)驗(yàn),移植tslib時(shí),可能會(huì)出現(xiàn)錯(cuò)誤提示
    發(fā)表于 01-23 15:51

    LINUX tslib1.4 移植全過程

    --enable-inputapi=no--prefix=/usr/local/arm-linux/tslib1.4注意,prefix選項(xiàng)更換為你的安裝路徑。 4.編譯 # make 5.安裝
    發(fā)表于 07-03 01:22

    迅為IMX6ULL開發(fā)板Linux下電容觸摸屏實(shí)驗(yàn)-Tslib移植和使用

    54.5 Tslib移植和使用ft5426 觸摸驅(qū)動(dòng)添加成功后,發(fā)現(xiàn)觸摸可能不太準(zhǔn)確,這時(shí)可以使用一個(gè)第三方開源 tslib 來調(diào)試觸摸屏。下面來看一下
    發(fā)表于 12-07 10:18

    如何獲取tslib源碼?

    Tslib移植和使用獲取tslib源碼編譯tslib測(cè)試tslib使用Linux內(nèi)核自帶的ft5
    發(fā)表于 12-28 07:45

    imx6ull buildroot構(gòu)建根文件系統(tǒng)移植tslib1.21無法運(yùn)行是為什么?

    本人使用IMX6ULL開發(fā)板,用buildroot構(gòu)建了一個(gè)根文件系統(tǒng),還未添加Qt,根文件系統(tǒng)可以燒寫到板子上正常運(yùn)行,在移植tslib1.21把相應(yīng)的交叉編譯后的文件拷貝到主板根目錄,設(shè)置了
    發(fā)表于 01-07 06:06

    RK1808移植tslib的過程是怎樣的?

    RK1808移植tslib的過程是怎樣的?
    發(fā)表于 02-16 06:37

    嵌入式數(shù)據(jù)Sqlite移植教程

    嵌入式數(shù)據(jù)Sqlite移植教程 sqlite-3.3.6編譯安裝與交叉編譯全過程詳細(xì)記錄
    發(fā)表于 03-11 09:57 ?3829次閱讀