У меня проблема с созданием постоянный калибровка в моем встроенном решении. Я занимаюсь разработкой приложения на основе Qt для среды Embedded Linux с сенсорным экраном. Для этой последней части я использую tslib
(настроено предыдущими разработчиками).
Что касается простой калибровки сенсорного экрана, все в порядке: ts_calibrate запускается и создает pointercal
файл правильно. Если после вызова ts_calibrate я запускаю свое приложение Qt (или ts_test), я могу заметить, что калибровка прошла успешно.
Проблема в том, что результаты калибровки работают только для 1 открытия моего приложения: я калибрую с помощью ts_calibrate, запускаю свое приложение, закрываю его, и если я снова запускаю свое приложение, экран снова не откалиброван.
Теперь, очевидно, я не хочу вызывать калибровку каждый раз, когда мое приложение закрывается и снова открывается. Вопрос в том: как сделать так, чтобы результаты калибровки стали постоянными? (то есть до другой калибровки)
Дополнительная информация:
Я провел некоторое исследование в Интернете, и я нашел это так нить рассказывая о способе решения этой проблемы с помощью QWSServer
, Сначала мне не понравилось это решение, так как от работы зависит среда Qt (я ожидал более общего «решения C ++» (или вызова скрипта, что угодно)). Но я реализовал это, и это сработало — но только в конкретном случае, а именно, если я откалибрую, открою свое программное обеспечение, закрою и снова открою, тогда калибровка будет продолжена. Но проблема, тем не менее, сохраняется, если я полностью выключил оборудование, включил его и запустил свое приложение без вызова ts_calibrate (перезагрузка ядра Linux в процессе); так что это шоу является лишь частичным решением и, следовательно, неприемлемым.
Пытаясь найти источник проблемы, я создал копию pointercal
файл сразу после калибровки и еще одна его копия после выключения и включения моего оборудования (и подтверждения того, что калибровка была завершена), и я заметил, что файл был изменен в середине, несмотря на то, что не был сделан вызов ts_calibrate или подобному приложению:
После калибровки:
55438 118 -1920736 -543 -36058 34531168 65536 800 480
После аппаратного выключения:
-55040 1280 2526720 -288 35040 -34398240 -62768
Журнал терминала для загрузки linux (tftp; bootm
команда) не упоминайте pointercal
или соответствующий процесс калибровки.
редактировать
Я недавно узнал, что pointercal
файл находится внутри /etc/
меняется между разделами, потому что вся папка становится новой после перезапуска оборудования. Так что, по сути, происходит то, что Tslib идет после файла, который постоянно сбрасывается к значению по умолчанию при каждом перезапуске аппаратного обеспечения, и мне нужно настроить Tslib не на то, чтобы искать там, а на более безопасную папку (в моем чехол, SD-карта). Теперь новый вопрос: как это сделать? Я знаю, что должен настроить tslib.sh
создание файла TSLIB_CALIBFILE
переменная точка для нового местоположения pointerscal
, но tslib.sh
сам внутри /etc/
Будучи сама по себе временной.
Вы должны изменить TSLIB_CALIBFILE
в изображении, загруженном через TFTP.
Это должно сделать это, так как вы просто должны изменить это один раз.