-
PRIORITÄTSANSPRUCH
-
Diese Anmeldung beansprucht den Nutzen unter 35 U.S.C. §119(e) der vorläufigen US-Patentanmeldung mit der Seriennummer 62/507,902, eingereicht am 18. Mai 2017, deren Offenbarung hiermit durch Bezugnahme in ihrer Gesamtheit hierin aufgenommen wird.
-
TECHNISCHES GEBIET
-
Die Ausführungsformen der vorliegenden Offenbarung beziehen sich allgemein auf Techniken zum Identifizieren von Elementen in einer Benutzeroberfläche (engl. user interface -UI) und insbesondere Techniken zum Bestimmen von UI-Elementen, die auf einer kontaktempfindlichen Benutzerschnittstelle ausgewählt werden, und auf das Verwenden dieser Techniken, um eine oder mehrere haptische Antworten bereitzustellen.
-
STAND DER TECHNIK
-
Touch-Schnittstellen, die Berührungstechnologie verwenden, werden für eine Vielzahl von Anwendungen eingesetzt, z. B. in Tablet-Computern, PCs, Smartphones und anderen Konsumgütern. Sie werden auch als Bedienfelder für Kraftfahrzeuge, Haushaltsgeräte (z. B. Kühlschränke, Öfen, Waschmaschinen/Trockner usw.), Heizungs- und Klimaanlagen, Sicherheitssysteme und Geldautomaten verwendet. Eine Berührungsschnittstelle in diesen Anwendungen kann z. B. ein Touchpad sein oder kann einen Bildschirm und eine graphische Benutzeroberfläche (engl. graphical user interface - GUI) einschließen.
-
Generell besteht ein Bedarf an Touch-Schnittstellen, die eine ausreichende Ansprechempfindlichkeit und Genauigkeit aufweisen, um bei vielen Anwendungen verwendet zu werden.
-
Figurenliste
-
Der Zweck und die Vorteile der Ausführungsformen der Offenbarung werden Fachleuten aus der detaillierten Beschreibung in Verbindung mit den folgenden beigefügten Zeichnungen ersichtlich. Die Patent- oder Anmeldedatei enthält mindestens eine Zeichnung, die in Farbe ausgeführt ist. Kopien dieses Patents oder dieser Veröffentlichung der Patentanmeldung mit Farbzeichnung(en) werden vom Amt auf Anfrage und gegen Zahlung der erforderlichen Gebühr zur Verfügung gestellt.
- 1 ist ein Schwimmbahndiagramm, das den Prozess der Generierung und Verwendung einer Suchauftragsliste zur Identifizierung kontaktierter UI-Elemente in einer GUI veranschaulicht.
- 2 ist ein Flussdiagramm eines Prozesses zum Generieren einer Suchauftragsliste gemäß einer Ausführungsform der Offenbarung.
- 3 ist ein Flussdiagramm eines Prozesses zum Extrahieren der UI-Elemente aus einer UI-Strukturdefinition gemäß einer Ausführungsform der Offenbarung.
- 4 ist ein Flussdiagramm eines Prozesses, um einen Zwischensuchbaum zu erzeugen, gemäß einer Ausführungsform der Offenbarung.
- 5 ist ein Flussdiagramm eines Prozesses zum Generieren eines Suchauftrag-Baumes gemäß einer Ausführungsform der Offenbarung.
- 6 ist ein Flussdiagramm eines Prozesses, um eine Suchauftragsliste zu generieren, gemäß einer Ausführungsform der Offenbarung.
- 7 ist ein Flussdiagramm eines Prozesses zum Bestimmen, ob eine Berührung innerhalb eines UI-Elements aufgetreten ist, gemäß einer Ausführungsform der Offenbarung.
- 8 zeigt eine Ausführungsform einer Radio-GUI, die aus UI-Elementen besteht.
- 9 zeigt die UI-Elemente der Radio-GUI von 8 gruppiert gemäß den Ausführungsformen der Offenbarung.
- 10 zeigt UI-Elemente in einer baumartigen Struktur, die gemäß den Ausführungsformen der Offenbarung gebildet wurde.
- 11 zeigt eine Ausführungsform eines Systems mit Suchauftragslisten.
- 12 zeigt eine Ausführungsform einer Radio-GUI mit Merkmalen und Parametern, die mindestens einigen der UI-Elemente der Radio-GUI zugeordnet sind.
- 13 veranschaulicht eine Ausführungsform des Systems von 11, das in eine Haupteinheit eines Automobils als Subsystem integriert ist.
-
OFFENBARUNG
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf ein Verfahren zum Erzeugen von Anweisungen zum Suchen nach einem Element einer grafischen Benutzeroberfläche (GUI), die auf einem kontaktempfindlichen Bildschirm angezeigt wird. Das Verfahren schließt das Analysieren einer GUI-Definition und das Identifizieren von Elementen der GUI als Reaktion auf das Analysieren ein; das Erzeugen eines Datensatzes, der Einträge identifizierter Elemente umfasst; das Zuordnen der identifizierten Elemente zu Gruppen von ähnlich platzierten Elementen; das Anordnen des Datensatzes der identifizierten Elemente in einer baumartigen Struktur; das Zusammenlegen identifizierter Elemente in gleichen Gruppen zu einem einzelnen Blatt in der baumartigen Struktur; das Optimieren der baumartigen Struktur; und das Erzeugen einer Suchanweisungsliste als Reaktion auf die baumartige Struktur.
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf ein Computerprogrammprodukt zum Ermöglichen, dass ein Computer ausführbare Anweisungen zum Suchen nach einem Element einer graphischen Benutzeroberfläche (GUI) erzeugt. Das Computerprogrammprodukt kann ein computerlesbares Medium und Softwarebefehle auf dem von einem Computer lesbaren Medium einschließen. Die Softwareanweisungen auf dem computerlesbaren Medium sind angepasst, um es dem Computer zu ermöglichen, die folgenden Vorgänge auszuführen: das Analysieren einer GUI-Definition und das Identifizieren von Elementen der GUI als Reaktion auf die geparste GUI-Definition, das Erzeugen eines Datensatzes, der Einträge der identifizierten Elemente umfasst; das Zuordnen der identifizierten Elemente zu Gruppen von ähnlich platzierten Elementen; das Anordnen des Datensatzes der identifizierten Elemente in einer baumartigen Struktur; das Zusammenlegen identifizierter Elemente in gleichen Gruppen zu einem einzelnen Blatt in der baumartigen Struktur; das Optimieren der baumartigen Struktur; und das Erzeugen einer Liste von Suchanweisungen als Reaktion auf die baumartige Struktur.
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf einen Mikrocontroller, der funktionsfähig mit einem Touchscreen gekoppelt ist, der zum Anzeigen einer grafischen Benutzeroberfläche (GUI) konfiguriert ist. Der Mikrocontroller schließt mindestens einen Prozessor und eine oder mehrere ausführbare Anweisungen ein, die auf einem nicht flüchtigen Speichermedium gespeichert sind. Die Anweisungen, wenn sie vom Prozessor ausgeführt werden, sind so angepasst, dass der Prozessor: eine Position einer erfassten Berührung an einem Touchscreen bestimmen kann; und ein GUI-Element identifizieren kann, das dem Berührungspunkt zugeordnet ist, welcher der erfassten Berührung entspricht.
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf ein Verfahren zur Identifizierung eines Elements einer grafischen Benutzeroberfläche (GUI), das auf einem Touchscreen angezeigt wird. Das Verfahren schließt das Bestimmen einer Position einer erfassten Berührung an einem Touchscreen ein; das Ausführen einer oder mehrerer Suchanweisungen, als Reaktion auf die Position, wobei jede Suchanweisung der einen oder der mehreren Suchanweisungen einem GUI-Element entspricht, und, wenn sie ausgeführt wird, angepasst ist, um ein Suchergebnis zurückzugeben; und das Identifizieren eines GUI-Elements als Reaktion auf das Suchergebnis.
-
Einige Ausführungsformen der vorliegenden Offenbarung beziehen sich im Allgemeinen auf ein System. Das System schließt ein Anzeigesubsystem und ein Berührungssubsystem ein. Das Anzeigesubsystem ist konfiguriert, um eine Anzeige zu steuern. Das Berührungssubsystem schließt einen Berührungssensor und eine Berührungssteuerung ein. Die Berührungssteuerung ist konfiguriert, um einen Ort einer erfassten Berührung an dem Berührungssensor zu bestimmen; um eine oder mehrere Suchanweisungen, als Reaktion auf die Position und einen Suchbaum auszuführen, wobei jede Suchanweisung der einen oder der mehreren Suchanweisungen einem GUI-Element entspricht, und, wenn sie ausgeführt wird, angepasst ist, um ein Suchergebnis zurückzugeben; um ein GUI-Element als Reaktion auf das Suchergebnis zu identifizieren, und eine haptische Steuernachricht als Reaktion auf das identifizierte GUI-Element zu erzeugen.
-
ART(EN) DER AUSFÜHRUNG DER ERFINDUNG
-
In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil hiervon bilden und in denen zur Veranschaulichung spezifische Beispiele für Ausführungsformen gezeigt sind, in denen die vorliegende Offenbarung ausgeführt werden kann. Diese Ausführungsformen werden ausreichend detailliert beschrieben, um es einem Durchschnittsfachmann zu ermöglichen, die vorliegende Offenbarung auszuführen. Es können jedoch auch andere Ausführungsformen verwendet werden und Änderungen der Struktur, des Materials und des Prozesses können vorgenommen werden, ohne vom Umfang der Offenbarung abzuweichen. Die hierin dargestellten Veranschaulichungen sollen keine tatsächlichen Ansichten eines bestimmten Verfahrens oder Systems oder einer bestimmten Vorrichtung oder Struktur sein, sondern sind lediglich idealisierte Darstellungen, die zur Beschreibung der Ausführungsformen der vorliegenden Offenbarung verwendet werden. Die hierin dargestellten Zeichnungen sind nicht notwendigerweise maßstabsgetreu. Ähnliche Strukturen oder Komponenten in den verschiedenen Zeichnungen können zur Vereinfachung für den Leser die gleiche oder eine ähnliche Nummerierung beibehalten; die Ähnlichkeit in der Nummerierung bedeutet jedoch nicht, dass die Strukturen oder Komponenten notwendigerweise in Größe, Zusammensetzung, Konfiguration oder einer anderen Eigenschaft identisch sind.
-
Es versteht sich von selbst, dass die Komponenten der Ausführungsformen, wie sie hierin allgemein beschrieben und in den Zeichnungen veranschaulicht sind, in einer Vielzahl unterschiedlicher Konfigurationen angeordnet und gestaltet werden können. Somit soll die folgende Beschreibung verschiedener Ausführungsformen den Umfang der vorliegenden Offenbarung nicht einschränken, sondern lediglich repräsentativ für verschiedene Ausführungsformen sein. Während die verschiedenen Aspekte der Ausführungsformen in Zeichnungen dargestellt werden können, sind die Zeichnungen nicht notwendigerweise maßstabsgetreu gezeichnet, sofern nicht ausdrücklich angegeben.
-
Die folgende Beschreibung kann Beispiele einschließen, um einem Durchschnittsfachmann zu ermöglichen, die offenbarten Ausführungsformen zu praktizieren. Die Verwendung der Begriffe „beispielhaft“, „als Beispiel“ und „zum Beispiel“ bedeutet, dass die zugehörige Beschreibung erläuternd ist, und obwohl der Umfang der Offenbarung die Beispiele und ihre rechtlichen Entsprechungen umfassen soll, ist die Verwendung solcher Begriffe nicht dazu bestimmt, den Umfang einer Ausführungsform oder dieser Offenbarung auf die spezifizierten Komponenten, Schritte, Merkmale, Funktionen oder dergleichen zu beschränken.
-
Darüber hinaus sind die gezeigten und beschriebenen spezifischen Implementierungen nur Beispiele und sollten nicht als der einzige Weg zur Implementierung der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Elemente, Schaltungen und Funktionen können in Blockdiagrammform gezeigt werden, um die vorliegende Offenbarung nicht durch unnötige Einzelheiten undeutlich werden zu lassen. Umgekehrt sind gezeigte und beschriebene spezifische Implementierungen nur beispielhaft und sollten nicht als die einzige Möglichkeit zur Implementierung der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Außerdem sind Blockdefinitionen und die Aufteilung von Logik zwischen verschiedenen Blöcken beispielhaft für eine spezifische Implementierung. Es ist für Fachleute ohne weiteres ersichtlich, dass die vorliegende Offenbarung durch zahlreiche andere Partitionierungslösungen ausgeführt werden kann. Details bezüglich Zeitüberlegungen und dergleichen wurden größtenteils weggelassen, wenn solche Details nicht notwendig sind, um ein vollständiges Verständnis der vorliegenden Offenbarung zu erhalten und diese innerhalb der Fähigkeiten von Durchschnittsfachleuten in dem relevanten Fachgebiet liegen.
-
Durchschnittsfachleute werden verstehen, dass Informationen und Signale unter Verwendung einer Vielzahl verschiedener Technologien und Techniken dargestellt werden können. Zum Beispiel können Daten, Anweisungen, Befehle, Informationen, Signale, Bits, Symbole und Chips, auf die in dieser Beschreibung Bezug genommen werden kann, durch Spannungen, Ströme, elektromagnetische Wellen, Magnetfelder oder -partikel, optische Felder oder Partikel oder eine beliebige Kombination davon dargestellt werden. Einige Zeichnungen können Signale zur Übersichtlichkeit der Darstellung und Beschreibung als ein einzelnes Signal veranschaulichen. Es ist für einen Durchschnittsfachmann ersichtlich, dass das Signal einen Bus von Signalen darstellen kann, wobei der Bus eine Vielfalt von Bitbreiten aufweisen kann und die vorliegende Offenbarung auf einer beliebigen Anzahl von Datensignalen, einschließlich eines einzelnen Datensignals, implementiert werden kann.
-
Die verschiedenen veranschaulichenden logischen Blöcke, Module und Schaltungen, die in Verbindung mit den hierin offenbarten Ausführungsformen beschrieben werden, können mit einem Allzweckprozessor, einem Spezialprozessor, einem digitalen Signalprozessor (DSP), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem Field Programmable Gate Array (FPGA) oder einer anderen programmierbare Logikvorrichtung, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon, die zum Ausführen der hierin beschriebenen Funktionen ausgelegt sind, implementiert oder ausgeführt werden. Ein Allzweckprozessor (der hierin auch als Host-Prozessor oder einfach als Host bezeichnet werden kann) kann ein Mikroprozessor sein, alternativ kann der Prozessor jedoch ein beliebiger herkömmlicher Prozessor, Controller, Mikrocontroller oder Zustandsautomat sein. Ein Prozessor kann auch als eine Kombination von Rechenvorrichtungen, wie etwa eine Kombination aus einem DSP und einem Mikroprozessor, eine Vielzahl von Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder irgendeine andere derartige Konfiguration implementiert sein. Ein Universalcomputer mit einem Prozessor wird als Spezialcomputer angesehen, während der Universalcomputer so konfiguriert ist, dass er Rechenanweisungen (z. B. Softwarecode) ausführt, die sich auf Ausführungsformen der vorliegenden Offenbarung beziehen.
-
Die Ausführungsformen können in Bezug auf einen Prozess beschrieben werden, der als ein Flussdiagramm, ein Fließschema, ein Strukturdiagramm oder ein Blockdiagramm dargestellt ist. Obwohl ein Flussdiagramm Betriebsvorgänge als einen sequentiellen Prozess beschreiben kann, können viele dieser Vorgänge in einer anderen Reihenfolge, parallel oder im Wesentlichen gleichzeitig durchgeführt werden. Außerdem kann die Reihenfolge der Vorgänge neu geordnet werden. Ein Prozess kann einem Verfahren, einem Thread, einer Funktion, einer Prozedur, einer Unterroutine, einem Unterprogramm usw. entsprechen. Weiterhin können die hierin offenbarten Verfahren in Hardware, Software oder beiden implementiert sein. Bei Implementierung in Software können die Funktionen als eine oder mehrere Anweisungen oder Code auf computerlesbaren Medien gespeichert oder übertragen werden. Computerlesbare Medien schließen sowohl Computerspeichermedien als auch Kommunikationsmedien, einschließlich aller Medien, die die Übertragung eines Computerprogramms von einem Ort zu einem anderen erleichtern, ein.
-
Jede Bezugnahme auf ein Element hierin unter Verwendung einer Bezeichnung, wie „erste/r/s“, „zweite/r/s“ usw. schränkt die Menge oder Reihenfolge dieser Elemente nicht ein, es sei denn, eine solche Einschränkung wird ausdrücklich angegeben. Vielmehr können diese Bezeichnungen hierin als ein zweckmäßiges Verfahren zum Unterscheiden zwischen zwei oder mehr Elementen oder Instanzen eines Elements verwendet werden. Ein Verweis auf erste und zweite Elemente bedeutet also nicht, dass dort nur zwei Elemente eingesetzt werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Weise vorhergehen muss. Darüber hinaus kann ein Satz von Elementen, sofern nicht anders angegeben, ein oder mehrere Elemente umfassen.
-
Wie hierin verwendet, bedeutet der Begriff „im Wesentlichen“ in Bezug auf einen gegebenen Parameter, eine Eigenschaft oder eine Bedingung und schließt in einem für Fachleute verständlichen Ausmaß ein, dass der gegebene Parameter, die gegebene Eigenschaft oder die gegebene Bedingung mit einem kleinen Grad an Varianz erfüllt ist, wie beispielsweise innerhalb akzeptabler Fertigungstoleranzen. Beispielsweise kann in Abhängigkeit von dem bestimmten Parameter, der Eigenschaft oder der Bedingung, der bzw. die im Wesentlichen erfüllt ist, der Parameter, die Eigenschaft oder die Bedingung zu mindestens 90 % erfüllt, zu mindestens 95 % erfüllt oder sogar zu mindestens 99 % erfüllt sein.
-
Die verschiedenen in dieser Offenbarung beschriebenen Ausführungsformen beziehen sich im Allgemeinen auf Techniken zum Bestimmen von UI-Elementen, die auf einer kontaktempfindlichen Benutzeroberfläche ausgewählt werden, und zum Verwenden dieser Techniken, um eine oder mehrere haptische Antworten bereitzustellen. Wie für die Zwecke der hierin beschriebenen Ausführungsformen zu verstehen ist, kann ein Kontaktsensor auf den Kontakt eines Objekts (z. B. eines Fingers oder Stifts) mit oder auf die Nähe des Objekts zu einem kontaktempfindlichen Bereich der Berührungsschnittstelle reagieren. In dieser Offenbarung bezieht sich „Kontakt“ im Allgemeinen auf den physischen Kontakt eines Objekts mit einem kontaktempfindlichen Bereich, kann aber auch die unmittelbare Nähe eines Objekts umfassen, welche eine messbare Reaktion des Kontaktsensors erzeugt. Ferner bezieht sich ein kontaktempfindlicher Bereich auf den physischen Bereich auf einer Berührungsschnittstelle, in dem ein Kontaktsensor auf den Kontakt eines Objekts reagieren kann.
-
Eine kontaktempfindliche GUI, wie sie hier verwendet wird, bezieht sich auf eine Berührungsschnittstelle, die mit einer GUI integriert ist. Zum Beispiel schließt eine GUI üblicherweise einen oder mehrere Anzeigebereiche und aktiven/aktivierbaren Bereiche ein. In dieser Offenbarung ist ein Anzeigebereich ein Bereich einer Benutzeroberfläche, der Informationen für den Benutzer anzeigt. Ein aktivierbarer Bereich ist ein Bereich einer GUI, wie zum Beispiel eine Taste, ein Schieberegler oder ein Menü, der es dem Benutzer ermöglicht, eine bestimmte Maßnahmen in Bezug auf die Benutzeroberfläche durchzuführen. Einige Anzeigebereiche sind auch aktivierbare Bereiche insofern, als sie Informationen anzeigen und das Durchführen einiger Maßnahmen ermöglichen. In einer kontaktempfindlichen GUI kann das Kontaktieren eines berührungsempfindlichen Bereichs, auf dem ein aktiver Bereich angezeigt wird, diesen Bereich aktivieren (z. B. Tippen auf eine GUI-Taste auf einem Touchscreen).
-
Aktive Bereiche können als GUI-Elemente/Objekte angezeigt werden, z. B. Tasten, Schieberegler, wählbare Bereiche, Menüs usw. in verschiedenen Formen und Größen.
-
Im Allgemeinen wird, wenn ein Kontakt an einem kontaktempfindlichen Bereich erfasst wird, ein Verfahren verwendet, um die aktiven Bereiche der GUI zu bestimmen, denen der Kontakt entspricht, falls zutreffend. Wenn beispielsweise eine „EINGABE“-Taste angetippt wird, wird der Kontakt gemessen und als Reaktion auf den gemessenen Kontakt bestimmt ein Prozess, dass der Kontakt auf der EINGABE-Taste war. Die EINGABE-Taste ist ein aktiver Bereich, so dass Ereignisse in der berührungsempfindlichen GUI und/oder dem zugrunde liegenden Anwendungsprogramm, das die GUI aufgerufen hat, erzeugt werden.
-
Ferner, wenn ein bestimmtes GUI-Element dem aktiven Bereich zugeordnet ist, können die mit der Berührungsschnittstelle integrierten Aktoren eine oder mehrere physische Reaktionen liefern, die allgemein als haptische Reaktionen bezeichnet werden. Diese können in Form von Kräften, Vibrationen oder Bewegungen auftreten und Oberflächentexturen, Grate, Kanten, Interaktionen wie Drücken/Klicken einer Taste sowie andere simulierte Empfindungen und Reaktionen nachahmen. Im Falle einer GUI kann die haptische Antwort auf dem GUI-Element lokalisiert werden, mit dem ein Benutzer interagiert. Wenn ein Benutzer beispielsweise eine GUI-Taste berührt, kann die haptische Reaktion dazu führen, dass sich die Taste so anfühlt, als hätte sie eine Kante und wäre angehoben, als ob sie gedrückt wäre oder als ob sie eine raue Textur hätte.
-
Die verschiedenen hier beschriebenen Ausführungsformen können sich manchmal auf das Erzeugen und Aktualisieren elektronischer Datensätze beziehen. Die elektronischen Datensätze können in Form einer Datei vorliegen, und die Aktualisierung eines elektronischen Datensatzes kann das Einfügen oder Löschen von Dateneinträgen in einem oder mehreren Feldern des Datensatzes einschließen. Alternativ kann es sich während der Laufzeit auf ein Klassenobjekt und instanziierte Objekte mit Zustandsinformationen und Variablen beziehen, die mit dem beschriebenen Datensatz übereinstimmen. Beide Situationen werden in den verschiedenen hierin beschriebenen Ausführungsformen betrachtet.
-
Die verschiedenen Ausführungsformen dieser Offenbarung beziehen sich auf Techniken zum Identifizieren derjenigen GUI-Elemente, die auf einer kontaktempfindlichen Schnittstelle kontaktiert wurden. Diese Techniken und zugeordnete Strukturen sind besonders effizient, was die Speicherverwendung und das Ansprechverhalten betrifft. Ferner sind die Anforderungen an die Schnittstellendatenspeicherung gering, und die Anzahl von Tasks, die zur Ausführungszeit ausgeführt werden, um ein UI-Element zu identifizieren, ist im Vergleich zu anderen Techniken gering.
-
Einige Ausführungsformen der Offenbarung beziehen sich auf einen Prozess zur Erstellung einer Liste von optimierten Suchaufträgen, die ausgeführt werden können, um die GUI-Elemente zu identifizieren, die über die kontaktempfindliche Schnittstelle kontaktiert wurden. Die Suchaufträge können ausführbare Anweisungen des Prozessors sein, die beim Ausführen eine Erfolgs- oder Fehlermeldung an das Subsystem zurückgeben, das nach dem Element der GUI sucht, das kontaktiert wurde, falls vorhanden. In einer Ausführungsform werden die Suchaufträge basierend auf einer Definitionsdatei erstellt, die die verschiedenen Elemente und deren Positionen in einer GUI darstellt. Die Suchaufträge sind für verschiedene Effizienzparameter optimiert.
-
In einer Ausführungsform kann die Suchauftragsliste von einer eingebetteten Vorrichtung ausgeführt werden, z. B. einer Berührungssteuerung im Vergleich zu herkömmlichen kontaktempfindlichen GUIs, die den Erfindern dieser Offenbarung bekannt sind und die die Suche in einem Anzeige-Subsystem (z. B. einer Fahrzeug-Haupteinheit) durchführen können. Die Durchführung einer Suche nach einem GUI-Element in einer Berührungssteuerung spart Zeit bei der Kommunikation mit dem Anzeige-Subsystem und Zeit, die das Subsystem benötigt, um zu reagieren und z. B. mit einem haptischen Feedback-Subsystem zu kommunizieren. Die eingesparte Zeit verbessert die Reaktionsfähigkeit von kontaktempfindlichen GUIs im Vergleich zu den herkömmlichen kontaktempfindlichen GUIs und verkürzt aus der Sicht eines Benutzers die Zeit vom Berühren eines Bildschirms bis zum Empfangen des auf die Berührung reagierenden Feedbacks.
-
Darüber hinaus ist die Erstellung der Suchauftragsliste konfigurierbar, und je nach GUI können für eine Implementierung gemeinsame Funktionen ausgewählt werden, die für die spezifische Anwendung optimiert sind. In einigen Ausführungsformen kann der Erstellungsprozess beispielsweise für eine GUI optimiert werden, die Paging, Dropdown-Menüs und Popup-Fenster einschließt, die andere GUI-Elemente, Elemente bestimmter Formen oder Elemente, die sich bewegen oder verformen, wenn sie kontaktiert werden, verdecken.
-
1 veranschaulicht einen Gesamtbetrieb eines Systems gemäß verschiedenen Ausführungsformen der Offenbarung. In Vorgang 112 ist ein Software-Anwendungstool 102 konfiguriert, um eine UI-Definitionsdatei zu verarbeiten, um eine Suchauftragsliste (Vorgang 108) mit konditionierten ausführbaren Anweisungen zu erstellen, die ausgeführt werden können, um ein eventuell vorhandenes UI-Element zu identifizieren, das auf einem kontaktempfindlichen Bildschirm kontaktiert wurde.
-
Die Suchauftragsliste kann in einem nicht flüchtigen Speicher abgelegt werden (Vorgang 110), auf den ein oder mehrere Prozessoren, die Teil eines Touch-Systems sind, zugreifen können. Wenn ein Kontaktereignis an einer Berührungsschnittstelle eintritt, kann ein Berührungssensor 106 die Berührung erfassen (Vorgang 118) und ein oder mehrere die Berührung anzeigende Signale an die Touchprozessoren liefern. Die Touchprozessoren 104 bestimmen (Vorgang 112) eine Stelle auf der Berührungsschnittstelle, an der der Kontakt aufgetreten ist und, als Reaktion auf diese Bestimmung, suchen (Vorgang 114) und identifizieren sie ein eventuelles UI-Element, das kontaktiert wurde. In einer Ausführungsform kann der Touchprozessor 104 die Suchergebnisse einem Subsystem der grafischen Benutzeroberfläche bereitstellen (Vorgang 116).
-
Eine Ausführungsform eines Prozesses zur Erstellung einer Suchauftragsliste wird mit Bezug auf die 2, 3, 4, 5, 6 und 7 beschrieben. Die Ausführungsformen der Offenbarung verwenden eine Suchbaumstruktur, die UI-Elemente gemäß einer Baum- und Raster-Technik organisiert. Die verschiedenen UI-Elemente werden in verwandte Gruppen unterteilt, die wie Raster behandelt und in einem Suchbaum organisiert werden, woraufhin dann verschiedene Suchaufträge generiert werden. Die Suchaufträge werden so konditioniert, dass sie die Ausführung einer Suche anhand der Anweisungen optimieren. Ein Durchschnittsfachmann wird verstehen, dass andere Algorithmen verwendet werden könnten, um den/die Bildschirm(e) in durchsuchbare Bereiche zu unterteilen, zum Beispiel ein „Divide-and-Conquer-Ansatz“.
-
2 veranschaulicht eine Ausführungsform eines Prozesses zum Erzeugen einer Suchauftragsliste. In Vorgang 202 wird eine Strukturdefinition für das UI geladen und analysiert, um Bildschirme, Unterbildschirme und UI-Elemente auf diesen Bildschirmen und Unterbildschirmen zu identifizieren. Die UI-Strukturdefinition kann eine elektronische Datei, eine Datenbank, Rohdaten oder dergleichen sein. In Vorgang 204 werden die Elemente gruppiert und der durchsuchbare Bereich wird in einen oder mehrere durchsuchbare Regionen mit Elementgruppen unterteilt. In Vorgang 206 werden die Gruppen zu einer Baumstruktur verknüpft, die auf den durchsuchbaren Regionen basiert. In Vorgang 208 werden Suchaufträge den Zweigen und Knoten des Suchbaums zugeordnet, um einen Suchbaum zu bilden, und der Suchbaum wird optimiert. In Vorgang 210 werden die konditionierten Aufträge des Suchbaums in einer Liste gespeichert, die die Auftragsliste ist, die von einem Prozessor ausgeführt werden kann.
-
In einer Ausführungsform kann das Software-Anwendungstool 102, das die Suchauftragsliste erzeugt, konfiguriert werden, um die Ergebnisse eines oder mehrerer der Vorgänge 202, 204, 206, 208 und 210 in eine Ausgabedatei zu schreiben. Diese kann durch ein Debugging-Tool verwendet werden, um die Ergebnisse des Prozesses zu überprüfen. Das gleiche Debugging-Tool kann konfiguriert werden, um eine Textversion einer Suchauftragsliste zu verwenden und sie in einer virtuellen Testumgebung (wie z. B. einer ausführbaren .dos-Datei) auszuführen, um sicherzustellen, dass die Suchauftragsliste betriebsbereit ist.
-
3 veranschaulicht eine Ausführungsform eines Prozesses 300 zum Extrahieren der UI-Elemente aus UI-Strukturdefinitionen. In einer Ausführungsform ist die UI-Strukturdefinition eine xml-Definition der Teile einer Anzeige, die durch die Konfigurationserzeugungsfunktionen des Anwendungstools umgewandelt werden sollen. Das Anwendungstool analysiert die Strukturdefinitionen und greift auf die in der Definitionsstruktur definierten Elemente zu. In Vorgang 302 wird jedes UI-Element geladen und in Vorgang 304 wird bestimmt, ob es sich um ein bekanntes UI-Element handelt. Wenn es sich nicht um ein bekanntes UI-Element handelt (d. h. es ist das erste Mal, dass dieses Element in den Strukturdefinitionen identifiziert wurde), dann erstellt der Prozess in Vorgang 306 eine neue Elementdefinition für diesen Typ von UI-Element (z. B. Taste, Drehknopf, Schieberegler, usw.). Nach dem Erzeugen der neuen Definition oder wenn es sich bei dem Element um ein bekanntes UI-Element handelt, wird in Vorgang 308 bestimmt, ob das Element einer vorhandenen Gruppe zugeordnet werden soll. In einer Ausführungsform basiert die Bestimmung, ob das Element einer bestehenden Gruppe zugeordnet werden soll, auf verschiedenen vorher festgelegten Parametern, z. B. gemeinsamen Merkmalen von Elementen, wie der Art des Elements, dem Bildschirm, auf dem das UI-Element angezeigt wird, einer Schicht-Position, einer dem Element zugeordneten Reaktionsart (z. B. visuell, haptisch, Audio usw.) und dergleichen. Wenn die Entscheidung getroffen wird, das Element einer neuen Gruppe zuzuordnen, wird in Vorgang 310 ein neuer Gruppendatensatz mit Parametern angelegt, die sich auf das Element beziehen. Nachdem ein neuer Gruppendatensatz angelegt wurde oder wenn bestimmt wurde, das Element einer bestehenden Gruppe zuzuordnen, wird in Vorgang 312 ein neuer Elementeintrag in den Gruppendatensatz für dieses neue Element eingefügt. In einer Ausführungsform schließt der Eintrag Felder für die Element-ID und die Position des Elements (d. h. die Koordinaten des Elements auf dem Bildschirm) ein. In Vorgang 314 wird bestimmt, ob es mehr UI-Elemente gibt, und wenn es mehr UI-Elemente gibt, dann wird der Prozess für jedes verbleibende UI-Element durchgeführt, das in der Definition der Ul-Struktur identifiziert wurde. In Vorgang 316 gibt der Prozess das/die Element(e), die Elementdefinition(en) und die Gruppe(n) zurück.
-
Wenn die Definition der UI-Struktur mehr als eine Bildschirmdefinition einschließt, wird in einer Ausführungsform, die in 3 nicht veranschaulicht ist, jedem dieser Bildschirme eine Bildschirm-ID zugewiesen, die ein Parameter des UI-Elements ist. Sie kann auch als Parameter für jede Gruppe integriert werden. Jeder Bildschirm kann auch Unterbildschirme einschließen, d. h. definierte Bereiche einer angezeigten GUI, in denen sich einige UI-Elemente dynamisch ändern, während UI-Elemente außerhalb dieser Bereiche statisch bleiben. Als nicht einschränkendes Beispiel können Bereiche mit dynamischen Elementen austauschbare Bereiche, scrollbare Menüs, aktivierbare Informationsbereiche, Navigationstasten und dergleichen einschließen.
-
4 veranschaulicht einen Prozess 400 zum Erzeugen eines Suchbaums gemäß einer Ausführungsform der Offenbarung. In diesem Prozess wird bestimmt, wie jeder in der UI-Definition identifizierte Bildschirm in durchsuchbare Bereiche unterteilt werden kann, wobei jeder durchsuchbare Bereich eine oder mehrere Gruppen von Elementen einschließt. In der Ausführungsform des in 4 dargestellten Prozesses wird eine Trennlinie (x-, y-Koordinaten) gewählt, die Gruppen von Elementen so teilt, dass sich mindestens eine Gruppe auf einer Seite der Trennlinie und mindestens eine weitere Gruppe auf der anderen Seite der Trennlinie befindet. Tatsächlich ist der Bildschirm nun in zwei durchsuchbare Bereiche mit einer gemeinsamen Grenze entlang der Trennlinie unterteilt. Die Gruppen werden rekursiv aufgeteilt, bis die Gruppen nicht mehr weiter aufgeteilt werden können.
-
In einer weiteren Ausführungsform werden der Bildschirm oder die durchsuchbaren Bereiche gleichzeitig in den Richtungen der x- und y-Koordinaten unterteilt, was zu bis zu vier Unterteilungen der Gruppen führen kann. Diese Technik könnte auch zu weniger als vier Unterteilungen führen, beispielsweise drei Unterteilungen von Gruppen und einer leeren durchsuchbaren Region.
-
In noch weiteren Ausführungsformen können Kreise, Quadrate und/oder Polygone verwendet werden, um einen Teil des Bildschirms zu definieren, der von den durchsuchbaren Bereichen ausgeschlossen wird, so dass er nicht in durchsuchbare Bereiche unterteilt ist.
-
Beim Durchlaufen des in 4 dargestellten Prozesses wird in Vorgang 402 der erste durchsuchbare Bereich mit zwei oder mehr Gruppen geladen. Für die erste Iteration sollte dies der gesamte Bildschirm einschließlich aller Gruppen sein. In dieser Ausführungsform existiert ein erster Datensatz einer durchsuchbaren Region mit einem Bereich, der so definiert ist, dass er den gesamten Bildschirm einschließlich aller Elemente und Gruppen umfasst. In Vorgang 404 wird eine Gitterlinie ausgewählt, die die ursprüngliche durchsuchbare Region in zwei durchsuchbare Regionen mit jeweils einigen der Gruppen unterteilt. In Vorgang 406 wird ein neuer Datensatz erstellt, die Gruppen werden zwischen dem anfänglichen Datensatz und dem neuen Datensatz sortiert, und die Datensätze werden mit ihren jeweiligen durchsuchbaren Bereichen aktualisiert. Die Teilungslinie wird als eine Aufteilung/Teilung zwischen den beiden durchsuchbaren Bereichen aufgezeichnet. Der erste durchsuchbare Bereich und die darin enthaltenen Gruppen und Elemente sind mit der Teilung verknüpft, die wiederum mit dem neuen durchsuchbaren Bereich und den darin enthaltenen Gruppen und Elementen verknüpf ist. Zur Laufzeit gibt es Klassenobjekte von Elementen, Klassenobjekte von Gruppen und Klassenobjekte von Aufteilungen/Teilungen.
-
Für jeden durchsuchbaren Bereich, der mehr als eine Gruppe von Elementen enthält, wird der Prozess rekursiv ausgeführt (Vorgang 408), um die durchsuchbaren Bereiche zu teilen.
-
Insbesondere werden in einer Ausführungsform die Elemente durch einen Verweis auf eine Elementdefinition (z. B. eine Elementnummer) und eine Verschiebung zum Ursprung eines Elements in dieser Ausführungsform definiert, der Speicherbedarf der Schnittstelle wird reduziert, da nicht jedes Element einzeln definiert werden muss.
-
Sobald ein Bildschirm vollständig aufgeteilt ist, existiert nun ein Zwischensuchbaum, der Teilungen/Aufteilungen, UI-Elemente und Gruppen von UI-Elementen und Verknüpfungen dazwischen umfasst.
-
In Vorgang 410 werden für jede Gruppe Suchaufträge auf Gruppenebene erzeugt. Ein Auftrag auf Gruppenebene ist ein Prozessschritt oder eine Reihe von Prozessschritten. Die Aufträge können einschließen: (i) Aufträge zum Bestimmen, ob ein Berührungs- oder Kontaktereignis innerhalb eines UI-Elements (oder ohne ein Element) aufgetreten ist; (ii) Aufträge zum Modifizieren der Suchregion in irgendeiner Weise; und (iii) Aufträge zum Vorbereiten für den nächsten Auftrag.
-
Jeder Auftrag auf Gruppenebene kann einen Hinweis auf den nächsten Auftrag enthalten, der im Falle von Erfolg oder Misserfolg ausgeführt werden soll. So kann beispielsweise jeder Auftrag ein Bit mit einem „Offset“ zur nächsten Aufgabenadresse einschließen. Darüber hinaus kann jeder Auftrag auf Gruppenebene Argumente akzeptieren, wenn er ausgeführt wird. In einigen Ausführungsformen kann der vorherige Auftrag die Argumente liefern oder ein Umgebungsbit/Flag setzen, um anzuzeigen, welche Argumente für den nächsten Auftrag verfügbar sind.
-
In einer Ausführungsform kann der Offset in den Gruppenkoordinaten (Positionswinkel) zum Erzeugen eines Index verwendet werden. Jedem Element in einem durchsuchbaren Bereich kann, wenn konfiguriert, eine andere ID zugewiesen werden, die um den Index von der Basis-ID des durchsuchbaren Bereichs versetzt ist. Das Ergebnis ist eine Element-ID und ein Offsetwert. Es gibt separate Bestimmungen für die Modifikation entweder der Antwort- (z. B. haptisch) oder der Element-ID - so dass ein Gruppenelement eine einzelne Element-ID, aber mehrere Antwort-IDs zurückgeben kann, und ein anderes eine Antwort-ID für eine Reihe von verschiedenen Elementen zurückgeben kann.
-
Die Suchaufträge auf Gruppenebene können in die Gruppendatensätze eingefügt, in eine Suchauftragsliste eingefügt oder in einen Zwischendatensatz eingefügt werden. Sobald die Suchaufträge auf Gruppenebene abgeschlossen sind, wird in Vorgang 412 der Zwischensuchbaum zurückgegeben.
-
Obwohl nicht in 4 veranschaulicht, können in einer Ausführungsform Umgebungsvariablen für jeden Auftrag festgelegt werden, die gegebenenfalls angeben, was zurückgegeben wird, wenn der Auftrag ausgeführt wird, ein Erfolg ist und der letzte Auftrag ist. Als nicht einschränkendes Beispiel kann eine Umgebungsvariable eine haptische ID sein, Werte, die steuern, wie die Element-ID und die haptische ID für ein Element innerhalb einer Gruppenform geändert werden, usw. Es können auch Umweltmerker gesetzt werden, die die Daten angeben, die zusammen mit der nächsten Auftragsbeschreibung gesendet werden sollen. Durch die Verwendung bestimmter Einschränkungen und der richtigen Umgebungsvariablen kann eine Definition, z. B. eines Kreises, von 7 auf 2 Bytes reduziert werden.
-
5 veranschaulicht eine Ausführungsform eines Optimierungsprozesses 500, der am Zwischensuchbaum durchgeführt wird. In Vorgang 504 sind alle Elemente nach gemeinsamen Merkmalen gruppiert. Beispiele für gemeinsame Merkmale sind der Elementtyp, die Position in einer Schicht, die Position relativ zu einem anderen Element in einem anderen Schicht (z. B. alle hinter dem gleichen Element), eine Anzeigegruppe, eine Form oder mehr. In einer Ausführungsform können gemeinsame Merkmale ausgewählt werden, um einen Suchprozess zu optimieren. Wenn beispielsweise Elemente nach Schicht-Position gruppiert werden, wobei die Elemente auf der obersten Schicht oben im Suchbaum stehen, werden diese zuerst durchsucht. Als ein weiteres Beispiel ermöglicht die Gruppierung nach Anzeigegruppe in einer Anwendung, in der es ein „Paging“ gibt (d. h. Schichten einer Benutzeroberfläche können durchsucht werden, um Schichten darunter freizulegen oder eine Schicht über eine anderen Schicht zu ziehen), die Steuerung aller angezeigten Elemente mit einem einzigen Steuerelement - z. B. Suche nach allen Elementen in einer Anzeigegruppe, Änderungen an den Elementen, die auf die Steuereinstellungen reagieren, Ein- und Ausschalten aller Elemente in einer Anzeigegruppe, usw. In verschiedenen Ausführungsformen können Kennungen verwendet werden, um Gruppen zu identifizieren, die nach gemeinsamen Merkmalen organisiert sind, z.B. Schicht-IDs, Positions-IDs, Form-IDs, usw.
-
In Vorgang 506 werden Suchaufträge für jedes Element in den Suchbaum eingefügt und in einen Zwischenbaum für Suchaufträge aufgeteilt. In Vorgang 508 wird der Zwischenbaum der Suchaufträge neu geordnet, um sicherzustellen, dass für jeden Auftrag ein einziger Durchlauf durchgeführt wird. In Vorgang 510 werden redundante oder ineffiziente Suchaufträge eliminiert. In Vorgang 512 wird der optimierte Suchauftragsbaum zurückgegeben.
-
6 veranschaulicht eine Ausführungsform eines Prozesses 600 zum Erzeugen einer Suchauftragsliste. In Vorgang 602 werden die Klassenobjekte im Suchauftragsbaum geladen und in Vorgang 604 aus den Klassenobjekten Anweisungswörter (d. h. Suchaufträge) erstellt und die Anweisungswörter (d. h. Suchaufträge) in eine Suchauftragsliste eingefügt. In der in 6 dargestellten Ausführungsform schließt das Anweisungswort ein Auftragscodefeld und ein Sprungfeld ein. In einer Ausführungsform schließt das Anweisungswort ein Datenfeld ein. Jeder Fehler (d. h. das Element ist anders) und jede Aufteilung erfordert einen Sprung zu einer anderen Anweisung, es sei denn, der nächste Auftrag folgt unmittelbar auf den aktuellen Auftrag im Speicher. In Vorgang 606 werden die Auftragscodes in das Auftragscodefeld und in Vorgang 608 die Sprungwerte in das Sprungfeld eingefügt.
-
In einigen Ausführungsformen werden einige oder alle der Sprungwerte nicht eingefügt, bis alle Aufträge in die Suchauftragsliste eingefügt sind. In weiteren Ausführungsformen können Sprungwerte aus dem Suchauftragsbaum abgeleitet werden.
-
In Vorgang 610 werden die verschiedenen Aufträge der Suchauftragsliste im Speicher zu einer konditionierten Suchauftragsliste verknüpft, die, wenn sich alle Objekte in der Liste befinden (Vorgang 612), vom Prozess in Vorgang 614 zurückgegeben wird. Die Suchauftragsliste und der Suchbaum können im Speicher gespeichert werden.
-
Die Auftragsanweisungen können nach Containergrößenbeschränkungen (d. h. Bytebeschränkungen) variieren, die in der jeweiligen Umgebung, in der die Suchauftragsliste implementiert wird, verfügbar sind. In einer Ausführungsform können die Daten, die jeder Auftragsanweisung zugeordnet sind, je nach Systemanforderungen variieren, einschließlich der Anforderungen an die Anweisungsschnittstelle (8-Bit, 12-Bit, 16-Bit, usw.), den verfügbaren Speicher usw. Als nicht einschränkendes Beispiel kann eine Anweisung zur Suche innerhalb eines 8-seitigen polygonförmigen UI-Elements mit nur x- und y-Koordinatendaten und der Anzahl der Seiten ausgeführt werden. Es können jedoch zusätzliche Daten hinzugefügt werden, wenn die Anweisungsschnittstelle und andere Speicheranforderungen dies zulassen.
-
7 veranschaulicht einen Suchprozess zum Bestimmen, ob eine Berührung innerhalb eines UI-Elements aufgetreten ist, gemäß einer Ausführungsform der Offenbarung. Die Suche im Suchbaum erfolgt über die bereitgestellten Daten und die Suchauftragsliste. In Vorgang 702 wird die ausführbare Anweisung für jeden Auftrag auf der Schnittstelle des Prozessors sequentiell mit den Nutzlastdaten für jeden Auftrag bereitgestellt und in Vorgang 704 ausgeführt. Während der Suche im Suchbaum wird in Vorgang 706 bestimmt, ob die Berührung innerhalb eines UI-Elements erfolgte, und das Ergebnis jedes Auftrags ist ein wahr/falsch, Erfolg/Fehler, das anzeigt, ob die Berührung innerhalb eines UI-Elements erfolgte. In Vorgang 708 werden die nächste Auftragsanweisung und die zugehörigen Daten geladen und vom Prozessor empfangen, als Reaktion darauf, dass das Ergebnis des aktuellen Auftrags ein Erfolg ist. Das heißt, wenn das Ergebnis von Vorgang 706 ein Erfolg ist, wird der nächste Auftrag in der Auftragsliste ausgeführt.
-
Wenn das Ergebnis ein Fehler ist, werden eine alternative Auftragsanweisung und die zugehörigen Daten geladen und vom Prozessor als Reaktion auf das Ergebnis empfangen. Wenn es einen alternativen Auftrag gibt (Vorgang 714), dann wird der alternative Auftragsort in Vorgang 716 bereitgestellt und der Prozess kehrt zu Vorgang 702 zurück, und der Auftrag wird von dem alternativen Standort für den Prozessor geladen.
-
Wenn die Suche abgeschlossen ist, wird das UI-Element entweder gefunden oder nicht gefunden. Wird das UI-Element gefunden, wird in Vorgang 710 ein Ergebnis „gefunden“ zurückgegeben, und in Vorgang 712 werden die ID für dieses Element sowie alle Umgebungseinstellungen/ Ansprechverhaltensparameter zurückgegeben. Wird der Vorgang nicht gefunden, wird in Vorgang 720 ein Ergebnis „nicht gefunden“ zurückgegeben.
-
In einer Ausführungsform kann der in 7 dargestellte Suchprozess eine Firmware-Anwendung sein, die an einem Touchprozessor (Mikrocontroller) ausgeführt wird. Der Touchprozessor kann einen oder mehrere Suchaufträge, die durch den Suchprozess ausgeführt werden, in einem Flash-Speicher speichern. In einer Ausführungsform können Suchaufträge in einem RAM gespeichert werden, das einer Anzeigesteuerung zugeordnet ist, und die Suchaufträge können dem Touchprozessor während eines Einrichtungs- oder Bereitstellungsprozesses bereitgestellt und für den Suchprozess zugänglich gehalten werden.
-
Die Erfinder verstehen nun, dass die beschriebenen Ausführungsformen gegenüber alternativen Ansätzen mehrere Vorteile bieten. Der Speicherbedarf wird deutlich reduziert - bis zu 50 % gegenüber der linearen Suche, dem reinen Raster-Verfahren oder dem reinen Suchbaumverfahren; und immer noch eine Verbesserung gegenüber Kombinationen der Raster-/Baumverfahren. Dies liegt teilweise daran, dass die Anzahl der durchgeführten Suchvorgänge verringert wird. Da die Anzahl der Suchvorgänge reduziert wird, sind die Antwortzyklen deutlich kürzer als bei alternativen Ansätzen (einschließlich konventioneller Ansätze). So wurden beispielsweise auf einer 1200×1200 kontaktempfindlichen GUI Zykluszeiten von weniger als 36 µs erreicht, verglichen mit alternativen Ansätzen, die zwischen 72 µs (reines Raster) und 1200 µs (linear) lagen. Für einen Benutzer besteht der Unterschied in einer viel reaktionsschnelleren Berührungsschnittstelle. Für einen Designer kann die Berührungsschnittstelle anspruchsvoller sein, da sie viele Elemente mit unterschiedlichen Antworteigenschaften aufweist.
-
Die 8, 9 und 10 veranschaulichen Prozesse, die mit Bezug auf die 2 bis 7 in Verbindung mit einer GUI für eine Radioanwendung veranschaulicht und beschrieben werden, als ein nicht einschränkendes Beispiel für eine GUI, die mit Ausführungsformen der Offenbarung verwendet werden kann. Die in 8 veranschaulichte Radio-GUI 810 schließt acht Arten von UI-Elementen und insgesamt 144 UI-Elemente ein, die in Tabelle 820 zusammengefasst sind.
-
9 zeigt UI-Elemente, die nach den unter Bezugnahme auf 3 beschriebenen Verfahren gruppiert sind. In dieser Ausführungsform weisen die gruppierten Elemente 832, 834, 836, 838, 840, 842, 844, 846 und 848 ähnliche Berührungsmerkmale (z. B. haptische Rückmeldung als Reaktion auf eine Berührung), physische Positionen auf dem Bildschirm und Formen auf.
-
10 zeigt ein Beispiel für eine Baumstruktur 850, die mit dem Baum- und Rasterverfahren gebildet wurde, die mit Bezug auf 4 beschrieben wurde.
-
11 veranschaulicht ein System 1000 und das zugehörige Tool 1040, das die hierin beschriebenen Suchverfahren gemäß einer Ausführungsform der Offenbarung implementieren kann. Das System 1000 schließt die Mikrocontroller-Firmware 1010 mit darauf befindlichen GUI-Elementsuchfunktionen 1012 und Antwortbestimmung 1014 für GUI-Elemente ein. Der Prozessor, der die Mikrocontroller-Firmware 1010 ausführt, ist mit einem Antworttreiber 1018 gekoppelt, der Steuersignale von der Mikrocontroller-Firmware 1010 empfangen und wiederum eine Antwort in einer kontaktempfindlichen Schnittstelle 1020 steuern kann. In einer Ausführungsform ist die kontaktempfindliche Schnittstelle 1020 ein Touchscreen mit einem oder mehreren Aktoren, und der Antworttreiber 1018 ist ein haptischer Treiber, der konfiguriert ist, um Steuersignale zu erzeugen, die die Aktoren anregen. Die Sensorschaltung 1022 kann ein oder mehrere Messsignale als Reaktion auf einen Kontakt an der kontaktempfindlichen Schnittstelle 1020 erzeugen. Die Kontaktmessung und -verarbeitung 1016 kann Kontaktinformationen (z. B. Ort, Art usw.) bestimmen und der Antwortbestimmung 1014 und den GUI-Elementsuchfunktionen 1012 als Reaktion auf die Messsignale der Sensorschaltung 1022 bereitstellen. Die am Antworttreiber 1018 empfangenen Steuersignale können zumindest teilweise auf den Kontaktinformationen basieren, so dass beispielsweise eine haptische Rückmeldung an der richtigen Stelle auf der kontaktempfindlichen Schnittstelle 1020 erfolgt.
-
Ebenfalls in 11 veranschaulicht ist ein Tool 1040, das einen Prozess zur Erstellung einer Suchliste implementieren und eine Auftragsliste für die Elementsuche sowie Informationen zur Antwort auf Elemente erzeugen kann, entsprechend einer Ausführungsform der Offenbarung. Ein Anwendungsprogramm zur Erzeugung von Suchlisten 1044 ist konfiguriert, um die mit Bezug auf die 2 bis 6 beschriebenen Prozesse in eine XAML-Datei für GUI-Definitionen 1042 zu implementieren, um eine Aufgabenliste zur Elementsuche zu erzeugen. Die Anwendung 1044 kann die Elementsuchauftragsliste 1046 und die Elementantwortinformation 1048 als Datei an die Mikrocontroller-Firmware 1010 übergeben. In einer Ausführungsform kann sie auch einen Suchbaum bereitstellen, obwohl dies in die Suchaufträge integriert werden kann.
-
In einer oder mehreren Ausführungsformen der Firmware kann die Firmware Kraftmess- und Verarbeitungsfunktionen einschließen, um Kraftniveauinformationen über ein Berührungsereignis zu integrieren. In diesen Ausführungsformen können die Kraftniveauinformationen und die GUI-Element-ID sowie die von der Elementsuchfunktion zurückgegebenen haptischen Antwortdetails von einem haptischen Sequenzer verwendet werden, um haptische Steuersignale als Reaktion auf das Kraftniveau, die GUI-Element-ID und die haptischen Antwortdetails zu erzeugen.
-
Das System von 11 kann in verschiedene Konsumgüter, Haushaltsgeräte und Maschinen integriert werden, die Berührungsschnittstellen und Berührungsbedienfelder verwenden, einschließlich Automobile.
-
12 veranschaulicht eine vereinfachte Version einer Radio-GUI 1210 für ein Automobil-Touch-Bedienfeld. Drei Bereiche werden spezifisch benannt, Bereich 1, Bereich 2, und Bereich 3. Bereich 1 ist eine Taste 1212 in der Mitte eines Drehreglers 1214 zur Temperaturregelung. Haptisches Feedback gemäß einer haptischen Profil-ID #4 (Vibration) wird als Reaktion auf ein Berührungsereignis mit einem starken Kraftniveau bereitgestellt. Bereich 2 ist der Drehregler 1214, auch für die Temperaturregelung. Haptisches Feedback gemäß einer haptischen Profil-ID #3 (Reibung) wird als Reaktion auf ein Berührungsereignis mit einem leichten Kraftniveau bereitgestellt. Schließlich ist Bereich 3 eine Taste 1216, um ein Menü für die Fahrzeugeinstellungen aufzurufen. Haptisches Feedback gemäß der haptischen Profil-ID #2 (Klick) wird als Reaktion auf ein Berührungsereignis mit einem starken Kraftniveau bereitgestellt, und haptisches Feedback gemäß der haptischen Profil-ID #3 (Reibung) wird als Reaktion auf eine Berührung mit einem leichten Kraftniveau bereitgestellt.
-
13 veranschaulicht das System von 11 und die GUI von 12, die in Fahrzeugsteuerungen integriert sind, die von einer Haupteinheit 1310 gesteuert werden, und haptische Effekte in der Haupteinheit 1310 werden von einem Mikrocontroller gesteuert. In dieser Ausführungsform sind die Berührungssteuerung 1320 und die Formsuchfunktionen 1324 Teil eines Fahrzeugsubsystems, bei dem eine Fahrzeug-Haupteinheit 1310 auf Berührungen mit haptischem Feedback reagiert, ohne direkt in die Verarbeitungsschaltung der Haupteinheit einzugreifen. Die Berührungssteuerung 1320 ist konfiguriert, um berührte Bildschirmtasten von den Berührungspositionen aus zu identifizieren und Informationen über das Kraftniveau zu erhalten und eine Berührungszustandsmaschine mit Tastenposition zu betreiben, um den haptischen Effekt auszulösen.
-
In dieser Ausführungsform sind die Kraftverarbeitung 1326 und die Berührungsverarbeitung 1322 in eine Steuerkomponente integriert, und der Hauptbildschirm 1332 enthält die Definitionen (Bildschirmanzeige-Design 1336 und Suchbaumdefinitionen 1338) einer Reihe von geometrischen Objektbeschreibungen, die jeweils erforderlich sind, um eine Reihe von haptischen Effekten hervorzurufen, die direkt durch die Berührungssteuerung 1320 aktiviert und durch die haptische Vorrichtung 1350 ausgeführt werden.
-
So empfängt die Berührungssteuerung 1320 beispielsweise nach einer Berührung der Anzeige 1330 Kraftinformationen und Berührungsinformationen aus der Kraftverarbeitung 1326 und der Berührungsverarbeitung 1322. Die Information kann eine Kraftmessung und eine Berührungsposition auf der Anzeige einschließen. Die Formsuche 1324 liefert Informationen über das UI-Element, die dem UI-Element, falls vorhanden, entsprechen, das auf der Anzeige 1330 angezeigt wird, auf der die Berührung erfolgte. Wenn es kein UI-Element gibt, das der Position auf der Anzeige entspricht, liefert die Formsuche 1324 ein Null-Suchergebnis. Bei der Suche nach den Forminformationen eines UI-Elements kann die Formsuche 1324 die in der Haupteinheit 1310 gespeicherten Definitionen verwenden. In einer Ausführungsform kann die Formsuche 1324 die Definitionen während eines Bereitstellungsprozesses empfangen, z. B. wenn die Berührungssteuerung 1320 in die Haupteinheit 1310 integriert ist, oder wenn die Haupteinheit 1310 eingeschaltet ist. Wenn die Formsuche 1324 ein UI-Element identifiziert, werden die haptischen Informationen von der haptischen Steuerung 1328 verwendet, um eine haptische Aktivierungsnachricht an die haptische Vorrichtung 1350 zu senden, die einen haptischen Effekt und eine Position für den haptischen Effekt einschließt. Die haptische Aktivierungsnachricht kann einen Parameter enthalten, der den Grad der haptischen Wirkung anzeigt (z. B. schwach, mittel, stark). Die haptische Vorrichtung 1350 sucht nach der Definition des haptischen Effekts in der haptischen Bibliothek 1352, die auf der haptischen Vorrichtung gespeichert ist. Die haptische Vorrichtung 1350 steuert dann Aktoren an der Anzeige 1330 so, dass der spezifische Bereich der Anzeige den gewünschten haptischen Effekt aufweist. Insbesondere können verschiedene haptische Vorrichtungen unterschiedliche haptische Bibliotheken aufweisen, so dass die Effekte zwischen den Vorrichtungen unterschiedlich sein können.
-
In dieser Ausführungsform ist die GUI-Definition eine XAML-Datei, die eine Xml-Implementierung für grafische Benutzeroberflächen ist. Die XAML-Datei enthält eine hierarchisch strukturierte Liste von Zeichenanweisungen für die Bildschirmelemente der UIs der GUI. In der XAML-Datei gibt es Tags, die mit GUI-Elementen verknüpft sind. Zum Beispiel sind „Breite“, „Höhe“ und „horizontale Ausrichtung“ alles gültige Tags für bestimmte Elemente.
-
Viele der in dieser Spezifikation beschriebenen Funktionseinheiten können als Module, Threads oder andere Segregationen von Programmiercode veranschaulicht, beschrieben oder bezeichnet werden, um deren Implementierungsunabhängigkeit deutlicher hervorzuheben. Module können in der einen oder anderen Form mindestens teilweise in Hardware implementiert sein. Zum Beispiel kann ein Modul als Hardwareschaltung implementiert werden, die benutzerdefinierte VLSI-Schaltungen oder Gate-Arrays, handelsübliche Halbleiter, wie etwa Logikchips, Transistoren oder andere diskrete Komponenten umfasst. Ein Modul kann auch in programmierbaren Hardwarevorrichtungen implementiert sein, wie feldprogrammierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logikvorrichtungen oder dergleichen.
-
Module können auch unter Verwendung von Software oder Firmware, die auf einer physischen Speichervorrichtung (z. B. einem computerlesbaren Speichermedium) gespeichert ist, im Speicher oder einer Kombination davon zur Ausführung durch verschiedene Arten von Prozessoren implementiert werden.
-
Ein identifiziertes Modul aus ausführbarem Code kann zum Beispiel einen oder mehrere physische oder logische Blöcke von Computeranweisungen umfassen, die zum Beispiel als Thread, Objekt, Prozedur oder Funktion organisiert sein können. Nichtsdestotrotz müssen die ausführbaren Dateien eines identifizierten Moduls nicht physisch zusammen angeordnet sein, sondern können unterschiedliche Anweisungen umfassen, die an verschiedenen Orten gespeichert sind, die, wenn sie logisch zusammengefügt werden, das Modul umfassen und den angegebenen Zweck für das Modul erreichen.
-
Tatsächlich kann ein Modul aus ausführbarem Code eine einzelne Anweisung oder viele Anweisungen sein und kann sogar über mehrere verschiedene Codesegmente, zwischen verschiedenen Programmen und über mehrere Speichervorrichtungen verteilt sein. In ähnlicher Weise können Betriebsdaten hierin innerhalb von Modulen identifiziert und veranschaulicht sein und können in irgendeiner geeigneten Form verkörpert und innerhalb irgendeiner geeigneten Art von Datenstruktur organisiert sein. Die Betriebsdaten können als ein einziger Datensatz gesammelt oder über verschiedene Orte, einschließlich über verschiedene Speichervorrichtungen, verteilt sein und können mindestens teilweise lediglich als elektronische Signale in einem System oder Netzwerk vorhanden sein. Wenn ein Modul oder Abschnitte eines Moduls in Software implementiert sind, werden die Softwareabschnitte auf einem oder mehreren physischen Vorrichtungen gespeichert, die hierin als computerlesbare Medien bezeichnet werden.
-
In einigen Ausführungsformen sind die Softwareabschnitte in einem nichtflüchtigen Zustand gespeichert, sodass die Softwareabschnitte oder Darstellungen davon für einen Zeitraum an demselben physischen Ort verbleiben. Zusätzlich sind in einigen Ausführungsformen die Softwareabschnitte in einer oder mehreren nichtflüchtigen Speichervorrichtungen gespeichert, die Hardwareelemente einschließen, die nichtflüchtige Zustände und/oder Signale speichern können, die für die Softwareabschnitte repräsentativ sind, obwohl andere Abschnitte der nichtflüchtigen Speichervorrichtungen in der Lage sein können, die Signale zu ändern und/oder zu übertragen. Beispiele für nichtflüchtige Speichervorrichtungen sind Flash-Speicher und Direktzugriffsspeicher (RAM). Ein anderes Beispiel einer nichtflüchtigen Speichervorrichtung schließt einen Nur-Lese-Speicher (ROM) ein, der für einen Zeitraum Signale und/oder Zustände speichern kann, die für die Softwareabschnitte repräsentativ sind. Die Fähigkeit, die Signale und/oder Zustände zu speichern, wird jedoch nicht durch weitere Funktionalität zum Übertragen von Signalen beeinträchtigt, die den gespeicherten Signalen und/oder Zuständen entsprechen oder diese repräsentieren. Zum Beispiel kann ein Prozessor auf den ROM zugreifen, um Signale zu erhalten, die für die gespeicherten Signale und/oder Zustände repräsentativ sind, um die entsprechenden Softwareanweisungen auszuführen.
-
Auf praktischer Ebene kann die Software, die es einem Computersystem ermöglicht, die hierin beschriebenen Vorgänge durchzuführen, auf einem beliebigen Medium aus einer Vielzahl von Medien bereitgestellt werden. Ferner sind die tatsächliche Umsetzung des Ansatzes und der Funktionsweise der Erfindung tatsächlich Anweisungen, die in einer Computersprache verfasst sind. Solche computersprachlichen Anweisungen, wenn sie von einem Computer ausgeführt werden, bewirken, dass der Computer gemäß dem jeweiligen Inhalt der Anweisungen handelt. Ferner kann die Software, die es einem Computersystem ermöglicht, gemäß der Erfindung zu handeln, in einer beliebigen Anzahl von Formen bereitgestellt werden, einschließlich, ohne darauf beschränkt zu sein, ursprünglicher Quellcode, Assemblercode, Objektcode, Maschinensprache, komprimierte oder verschlüsselte Versionen des Vorstehenden und alle anderen Äquivalente.
-
Der Durchschnittsfachmann wird verstehen, dass „Medien“ oder „computerlesbare Medien“, wie sie hier verwendet werden, eine Diskette, ein Band, eine CD, eine integrierte Schaltung, eine CD-ROM, eine CD, DVD, BLU-RAY, eine Kassette, einen Flash-Speicher, einen Speicherstick oder eine Speicherkarte oder jedes andere zerstörungsfreie Speichermedium einschließen können, das von Computern verwendet werden kann, einschließlich derer, die jetzt bekannt sind oder später entwickelt werden.
-
Obwohl die Ermöglichungssoftware „auf eine Disk geschrieben“, „in einer integrierten Schaltung verkörpert“, durch eine Kommunikationsschaltung „übertragen“, „in einem Speicherchip gespeichert“ oder „in einen Cache-Speicher geladen“ werden kann, ist zu beachten, dass die Software für die Zwecke dieser Anwendung einfach als „in“ oder „auf“ dem computerlesbaren Medium bezeichnet wird. Daher sollen die Begriffe „in“ oder „auf“ die oben genannten und alle gleichwertigen und möglichen Möglichkeiten umfassen, wie Software mit einem computerlesbaren Medium verknüpft werden kann.
-
Der Einfachheit halber wird daher unter dem Begriff „Computerprogrammprodukt“ ein computerlesbares Medium im vorstehend definierten Sinne verstanden, das jede Form von Software enthält, die es einem Computersystem ermöglicht, gemäß einer Ausführungsform der Erfindung zu arbeiten.
-
Während die vorliegende Offenbarung hierin in Bezug auf bestimmte veranschaulichte Ausführungsformen beschrieben wurde, werden Fachleute erkennen und anerkennen, dass die vorliegende Erfindung nicht darauf beschränkt ist. Vielmehr können viele Ergänzungen, Löschungen und Modifikationen an den dargestellten und beschriebenen Ausführungsformen vorgenommen werden, ohne vom Umfang der Erfindung abzuweichen, wie nachfolgend zusammen mit ihren rechtlichen Äquivalenten beansprucht wird. Zusätzlich können Merkmale von einer Ausführungsform mit Merkmalen einer anderen Ausführungsform kombiniert werden, während sie immer noch im Schutzumfang der Erfindung enthalten sind, wie er von den Erfindern in Betracht gezogen wird.