Übersicht über das Messen der Hardwarewartezeit bei Toucheingabe (nach unten)
Latenz ist ein Maß der Zeitverzögerung im Touchdigitalisierungssystem. Die inhärente Latenz eines Systems ist einer der wichtigsten Parameter eines Touchgeräts und stellt immer einen Kompromiss zwischen mehreren wichtigen Features dar: Rauschpegel (SNR), Empfindlichkeit, Stromverbrauch, Jitter usw.
Der Ausgangspunkt für die Latenzmessung ist ein gut definierter Standard; es ist der Moment, an dem der Finger oder Stift (Aktor) den Bildschirm bei einem bestimmten Kontakt zum ersten Mal berührt. Der Endpunkt für die Touchdown-Hardwarelatenz ist der Moment, in dem das Hostbetriebssystem (z. B. Windows 8) die Nachricht vom Zieltouchdigitalisierer empfängt (bei USB-Geräten ist dies der Moment, in dem die Bulk-Interrupt-Anforderung auf einem speziellen USB-Controller für Touchdigitalisierer erkannt wird; in der Regel zeigt diese Anforderung einen eingehenden HID-Bericht mit ersten Kontaktinformationen an). In der Praxis ist dieser Endpunkt identisch mit dem WndProc-Endpunkt, d. h. dem Zeitpunkt, zu dem die Hostanwendung zum ersten Mal von der Berührung erfährt (z. B. durch WM_INPUT- und WM_POINTER-Nachrichten bei nativen Anwendungen oder durch eine Windows::UI::Input::PointerPoint-Nachricht bei Microsoft Store-Anwendungen).
Methodik
Dieses Verfahren basiert auf der akustischen/mechanischen Welle, die von dem Finger produziert wird, der den Digitalisierer berührt, um diese Latenz zu messen. Es ist erwähnenswert, dass selbst die geringste Berührung eine beträchtliche akustische/mechanische Welle auf der Oberfläche des Digitalisierers erzeugt, die selbst mit den einfachsten handelsüblichen Mikrofonen klar und eindeutig erkannt werden kann (d. h. mit extrem hohem SNR, praktisch keinen falsch-positiven und fast keinen falsch-negativen Ergebnissen).
Die Methodik beruht darauf, dass die Testperson den Touchscreen mehrmals manuell berührt. Dies liegt daran, dass die Latenz aufgrund der mit der Abtastfunktion verbundenen Unsicherheit grundsätzlich probabilistisch ist. Dies erlaubt uns, eine empirische kumulative Verteilungsfunktion zu erstellen. Vorhersehbare Erwartungen für diese Funktion ermöglichen eine Einschätzung der Qualität der Gesamtmessung. Mithilfe dieser Daten können Sie grundlegende Parameter für die Verteilung extrahieren.
Jede Messung wird ziemlich einfach ausgeführt: Eine Testperson berührt den Digitalisierer mit einem Finger, wodurch die akustische/mechanische Welle entsteht. Eine kleine, aber messbare Verzögerung tritt auf zwischen dem tatsächlichen Kontakt und dem Moment, an dem die Welle das Mikrofon am Digitalisierer erreicht. Die Welle wird dann vom Mikrofon erfasst, verstärkt und mit einem entsprechenden Schwellenwert versehen, d. h. sie wird in einen logischen Pegel von 0 oder 1 umgewandelt. Dieser logische Wert wird in die Mikrocontrollerplatine (z. B. AT90USBKEY2) eingespeist, die diese Änderung mit geringer Latenz (~µs) annimmt und sie mit höchstens 1 ms Latenz über einen USB-HID-Bericht an das zu testende Gerät weiterleitet (1 ms ist die Mindestabfragezeit für Full-Speed-USB-Geräte wie AT90USBKEY2).
Auf der Seite des Hosts (d. h. des zu testenden Geräts) werden zwei Ereignisse erwartet. Das erste ist der Empfang eines HID-Berichts von der Mikrocontrollerplatine, der anzeigt, dass ein physischer Kontakt stattgefunden hat. Das zweite ist der HID-Bericht vom Touchdigitalisierer. Der Unterschied zwischen den beiden Berichten stellt die Touchdownlatenz dar.
Es gibt zwei Unsicherheiten in dieser Messung. Eine Methode wurde entwickelt, um beide zu reduzieren. Die erste Unsicherheit besteht darin, dass zwischen dem tatsächlichen Kontakt und dem Zeitpunkt, zu dem die Welle das Mikrofon erreicht, eine Zeitverzögerung auftritt (genauer gesagt, zwischen dem tatsächlichen Kontakt und dem Zeitpunkt, zu dem der Mikrocontroller eine logische 1 empfängt). Dies wird durch Hinzufügen eines zusätzlichen Schritts zur Methodik kompensiert – einer Kalibrierung. Vor Beginn der Latenzmessungen wird die Zeit gemessen, die die Welle benötigt, um sich von der am weitesten entfernten Stelle auf dem Digitalisierer zum Mikrofon (Mikrocontroller) auszubreiten. Diese Informationen werden verwendet, um später für jede einzelne Messung eine absolute Fehlerschätzung bereitzustellen. In den meisten Fällen liegt dies unter 2 ms (je nach Größe des Bildschirms und den für die Oberfläche des Digitalisierers verwendeten Materialien).
Die zweite Unsicherheit ist die durch den USB-Kanal zwischen dem Mikrocontroller und dem Hostcomputer (dem zu testenden Gerät) verursachte Latenz. Diese wird durch Einführung eines 48-Bit-Zeitstempels für jeden HID-Bericht vom Mikrocontroller behandelt. Dieser Zeitstempel wird gesetzt, wenn am Eingangsport des Mikrocontrollers eine logische 1 erkannt wurde (mit einer Latenz von ~µs zwischen diesem Ereignis und der Erzeugung des Zeitstempelwerts). Dann können die Uhren auf dem Host (dem getesteten Computer) und der Zielseite (Mikrocontroller) synchronisiert werden, um die präzisesten Ergebnisse zu erzielen.
Diese Methodik kann vollständig automatisiert werden und ist vollständig wiederholbar. Anstelle eines menschlichen Teilnehmers könnte ein Roboter Berührungen auslösen. Stattdessen sollte die einfachere Lösung mit einem menschlichen Teilnehmer und natürlicher Messung mit einfacherem und bequemerem Setup gewählt werden. Die beobachteten Ergebnisse weisen auf eine konsistente Präzision hin, was darauf hindeutet, dass ein Gleichgewicht zwischen der Komplexität des Setups und der Präzision der Messung erreicht wurde.
Hardwareanforderungen
In diesem Abschnitt werden die erforderlichen Hardwarekomponenten erläutert. Der Verwendungszweck der Geräte wird beschrieben, aber es werden keine konkreten Teilenummern angegeben (diese werden später in diesem Dokument angegeben).
Ein Mikrofon, um akustische Wellen auf dem Touchdigitalisierer zu erkennen. Ein kleines, flaches piezoelektrisches Mikrofon, das einfach auf den Touchscreen geklebt werden kann, wird empfohlen.
Ein akustischer Verstärker, um das Signal vom Mikrofon zu verstärken.
Ein Schwellenwertschaltkreis, um Touchsound von Umgebungsgeräuschen zu unterscheiden.
Eine Mikrocontrollerplatine mit USB-HID-Funktion und Abfragefunktion auf mindestens zwei Eingabeports mit ~μs Latenz.
Kalibrierungsschaltkreis, um die Akustikwellenverteilung zu messen, also die Zeit zwischen der Berührung und der logischen 1, die vom Mikrocontroller empfangen wird.
Im nächsten Abschnitt wird eine Implementierung des Setups der Touchdown-Latenzmessung erläutert.
Ausführliche Anweisungen
Das Hardwaregerät zum Durchführen von Messungen wird in der folgenden Abbildung dargestellt. Das Gehäuse hat drei Öffnungen: Mikrofoneingang, Kalibrierungsmetallplatten-Eingang und Mikrocontroller-Mikro-USB-Ausgang.
Das nächste Bild zeigt die Schaltung für das Mikrofon, den akustischen Verstärker und den Schwellenwertschaltkreis. Der Mikrocontrollerkomparator kann zum Anwenden des Schwellenwerts verwendet werden.
Der Mikrofonanschluss wird in der folgenden Abbildung dargestellt. Beachten Sie, dass in diesem Setup ein sehr einfaches handelsübliches Mikrofon verwendet wird, das ausreicht, um zuverlässig und genau zwischen Tippen und Umgebungsgeräuschen zu unterscheiden.
Für den Kalibrierungsplatteneingang wird die andere Öffnung genutzt, wie in der folgenden Abbildung dargestellt.
Die verwendete Mikrocontrollerplatine ist AT90USBKEY2.
Wie in der Methodik beschrieben, wird dieses Mikrocontrollerplatine verwendet, um Änderungen an der Ausgabe des Schwellenwertschaltkreises zu erkennen, nämlich logische 0 und 1 (identisch für Kalibrierung und Metallplatte). Wenn ein Audiosignal erkannt wird, dessen Stärke den Schwellenwert überschreitet, wird diese Änderung erkannt und für jedes derartige Ereignis ein HID-Bericht an den Host gesendet. Da die Schallwelle oszilliert, wird der Schwellenwert mehrfach überschritten. Um zu vermeiden, dass bei jedem Überschreiten des Schwellenwerts ein Änderungsereignis gesendet wird, muss die Controllerlogik das Audiosignal nach jedem Änderungsereignis für eine gewisse Zeit ignorieren. Dieses Zeitintervall sollte lang genug sein, sodass das endgültige Ergebnis nur ein Änderungsereignis pro Fingertippen ist. Eine Dauer von mehr als 500 ms funktioniert in der Regel. Alternativ kann ein monostabiler Multivibrator verwendet werden oder eine zusätzliche logische Schaltung, die hinter dem Audioverstärker und dem MCU-Eingang platziert wird. Um das empfohlene Setup (Firmware und Software) wiederzuverwenden, müssen Sie die Ausgabe des Audioschwellenwertschaltkreis in Eingang C0 und die Ausgabe des Metallplattenschaltkreises in den Eingang C1 einspeisen. Die Mikrocontrollerplatine und der Schwellenwertschaltkreis sollten über eine gemeinsame Masse verfügen (die Massen sollten verbunden sein). Die Platzierung der Pins C0 und C1 sowie die Masse werden in den folgenden beiden Bildern gezeigt.
Der rot umrandete Bereich (Port C der AT90USBKEY-Platine) des vorhergehenden Bilds ist im folgenden Bild vergrößert dargestellt, wobei die Pins C0, C1 und Masse entsprechend markiert sind.
Weitere Informationen zu dieser Platine finden Sie auf der Website des Herstellers und im Hardwarebenutzerhandbuch der Platine.