Wie kalibriere ich den eingebauten 16: 9-Touchscreen auf eine 4: 3-Auflösung?

559
Danny

Ich brauche Hilfe bei einem Problem, mit dem wir in einem Projekt konfrontiert sind, in dem wir von einer Windows-basierten POS-Umgebung zu einer auf CentOS7 laufenden übergehen. Das Problem besteht aus einer Reihe von Faktoren, die Details finden Sie unten:

  • Der Anbieter unserer POS-Anwendung wird nur eine Anwendung liefern, die für die Ausführung im Format 1024: 768 4: 3 hartcodiert ist.
  • Die verwendete Hardware ist eine POS-Einheit von HP, die über einen integrierten 16: 9-Touchscreen verfügt.
  • Die Mitarbeiter, die diese Lösung verwenden, dürfen nur die POS-Anwendung sehen und haben keinen Zugriff darauf.
  • Unsere Vertriebsorganisation verlangt, dass Berührungen zur Verfügung stehen, wenn die neue POS-Umgebung live geschaltet wird.

Gestatten Sie mir, weiter zu erläutern, was uns auf dem Weg begegnet ist, als wir das Ziel eines Touchscreens erreichen wollten:

  • Wir haben einfach die Auflösung in CentOS7 von 1920x1080 16: 9 auf 1024: 768 geändert. Das Ergebnis wird mit schwarzen Kanten an den kurzen Kanten des Touchscreens erzielt.
  • Wir haben dann die POS-Anwendung gestartet und bemerken schnell, dass der Touchscreen nicht wie erwartet funktioniert. Er berührt andere Menüs und Schaltflächen im Vergleich zu dem Punkt, an dem wir den Bildschirm tatsächlich berührt haben.
  • Wir haben ähnliche Beiträge zu diesem Problem gefunden, aber keine, bei denen das Ziel erreicht werden soll. Ausführen eines 16: 9-Touchscreens mit einer Auflösung von 4: 3.
  • In ähnlichen Beiträgen haben wir Werkzeuge (xinput, xinput_calibrator, xrandr) gefunden, mit denen wir versucht haben, dieses Problem zu lösen, aber bisher konnten wir das nicht. Wir sind uns nicht sicher, wie wir dieses Problem wirklich angehen sollen.

Wenn wir zum Beispiel xinput_calibrator ausführen, wird die Anwendung zwar gestartet, aber sie reicht über unsere Bildschirmauflösung hinaus und wir können die Kalibrierung daher nicht abschließen. Unser Glaube ist das; Wenn wir die Bildschirmauflösung ändern, berücksichtigt der Touchscreen diese Änderung nicht und hat auch seine "feste Größe" ... aber alles in allem raten wir nur.

Wenn Sie Xinput ausführen, sehen Sie, dass der Touchscreen als zwei verschiedene Geräte aufgeführt wird, aber insgesamt scheinen sie die gleichen Eigenschaftswerte zu haben:

\u239c \u21b3 ILITEK ILITEK-TP id=14 [slave pointer (2)]  \u239c \u21b3 ILITEK ILITEK-TP id=15 [slave pointer (2)] 

Bei näherer Betrachtung eines der Geräte (xinput list-props 14) können wir die folgenden Informationen sehen. Dies ist ein Beispiel, bei dem es für uns schwieriger wird. Wir sind uns einfach nicht sicher, auf welche Eigenschaften wir uns konzentrieren müssen auf:

Device 'ILITEK ILITEK-TP':  Device Enabled (137): 1  Coordinate Transformation Matrix (139): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000  Device Accel Profile (265): 0  Device Accel Constant Deceleration (266): 1.000000  Device Accel Adaptive Deceleration (267): 1.000000  Device Accel Velocity Scaling (268): 10.000000  Device Product ID (259): 8746, 323  Device Node (260): "/dev/input/event5"  Evdev Axis Inversion (269): 0, 0  Evdev Axis Calibration (270): 0, 16384, 0, 9600  Evdev Axes Swap (271): 0  Axis Labels (272): "Abs MT Position X" (296), "Abs MT Position Y" (297), "None" (0), "None" (0)  Button Labels (273): "Button Unknown" (262), "Button Unknown" (262), "Button Unknown" (262), "Button Wheel Up" (143), "Button Wheel Down" (144)  Evdev Scrolling Distance (274): 0, 0, 0  Evdev Middle Button Emulation (275): 0  Evdev Middle Button Timeout (276): 50  Evdev Middle Button Button (277): 2  Evdev Third Button Emulation (278): 0  Evdev Third Button Emulation Timeout (279): 1000  Evdev Third Button Emulation Button (280): 3  Evdev Third Button Emulation Threshold (281): 20  Evdev Wheel Emulation (282): 0  Evdev Wheel Emulation Axes (283): 0, 0, 4, 5  Evdev Wheel Emulation Inertia (284): 10  Evdev Wheel Emulation Timeout (285): 200  Evdev Wheel Emulation Button (286): 4  Evdev Drag Lock Buttons (287): 0 

Beim Ausführen von xrandr können wir feststellen, dass die Auflösungseinstellungen genau das sind, was wir erwarten, aber wir sind nicht sicher, wie wir dem Touchscreen "sagen" sollen, welche Auflösung und welches Format der Monitor tatsächlich hat.

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192 eDP-1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 309mm x 174mm 1920x1080 60.05 + 40.03  1400x1050 59.98  1280x1024 60.02  1280x960 60.00  1024x768 60.04* 60.00  960x720 60.00  928x696 60.05  896x672 60.01  800x600 60.00 60.32 56.25  700x525 59.98  640x512 60.02  640x480 60.00 59.94  512x384 60.00  400x300 60.32 56.34  320x240 60.05  DP-1 disconnected (normal left inverted right x axis y axis) 

Es tut mir leid, wenn die bereitgestellten Informationen schwer zu verstehen sind. Wir sind nicht alle mit Linux vertraut, können aber die grundlegendsten Aufgaben ausführen. Wenn wir in diesem Beitrag notwendige Informationen verpasst haben, entschuldigen Sie uns bitte und teilen Sie uns mit, was wir hinzufügen sollten, damit wir weiter gehen können.

Vielen Dank im Voraus.

Beste Grüße Danny

0

0 Antworten auf die Frage