Linux can';t使tslib与FT5x06一起工作

Linux can';t使tslib与FT5x06一起工作,linux,qt,embedded,arm,Linux,Qt,Embedded,Arm,我有一个基于arm的板,上面有嵌入式linux,我相信它有一个FT5x06触摸屏控制器,但似乎tslib在多点触摸电容式触摸屏控制器上有一些问题。 我使用arm-linux-gcc4.5.1交叉编译了tslib,在复制了必要的文件并在目标上为tslib设置了必要的环境变量后,当我运行ts_calibrate时,会出现一个窗口,它显示: tslib: Selected device is not a touchscreen (must support ABS_X and ABS_Y events)

我有一个基于arm的板,上面有嵌入式linux,我相信它有一个FT5x06触摸屏控制器,但似乎tslib在多点触摸电容式触摸屏控制器上有一些问题。 我使用arm-linux-gcc4.5.1交叉编译了tslib,在复制了必要的文件并在目标上为tslib设置了必要的环境变量后,当我运行ts_calibrate时,会出现一个窗口,它显示:

tslib: Selected device is not a touchscreen (must support ABS_X and ABS_Y events)
它不接受我的触摸。 现在,我想我应该让tslib作为一个单触式设备与控制器一起工作,但我不知道该怎么做,也不知道该更改哪个文件。我必须在内核中编辑驱动程序文件并重建它吗

你有什么想法吗


我想使用tslib作为Qt4程序的输入

Tslib需要设置几个文件和/或环境变量才能开箱即用。下面是一些环境变量的示例

 TSLIB_CONSOLEDEVICE=none
 TSLIB_FBDEVICE=/dev/fb0
 TSLIB_TSDEVICE=/dev/input/touch
 TSLIB_CALIBFILE=/etc/pointercal
 TSLIB_CONFFILE=/etc/ts.conf
使用tslib运行Qt不需要很多变量。但是,您需要
TSLIB_-TSDEVICE
TSLIB_-CALIBFILE
TSLIB_-CONFFILE
与Qt一起使用。二进制文件ts_calibrate将使用
TSLIB_FBDEVICE
设备显示一些文本。然后将配置写入
TSLIB\u CALIBFILE

要确定要使用的正确设备,可以检查文件/sys/class/input/input*/name。名称应该类似于FT5202触摸屏。在上面的示例中,我在启动时使用这些信息将/dev/input/inputX软链接到/dev/input/touch。当其他输入驱动程序(如USB鼠标等)插入系统时,inputX文件可能会更改。这些文件位置可能取决于用户空间中用于/dev目录填充的udev或mdev类型

ts.conf文件是要加载的模块列表。这是“焦点技术”设备的一个示例

module_raw input
module linear
Tslib由几个模块(共享库)构成,这些模块在运行时动态加载。通常,这些模块需要加载到/usr/lib/ts,并且您的内核和文件系统(libc)需要支持共享库。具体而言,线性模块将使用tsèU校准程序的输出将触摸坐标映射到屏幕坐标。这在电阻触摸技术中更有用,其中xy,包括sheering等

注意:可以避免此校准步骤,如果要大量生产,这是非常理想的

/etc/pointercal中的数字被读入数组a[0]->a[7]。公式是这样的,

x' = (a2 + a0 *x + a1 * y) / a6;
y' = (a5 + a3 *x + a4 * y) / a6;
对于电容性的情况,没有绝对的限制。此外,FocalTech设备的值似乎受到限制,因此屏幕位置(0,0)是触摸位置(0,0),所有设备都给出相同的最大值(x,y)。所以方程简化为

x' = (a1 * x) / a6;
y' = (a4 * y) / a6;
因此,pointercal文件的唯一用途是将触摸屏坐标映射到每个设备的屏幕坐标。因此,当您反向求解最大屏幕位置的方程式时,可以手动编辑pointercal文件。您可以通过ts_print_raw二进制文件获取此信息


最后,可以使用来完全避免tslib。您只需要使用固定的三个常数来转换坐标的代码。您完全避免使用tslib包。

您芯片的驱动程序仅使用ABS\u mtu位置\u X/Y事件代码。从tslib 1.3开始,这是受支持的,tslib应该可以正常工作。到目前为止,tslib-1.3-rc3应该可以安全使用。在tslib-1.3发布之前不会有太多的变化,请参见tslib。

a[7]
被用作支持它的设备的压力。Qt4.8无法在FT5x06等设备中支持多点触摸功能。此答案假设您有一个正常工作的驱动程序。触摸驱动程序只是一个i2c接口,需要对i2c上的协议进行解码,以提供linux输入系统坐标,使其看起来像一个鼠标设备。我认为Focal技术公司提供了一个司机。这是一个非常好的答案。实际上,问题在于一些变量,特别是TSLIBTSU设备。但是感谢您解释tslib的工作方式。我也喜欢Qt鼠标校准类的想法。嗨@artlessnoise,我也有同样的问题。我在我的nanopc_t2 friendlyARM上检查了所有tslib配置,但我的toch设备不工作。我发现我的设备是/dev/input/event2(我用
cat
命令测试它,它可以工作)。当我运行
\ts#u calibrate
时,它会显示这个错误
root@NanoPC-T2:~#ts_校准触摸设备:/dev/input/event1 xres=1024,yres=600 tslib:所选设备不是触摸屏(必须支持ABS#X和ABS#Y事件)
它不起作用,但touch对我设备上的默认应用程序有效。@H.Ghassami使用
export-TSLIB\u-TSDEVICE=/dev/input/event2
告诉TSLIB使用event2。相关:,环境值是多少?例如,
ls-l${tslibtsu-TSDEVICE}
。如果存在FT2x06驱动程序,则需要调试该驱动程序;虽然你应该有来源?