gpt4 book ai didi

c++ - 如何使基于 tslib 的校准保持永久?

转载 作者:太空宇宙 更新时间:2023-11-04 13:47:36 26 4
gpt4 key购买 nike

我在嵌入式解决方案中进行永久 校准时遇到问题。我正在为带触摸屏的嵌入式 Linux 环境开发基于 Qt 的应用程序。对于最后一部分,我使用 tslib(由以前的开发人员配置)。

在简单校准触摸屏时,一切正常:ts_calibrate 运行并正确创建 pointercal 文件。如果在调用 ts_calibrate 后运行我的 Qt 应用程序(或 ts_test),我会注意到校准成功。

问题是校准结果仅适用于打开我的应用程序 1 次:我使用 ts_calibrate 进行校准,运行我的应用程序,然后关闭它,如果我再次运行我的应用程序,屏幕再次未校准。

现在显然我不想每次关闭和重新打开我的应用程序时都必须调用校准。问题是:如何让标定结果永久化?(即直到再次标定)


额外信息:

我在网上做了一些研究,发现 this SO thread讲述使用 QWSServer 处理此问题的方法。起初我不喜欢这个解决方案,因为它依赖于 Qt 框架来完成这项工作(我期待一个更通用的“C++ 解决方案”(或调用脚本,无论如何))。但我实现了它并且它起作用了——但仅在特定情况下,即,如果我校准、打开我的软件、关闭它并重新打开它,那么校准将保持不变。但是,如果我完全关闭硬件,打开它并运行我的应用程序而不调用 ts_calibrate(在此过程中重新加载 Linux 内核),问题仍然存在;所以这表明这只是部分解决方案,因此是 Not Acceptable 。

为了找到问题的根源,我在校准后创建了一个 pointercal 文件的拷贝,并在关闭并打开我的硬件(并确认校准是正确的)后创建了另一个拷贝结束),我注意到文件在中间被更改,尽管没有调用 ts_calibrate 或类似的应用程序:

校准后:55438 118 -1920736 -543 -36058 34531168 65536 800 480

硬件关闭后:-55040 1280 2526720 -288 35040 -34398240 -62768

linux 启动的终端日志(tftp; bootm 命令)没有提到 pointercal 或相关的校准过程。

编辑

我最近了解到位于 /etc/ 中的 pointercal 文件在不同部分之间发生变化,因为当硬件重新启动时整个文件夹都是新的。所以本质上发生的是 Tslib 正在寻找一个文件,该文件在每次重新启动硬件时都会不断重置为默认值,而我需要做的是将 Tslib 配置为不看那里,而是看一个更安全的文件夹(在我的情况下,SD 卡)。现在的新问题是:如何做到这一点?我知道我必须配置 tslib.sh 文件,使 TSLIB_CALIBFILE 变量指向 pointerscal 的新位置,但是 tslib. sh 本身位于 /etc/ 中,本身是临时的。

最佳答案

您必须更改通过 tftp 加载的图像中的 TSLIB_CALIBFILE

应该这样做,因为您只需更改一次。

关于c++ - 如何使基于 tslib 的校准保持永久?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25209416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com