-
VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht die Priorität gegenüber (a) der vorläufigen
US-Patentanmeldung Nr. 62 / 576,383 , eingereicht am 24. Oktober 2017, und (b) der vorläufigen
US-Patentanmeldung Nr. 62 / 576,563 der USA, eingereicht am 24. Oktober 2017, deren gesamter Anmeldungsinhalt hiermit für alle Zwecke durch Bezugnahme aufgenommen wird.
-
TECHNISCHEN GEBIET DER ERFINDUNG
-
Die vorliegende Offenbarung bezieht sich auf berührungsempfindliche Benutzerschnittstellen, z. B. Touchscreens, und insbesondere auf eine berührungsempfindliche Benutzerschnittstelle unter Verwendung einer Anordnung konfigurierbarer virtueller Widgets.
-
HINTERGRUND DER ERFINDUNG
-
Touch-Schnittstellen mit Touch-Sensing werden für eine Vielzahl von Anwendungen verwendet, beispielsweise für Tablet-Computer, PCs, Smartphones und andere Verbraucherprodukte. Sie werden auch als Bedienfelder für Automobile, Vorrichtungen (z. B. Kühlschränke, Öfen, Waschmaschinen / Trockner usw.), Heizungs- und Klimaanlagensteuerungssysteme, Sicherheitssysteme, Geldautomaten (ATMs) verwendet. Eine Berührungsschnittstelle in diesen Anwendungen kann beispielsweise ein Berührungspad sein oder einen Bildschirm und eine grafische Benutzerschnittstelle (GUI) beinhalten.
-
ZUSAMMENFASSUNG
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf ein Verfahren zum Erstellen von Anweisungen zum Suchen nach einem Element einer grafischen Benutzerschnittstelle (GUI), die auf einem berührungsempfindlichen Bildschirm angezeigt wird, z. B. einem Touchscreen unter Verwendung einer herkömmlichen gitterartigen Berührungspositionsrückmeldung. Das Verfahren weist das Parsen einer GUI-Definition und das Identifizieren von Elementen der GUI auf, die auf das Parsen ansprechen; Erstellen eines Datensatzes mit Einträgen identifizierter Elemente; Zuordnen der identifizierten Elemente zu Gruppen ähnlich angeordneter Elemente; Anordnen des Datensatzes identifizierter Elemente in einer baumartigen Struktur; Zusammenfassen identifizierter Elemente in denselben Gruppen zu einem einzigen Blatt in der baumartigen Struktur; Optimierung der baumartigen Struktur; und Erstellen einer Suchanweisungsliste, die auf die baumartige Struktur reagiert.
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf ein Computerprogrammprodukt um einen Computer in die Lage zu versetzen, ausführbare Anweisungen zum Suchen nach einem Element einer grafischen Benutzerschnittstelle (GUI) zu erstellen. Das Programmprodukt kann ein computerlesbares Medium und Softwareanweisungen auf dem computerlesbaren Medium beinhalten. Die Softwareanweisungen auf dem computerlesbaren Medium sind so angepasst, dass der Computer folgende Vorgänge ausführen kann: Analysieren einer GUI-Definition und Identifizieren von Elementen der GUI, die auf die analysierte GUI-Definition ansprechen; Erstellen eines Datensatzes mit Einträgen der identifizierten Elemente; Zuordnen der identifizierten Elemente zu Gruppen ähnlich angeordneter Elemente; Anordnen des Datensatzes identifizierter Elemente in einer baumartigen Struktur; Zusammenfassen identifizierter Elemente in denselben Gruppen zu einem einzigen Blatt in der baumartigen Struktur; Optimierung der baumartigen Struktur; und Erstellen einer Liste von Suchanweisungen, die auf die baumartige Struktur ansprechen.
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf einen Mikrocontroller, der Funktionsfähig mit einem Touchscreen gekoppelt ist, der konfiguriert ist, um eine grafische Benutzerschnittstelle (GUI) anzuzeigen. Der Mikrocontroller beinhaltet zumindest einen Prozessor und einen oder mehrere ausführbare Anweisungen, die auf einem nicht flüchtigen Speichermedium gespeichert sind. Die Anweisungen werden, wenn sie vom Prozessor ausgeführt werden, so angepasst, dass der Prozessor: einen Ort einer erfassten Berührung auf einem Touchscreen bestimmen kann; und ein GUI-Element identifiziert, das dem Ort der Berührung zugeordnet ist, der der erfassten Berührung entspricht.
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf ein Verfahren zum Identifizieren eines Elements einer grafischen Benutzerschnittstelle (GUI), die auf einem Touchscreen angezeigt wird. Das Verfahren weist das Bestimmen eines Ortes einer erfassten Berührung auf einem Touchscreen auf; Ausführen eines oder mehrerer Suchbefehle als Reaktion auf den Ort, wobei jeder Suchbefehl des einen oder der mehreren Suchbefehle einem GUI-Element entspricht und bei Ausführung angepasst wird, um ein Suchergebnis zurückzugeben; und Identifizieren eines GUI-Elements, das auf das Suchergebnis reagiert.
-
Einige Ausführungsformen der Offenbarung beziehen sich im Allgemeinen auf ein System. Das System weist ein Anzeige-Subsystem und ein Touch-Subsystem auf. Das Anzeigesubsystem ist zur Steuerung einer Anzeige konfiguriert. Das Touch-Subsystem umfasst einen Touch-Sensor und einen Touch-Controller. Der Touch-Controller ist konfiguriert, um einen Ort einer am Touch-Sensor erfassten Berührung zu bestimmen; einen oder mehrere Suchbefehle auszuführen, die auf den Ort und einen Suchbaum ansprechen, wobei jeder Suchbefehl des einen oder der mehreren Suchbefehle einem GUI-Element entspricht und bei Ausführung angepasst ist, um ein Suchergebnis zurückzugeben; ein GUI-Element zu identifizieren, das auf das Suchergebnis reagiert; und eine haptische Steuerungsnachricht zu erzeugen, die auf das identifizierte GUI-Element anspricht.
-
Einige Ausführungsformen der Offenbarung weisen ein kontaktempfindliches GUI auf, das virtuelle Widgets verwendet, die jeweils eine Zusammenstellung von Formen (z. B. einschließlich eines oder mehrerer aktiver UI-Elemente) aufweisen, die in einem darstellbaren GUI-Bildschirm beinhaltet sind. Ein virtuelles Widget kann beispielsweise eine definierte Zusammenstellung mehrerer Instanzen und / oder Typen von virtuellen Schaltflächen, Schiebereglern, Reglern, Drehknöpfen usw. aufweisen. Als ein anderes Beispiel kann ein virtuelles Widget eine definierte Zusammenstellung aktiver Elemente aufweisen, die gemeinsam eine Schnittstelle zur Steuerung einer definierten Funktion definieren.
-
In einigen Ausführungsformen können virtuelle Widgets auf dem Touchscreen angezeigt werden, in einigen Ausführungsformen existieren sie jedoch nur im Kontext eines Touchscreen-Konfigurationsmoduls / -prozesses und auf der Touchscreen-Anzeige. Virtuelle Widgets können an eine Haupteinheit berichten. Die Verwendung virtueller Widgets kann die Komplexität der physischen Schnittstelle der berührungsempfindlichen Benutzeroberfläche verringern. Beispielsweise kann die Verwendung von virtuellen Widgets den Overhead auf der Haupteinheit zur Verarbeitung von Berührungspositionen verringern und erfordert möglicherweise keine separate Hardware oder Elektronik für physische Drehregler, Schieberegler usw., z. B. für Heizungssteuerungen, Radiosteuerungen oder andere Arten von Steuerungen.
-
Einige Ausführungsformen stellen Systeme und Verfahren zum Definieren von Bereichen eines Touchscreens (z. B. Bereiche auf einer konfigurierten Bildschirmseite) bereit, die als virtuelle Widgets (z. B. Schaltflächen, Schieberegler, Drehknöpfen usw.) betrieben werden können. Wenn eine Berührung auf dem Touchscreen erkannt wird, kann ein Touch-Controller eine Position oder einen Zustand des Widgets bestimmen, die der Benutzerberührung entsprechen (z. B. die lineare Position eines virtuellen Schiebereglers oder die Drehposition eines virtuellen Zifferblatts, die der erkannten Berührungsposition entspricht) und meldet solche Positions- / Statusinformationen in einer „Widget-Nachricht“ an die Haupteinheit, anstatt oder zusätzlich zu einer „Touch-Nachricht“, die die Position der Berührung auf dem Touchscreen angibt. Widget-Nachrichten können beispielsweise eine vom Benutzer ausgewählte Position, Drehung, den Status „berührt“ und / oder die Anzahl der erkannten Berührungen eines jeweiligen Widgets anzeigen, die dem erkannten Berührungsort, der erkannten Kraft und / oder einem anderen messbaren Aspekt der auf dem Touchscreen erkannten Berührung entsprechen. In einer Ausführungsform können Widget-Nachrichten auch einen berührt / unberührt Zustand eines Satzes von Widgets, z. B. Schaltflächen oder Tasten, melden.
-
In einigen Ausführungsformen oder Situationen kann eine Aktion des Berührens einer virtuellen Schaltfläche / eines virtuellen Widgets dazu führen, dass eine „Seite“ aktualisiert oder Schaltflächen auf dem Bildschirm auf eine Weise aktiviert / deaktiviert werden, die für zukünftige Tastendrücke bestehen bleibt (z. B. durch Selbständerung des Haupteinheit-Schnittstelle), die zu diesem Zeitpunkt (abhängig von der Ausführungsform oder Konfiguration) einen Widget-Bericht an die Head-Unit senden kann oder nicht, aber dieselben Stellen auf dem Touchscreen können danach andere Ergebnisse liefern, z. B. das Umschalten von Radio auf Heizungssteuerung. Infolgedessen muss die Haupteinheit nur die Anzeige aktualisieren, um sie an das ausgewählte Seitenbild anzupassen.
-
Zusätzlich kann in einigen Ausführungsformen, wenn die Touchscreen-Steuerung so eingestellt ist, dass sie Seiten im Bildschirmspeicher steuert, die Steuerung einen Prozess ausführen, um Seiten im Bildschirmspeicher über SPI oder eine andere verfügbare GPIO-Schnittstelle auszuwählen, um einer relevanten Widget-Seiten-ID zu entsprechen. In einer solchen Konfiguration kann der Touchscreen-Controller Bildschirmseiten als Ganzes auswählen und anzeigen, anstatt Formen auf dem Bildschirm zu zeichnen. Die verschiedenen Bildschirmseiten können beispielsweise nur die Beschriftungen eines definierten Satzes von Schaltflächen oder Tasten ändern. Eine solche Konfiguration kann sehr flexibel sein und Verzögerungen beim Transport von Nachrichten der Haupteinheit beseitigen und sehr reaktionsschnell sein.
-
Die Verwendung virtueller Widgets kann die erforderliche Verarbeitung einer Haupteinheit vereinfachen. Beispielsweise kann die Verwendung virtueller Widgets es einem einzelnen Bildschirmdesign ermöglichen, mehrere Anwendungen aufzuweisen. Beispielsweise kann eine Schnittstelle über eine geeignete Konfiguration jede Produktvariante handhaben.
-
Figurenliste
-
Beispielhafte Aspekte und Ausführungsformen der vorliegenden Offenbarung werden nachstehend in Verbindung mit den folgenden beigefügten Zeichnungen beschrieben:
- 1 ist ein Flussdiagramm, das den Prozess des Erzeugens und Verwendens einer Suchaufgabenliste zum Identifizieren kontaktierter UI-Elemente in einer GUI veranschaulicht;
- 2 ist ein Flussdiagramm eines Prozesses zum Erzeugen einer Suchaufgabenliste 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 zum Erzeugen eines Zwischensuchbaums gemäß einer Ausführungsform der Offenbarung;
- 5 ist ein Flussdiagramm eines Prozesses zum Erzeugen eines Suchaufgabenbaums gemäß einer Ausführungsform der Offenbarung;
- 6 ist ein Flussdiagramm eines Prozesses zum Erzeugen einer Suchaufgabenliste gemäß einer Ausführungsform der Offenbarung;
- 7 ist ein Flussdiagramm eines Suchprozesses für UI-Elemente / Formen, um zu bestimmen, ob eine Berührung innerhalb eines UI-Elements gemäß einer Ausführungsform der Offenbarung aufgetreten ist;
- 8 zeigt eine Ausführungsform einer Radio-GUI, die aus UI-Elementen besteht (verfügbar in Farbe);
- 9 zeigt die UI-Elemente der Radio-GUI von 8, gruppiert gemäß Ausführungsformen der Offenbarung (in Farbe verfügbar);
- 10A bis 10E zeigen UI-Elemente in einer Baumstruktur, die gemäß Ausführungsformen der Offenbarung gebildet wurde. (in Farbe verfügbar);
- 11 zeigt eine Ausführungsform eines Systems, das Suchaufgabenlisten beinhaltet;
- 12 zeigt eine Ausführungsform einer Radio-GUI, die Merkmale und Parameter beinhaltet, die zumindest einigen der UI-Elemente der Radio-GUI zugeordnet sind (in Farbe verfügbar);
- 13 veranschaulicht eine Ausführungsform des Systems von 11, das als Teilsystem in einer Haupteinheit eines Automobils eingebaut ist;
- 14 veranschaulicht ein beispielhaftes Touchscreen-System, das virtuelle Widgets gemäß einer beispielhaften Ausführungsform wie hierin offenbart verwendet; und
- 15 veranschaulicht eine beispielhafte Radio-Touchscreen-GUI mit einer Anordnung von virtuellen Widgets, die gemäß einer beispielhaften Ausführungsform verschiedene Gruppen von UI-Elementen beinhalten.
-
DETAILLIERTE BESCHREIBUNG
-
In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil von dieser bilden und in denen zur Veranschaulichung spezifische Beispiele von Ausführungsformen gezeigt sind, in denen die vorliegende Offenbarung praktiziert werden kann. Diese Ausführungsformen werden ausreichend detailliert beschrieben, um es einem gewöhnlichen Fachmann zu ermöglichen, die vorliegende Offenbarung zu praktizieren. Es können jedoch andere Ausführungsformen verwendet werden, und Struktur-, Material- und Prozessänderungen können vorgenommen werden, ohne vom Schutzumfang der Offenbarung abzuweichen. Die hier dargestellten Abbildungen sollen keine tatsächlichen Ansichten eines bestimmten Verfahrens, Systems, einer bestimmten Vorrichtung oder Struktur sein, sondern sind lediglich idealisierte Darstellungen, die zur Beschreibung der Ausführungsformen der vorliegenden Offenbarung verwendet werden. Die hier dargestellten Zeichnungen sind nicht unbedingt maßstabsgetreu gezeichnet. Ähnliche Strukturen oder Komponenten in den verschiedenen Zeichnungen können zur Vereinfachung des Lesens dieselbe oder eine ähnliche Nummerierung beibehalten; die Ähnlichkeit bei der Nummerierung bedeutet jedoch nicht, dass die Strukturen oder Komponenten in Größe, Zusammensetzung, Konfiguration oder anderen Eigenschaften notwendigerweise identisch sind.
-
Es versteht sich von selbst, dass die Komponenten der Ausführungsformen, wie sie hier allgemein beschrieben und in den Zeichnungen dargestellt sind, in einer Vielzahl verschiedener Konfigurationen angeordnet und konstruiert sein könnten. Somit soll die folgende Beschreibung verschiedener Ausführungsformen den Umfang der vorliegenden Offenbarung nicht einschränken, sondern ist lediglich repräsentativ für verschiedene Ausführungsformen. Während die verschiedenen Aspekte der Ausführungsformen in Zeichnungen dargestellt werden können, sind die Zeichnungen nicht notwendigerweise maßstabsgetreu gezeichnet, es sei denn, dies ist ausdrücklich angegeben.
-
Die folgende Beschreibung kann Beispiele beinhalten, die es einem Durchschnittsfachmann ermöglichen, die offenbarten Ausführungsformen zu praktizieren. Die Verwendung der Begriffe „beispielhaft“, „als Beispiel“ und „zum Beispiel“ bedeutet, dass die zugehörige Beschreibung erklärend ist, und obwohl der Umfang der Offenbarung die Beispiele und rechtlichen Äquivalente umfassen soll, beabsichtigt die Verwendung solcher Begriffe nicht, den Schutzumfang einer Ausführungsform oder dieser Offenbarung auf die angegebenen Komponenten, Schritte, Merkmale, Funktionen oder dergleichen beschränken.
-
Darüber hinaus sind die gezeigten und beschriebenen spezifischen Implementierungen nur Beispiele und sollten nicht als die einzige Möglichkeit 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 in unnötigen Details zu verschleiern. Umgekehrt sind die gezeigten und beschriebenen spezifischen Implementierungen nur beispielhaft und sollten nicht als die einzige Möglichkeit zur Implementierung der vorliegenden Offenbarung ausgelegt werden, sofern hierin nicht anders angegeben. Darüber hinaus sind Blockdefinitionen und die Aufteilung der Logik zwischen verschiedenen Blöcken beispielhaft für eine bestimmte Implementierung. Ein gewöhnlicher Fachmann wird leicht erkennen, dass die vorliegende Offenbarung durch zahlreiche andere Teillösungen ausgeübt werden kann. Zum größten Teil wurden Details bezüglich zeitlicher Überlegungen und dergleichen weggelassen, wenn solche Details nicht notwendig sind, um ein vollständiges Verständnis der vorliegenden Offenbarung zu erhalten, und innerhalb der Fähigkeiten von Personen mit gewöhnlichem Fachwissen liegen.
-
Ein gewöhnlicher Fachmann würde verstehen, dass Informationen und Signale unter Verwendung einer Vielzahl verschiedener Technologien und Techniken dargestellt werden können. Beispielsweise 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 dargestellt werden davon. Einige Zeichnungen können Signale zur Klarheit der Darstellung und Beschreibung als einzelnes Signal darstellen. Es ist für den gewöhnlichen Fachmann verständlich, dass das Signal einen Signalbus darstellen kann, wobei der Bus eine Vielzahl von Bitbreiten aufweisen kann und die vorliegende Offenbarung auf einer beliebigen Anzahl von Datensignalen einschließlich einem einzelnen Datensignal implementiert werden kann.
-
Die verschiedenen veranschaulichenden logischen Blöcke, Module und Schaltungen, die in Verbindung mit den hierin offenbarten Ausführungsformen beschrieben sind, 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 programmierbaren Logikvorrichtung, einer diskreten Gate- oder Transistorlogik, diskreten Hardwarekomponenten oder einer beliebigen Kombination davon implementiert oder ausgeführt werden, die zur Ausführung der hier beschriebenen Funktionen ausgelegt ist. Ein Allzweckprozessor (kann hier auch als Host-Prozessor oder einfach als Host bezeichnet werden) kann ein Mikroprozessor sein, aber alternativ kann der Prozessor ein beliebiger herkömmlicher Prozessor, Controller, Mikrocontroller oder eine Zustandsmaschine sein. Ein Prozessor kann auch als eine Kombination von Rechenvorrichtungen implementiert sein, wie beispielsweise eine Kombination eines DSP und eines Mikroprozessors, einer Vielzahl von Mikroprozessoren, eines oder mehrerer Mikroprozessoren in Verbindung mit einem DSP-Kern oder einer anderen solchen Konfiguration. Ein Allzweckcomputer mit einem Prozessor wird als Spezialcomputer betrachtet, während der Allzweckcomputer 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 Form eines Prozesses beschrieben werden, der als Flusschart, Flussdiagramm, Strukturdiagramm oder 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 ausgeführt werden. Außerdem kann die Reihenfolge der Handlungen geändert werden.
-
Ein Prozess kann einem Verfahren, einem Thread, einer Funktion, einer Prozedur, einer Unterroutine, einem Unterprogramm usw. entsprechen. Weiterhin können die hier offenbarten Verfahren in Hardware, Software oder beidem implementiert sein. Wenn sie in Software implementiert sind, können die Funktionen als eine oder mehrere Anweisungen oder ein Code auf computerlesbaren Medien gespeichert oder übertragen werden. Computerlesbare Medien umfassen sowohl Computerspeichermedien als auch Kommunikationsmedien, einschließlich aller Medien, die die Übertragung eines Computerprogramms von einem Ort zum anderen erleichtern.
-
Jede Bezugnahme auf ein Element hierin, das eine Bezeichnung wie „erste“, „zweite“ usw. verwendet, 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 hier als zweckmäßiges Verfahren zur Unterscheidung zwischen zwei oder mehr Elementen oder Instanzen eines Elements verwendet werden. Ein Verweis auf das erste und das zweite Element bedeutet also nicht, dass dort nur zwei Elemente verwendet werden dürfen oder dass das erste Element dem zweiten Element in irgendeiner Weise vorangehen muss. Sofern nicht anders angegeben, kann ein Satz von Elementen außerdem ein oder mehrere Elemente aufweisen.
-
Wie hierin verwendet, bedeutet und umfasst der Begriff „im Wesentlichen“ in Bezug auf einen gegebenen Parameter, eine gegebene Eigenschaft oder einen gegebenen Zustand in einem Ausmaß, dass ein Durchschnittsfachmann verstehen würde, dass der gegebene Parameter, die gegebene Eigenschaft oder die gegebene Bedingung mit einem kleinen Varianzgrad erfüllt ist, wie zum Beispiel innerhalb akzeptabler Fertigungstoleranzen. Beispielsweise kann in Abhängigkeit von dem bestimmten Parameter, der Eigenschaft oder der Bedingung, die im Wesentlichen erfüllt ist, der Parameter, die Eigenschaft oder die Bedingung zu zumindest 90%, zu zumindest 95% oder sogar zu zumindest 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 Benutzerschnittstelle ausgewählt wurden, und zum Verwenden dieser Techniken, um eine oder mehrere haptische Antworten bereitzustellen. Wie für die Zwecke der hier beschriebenen Ausführungsformen verstanden, kann ein Kontaktsensor auf den Kontakt eines Objekts (wie eines Fingers oder eines Stifts) mit oder die Nähe des Objekts zu einem kontaktempfindlichen Bereich einer Berührungsschnittstelle ansprechen. In dieser Offenbarung bezieht sich „Kontakt“ im Allgemeinen auf den physischen Kontakt eines Objekts mit einem kontaktempfindlichen Bereich, kann jedoch auch die unmittelbare Nähe eines Objekts umfassen, die eine messbare Reaktion durch den Kontaktsensor erzeugt. Weiterhin bezieht sich ein kontaktempfindlicher Bereich auf den physischen Bereich auf einer Berührungsschnittstelle, in dem ein Kontaktsensor auf den Kontakt eines Objekts ansprechen kann.
-
Eine kontaktempfindliche Benutzeroberfläche oder ein Touchscreen, wie es hier verwendet wird, bezieht sich auf eine in eine Benutzeroberfläche integrierte Berührungsoberfläche. Beispielsweise beinhaltet eine GUI typischerweise einen oder mehrere Anzeigebereiche und Anzeige- / Aktiv-Bereiche. In dieser Offenbarung ist ein Anzeigebereich ein Bereich einer Benutzerschnittstelle, der dem Benutzer Informationen anzeigt. Ein aktiver Bereich ist ein Bereich einer GUI, z. B. eine Schaltfläche, ein Schieberegler oder ein Menü, mit dem der Benutzer Maßnahmen in Bezug auf die Benutzeroberfläche ergreifen kann. Einige Anzeigebereiche sind auch insofern aktive Bereiche, als sie Informationen anzeigen und möglicherweise Maßnahmen ergriffen werden. In einer kontaktempfindlichen GUI kann das Berühren eines berührungsempfindlichen Bereichs, in dem ein aktiver Bereich angezeigt wird, diesen Bereich aktivieren (z. B. Tippen auf eine GUI-Schaltfläche auf einem Touchscreen). Aktive Bereiche können als GUI-Elemente / -Objekte angezeigt werden, z. B. Schaltflächen, Schieberegler, auswählbare Bereiche, Menüs usw. in verschiedenen Formen und Größen.
-
Wenn ein Kontakt in einem kontaktempfindlichen Bereich erfasst wird, wird im Allgemeinen ein Verfahren verwendet, um die aktiven Bereiche der GUI zu bestimmen, denen der Kontakt entspricht, falls vorhanden. Wenn beispielsweise eine „ENTER“ -Taste gedrückt wird, wird der Kontakt gemessen und ein Algorithmus ausgeführt, um zu bestimmen, dass der Kontakt an der Position der ENTER-Taste hergestellt wurde. Die ENTER-Schaltfläche ist ein aktiver Bereich, sodass Ereignisse in der berührungsempfindlichen Benutzeroberfläche und / oder dem zugrunde liegenden Anwendungsprogramm erstellt werden, das die Benutzeroberfläche aufgerufen hat.
-
Wenn weiterhin ein bestimmtes GUI-Element dem aktiven Bereich zugeordnet ist, können in die Berührungsschnittstelle integrierte Aktuatoren eine oder mehrere physikalische Antworten bereitstellen, die üblicherweise als haptische Antworten bezeichnet werden. Diese können in Form von Kräften, Vibrationen oder Bewegungen vorliegen und Oberflächenstrukturen, Grate, Kanten, Wechselwirkungen wie Drücken / Klicken einer Taste sowie andere simulierte Empfindungen und Reaktionen imitieren. Im Fall einer GUI kann die haptische Antwort auf das GUI-Element lokalisiert sein, mit dem ein Benutzer interagiert. Wenn ein Benutzer beispielsweise eine GUI-Schaltfläche berührt, fühlt sich die Schaltfläche aufgrund der haptischen Reaktion möglicherweise angehoben mit einer Kante an, als wäre sie gedrückt oder als hätte sie eine raue Textur.
-
Wie nachstehend erörtert, kann beispielsweise unter Bezugnahme auf 14 und 15 in einigen Ausführungsformen eine kontaktempfindliche GUI „virtuelle Widgets“ verwenden, die eine beliebige Zusammenstellung von Formen beinhalten (z. B. einschließlich eines oder mehrerer aktiver GUI-Elemente / -Objekte), die in einem darstellbaren GUI-Bildschirm beinhaltet sind. Beispielsweise kann ein virtuelles Widget eine definierte Zusammenstellung mehrerer Instanzen und / oder Typen von virtuellen Schaltflächen, Schiebereglern, Reglern, Drehknöpfen usw. aufweisen. Als ein anderes Beispiel kann ein virtuelles Widget eine definierte Zusammenstellung aktiver Elemente umfassen, die gemeinsam eine Schnittstelle zur Steuerung einer definierten Funktion definieren. Beispielsweise kann ein virtuelles Widget des Typs Schieberegler oder ein virtuelles Widget des Typs drehbare Zifferblatt aus einer definierten Sammlung von UI-Elementen bestehen, die sich auf einen Bereich von Positionsauswahlen für den Schieberegler oder das drehbare Zifferblatt beziehen, z. B. wie beispielhaft durch die in 15 gezeigten drehbaren Drehknöpfen veranschaulicht, die unten erörtert werden. Es versteht sich, dass jede Offenbarung in Bezug auf GUI-Elemente (auch als UI-Elemente bezeichnet) oder Formen hierin in ähnlicher Weise für virtuelle Widgets gilt.
-
Die verschiedenen hier beschriebenen Ausführungsformen können sich manchmal auf das Erstellen und Aktualisieren elektronischer Aufzeichnungen beziehen. Die elektronischen Aufzeichnungen können in Form einer Datendatei vorliegen, und das Aktualisieren einer elektronischen Aufzeichnung kann das Einfügen oder Löschen von Dateneinträgen in ein oder mehrere Felder des Datensatzes aufweisen. Alternativ kann es sich zur Laufzeit auf ein Klassenobjekt und instanziierte Objekte beziehen, deren Statusinformationen und Variablen mit dem beschriebenen Datensatz übereinstimmen. Beide Situationen werden in den verschiedenen hier beschriebenen Ausführungsformen in Betracht gezogen.
-
Die verschiedenen Ausführungsformen dieser Offenbarung beziehen sich auf Techniken zum Identifizieren jener GUI-Elemente, die auf einer kontaktempfindlichen Schnittstelle kontaktiert wurden. Diese Techniken und zugehörigen Strukturen sind hinsichtlich der Speichernutzung und der Reaktionsfähigkeit besonders effizient.
-
Weiterhin sind die Anforderungen an die Speicherung der Schnittstellendaten gering, und die Anzahl der Aufgaben, 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 zum Erstellen einer Liste optimierter Suchaufgaben, die ausgeführt werden können, um die GUI-Elemente zu identifizieren, die auf der kontaktempfindlichen Schnittstelle kontaktiert wurden. Eine solche Suche kann hier als UI-Elementsuche oder „Formsuche“ bezeichnet werden. Die Suchaufgaben können ausführbare Anweisungen des Prozessors sein, die bei Ausführung eine Erfolgs- oder Fehlermeldung an das Subsystem zurückgeben, das nach dem Element der GUI sucht, mit dem gegebenenfalls Kontakt aufgenommen wurde. In einer Ausführungsform werden die Suchaufgaben basierend auf einer Definitionsdatei erstellt, die die verschiedenen Elemente und ihre Positionen in einer GUI abbildet. Die Suchaufgabe kann für verschiedene Effizienzparameter optimiert werden.
-
In einer Ausführungsform kann die Suchaufgabenliste von einer eingebetteten Vorrichtung ausgeführt werden, beispielsweise einem Touch-Controller, im Vergleich zu herkömmlichen kontaktempfindlichen GUs, die den Erfindern dieser Offenbarung bekannt sind und die UI-Element- / Formsuche in einem Anzeige-Subsystem durchführen können (z.B. einer Kfz-Haupteinheit). Das Durchführen einer Suche nach einem GUI-Element in einem Touch-Controller spart Zeit bei der Kommunikation mit dem Anzeigesubsystem und Zeit für das Subsystem, um beispielsweise mit einem Subsystem mit haptischer Rückmeldung zu reagieren und zu kommunizieren. Die eingesparte Zeit verbessert die Reaktionsfähigkeit kontaktempfindlicher GUIs im Vergleich zu herkömmlichen kontaktempfindlichen GUIs und verkürzt aus Sicht des Benutzers die Zeit zwischen dem Berühren eines Bildschirms und dem Empfangen von Feedback auf Berührungen.
-
Darüber hinaus kann die Erstellung der Aufgabensuchliste konfiguriert werden, und abhängig von der GUI können Sätze allgemeiner Funktionen für eine Implementierung ausgewählt werden, die für die spezifische Anwendung optimiert sind. Beispielsweise kann in einigen Ausführungsformen der Erstellungsprozess für eine GUI optimiert werden, die Seitenblättern, Dropdown-Menüs und Popup-Fenster aufweist, die andere GUI-Elemente, Elemente bestimmter Formen oder Elemente verdecken, die sich bewegen oder verformen, wenn sie kontaktiert werden.
-
1 veranschaulicht einen Gesamtbetrieb eines Systems gemäß verschiedenen Ausführungsformen der Offenbarung. In Operation 112 ist ein Softwareanwendungswerkzeug 102 konfiguriert, um eine UI-Definitionsdatei zu verarbeiten, um eine Suchaufgabenliste (Operation 108) von konditionierten ausführbaren Anweisungen zum Durchführen einer UI-Element- / Formsuche zu erstellen, um ein UI-Element zu identifizieren, falls vorhanden, das auf einem kontaktempfindlichen Bildschirm kontaktiert wurde.
-
Die Suchaufgabenliste kann in einem nicht flüchtigen Speicher gespeichert werden (Operation 110), auf den ein oder mehrere Prozessoren zugreifen können, die Teil eines Berührungssystems sind. Wenn ein Kontaktereignis an einer Berührungsschnittstelle auftritt, kann ein Touch-Sensor 106 die Berührung erfassen (Operation 118) und einem oder mehreren Touch-Prozessoren 104 ein oder mehrere Signale liefern, die die Berührung anzeigen. Die Touch-Prozessoren 104 bestimmen (Operation 112) eine Position auf der Touch-Oberfläche, an der der Kontakt aufgetreten ist, und suchen (Operation 114) nach und identifizieren als Reaktion auf diese Bestimmung ein UI-Element und, falls vorhanden, das auf einem berührungsempfindlichen Bildschirm kontaktiert wurde. In einer Ausführungsform kann der Touch-Prozessor 104 die Suchergebnisse einem grafischen Benutzerschnittstellensubsystem bereitstellen (Operation 116).
-
Eine Ausführungsform eines Prozesses zum Erstellen einer Suchaufgabenliste wird unter Bezugnahme auf 2 bis 7 beschrieben. Ausführungsformen der Offenbarung verwenden eine Suchbaumstruktur, die UI-Elemente gemäß einer Baum- und Gittertechnik organisiert. Die verschiedenen UI-Elemente werden in verwandte Gruppen unterteilt werden, die wie Raster behandelt, in einem Suchbaum organisiert werden und anschließend werden verschiedene Suchaufgaben generiert. Die Suchaufgaben sind konditioniert, um die Ausführung einer UI-Element- / Formsuche unter Verwendung der Anweisungen zu optimieren. Ein üblicher Fachmann wird verstehen, dass andere Algorithmen verwendet werden können, um den Bildschirm (die Bildschirme) in durchsuchbare Bereiche zu unterteilen, beispielsweise ein Divide-And-Conquer-Verfahren.
-
2 veranschaulicht eine Ausführungsform eines Prozesses zum Erzeugen einer Suchaufgabenliste zum Durchführen einer UI-Element- / Formsuche. In Operation 202 wird eine Strukturdefinition für die Benutzeroberfläche geladen und analysiert, um Bildschirme, Unterbildschirme und Benutzeroberflächenelemente auf diesen Bildschirmen und Unterbildschirmen zu identifizieren. Die Ul-Strukturdefinition kann eine elektronische Datei, eine Datenbank, Rohdaten oder dergleichen sein. In Operation 204 werden die UI-Elemente gruppiert und der durchsuchbare Bereich wird in einen oder mehrere durchsuchbare Bereiche mit UI-Elementgruppen unterteilt. In Operation 206 werden die UI-Elementgruppen basierend auf den durchsuchbaren Regionen zu einer Baumstruktur verknüpft. In Operation 208 werden Suchaufgaben den Suchbaumzweigen und -knoten zugeordnet, um einen Suchbaum zu bilden, und der Suchbaum wird optimiert. In Operation 210 werden die konditionierten Aufgaben des Suchbaums in einer Liste gespeichert, die die Aufgabenliste ist, die von einem Prozessor ausgeführt werden kann.
-
In einer Ausführungsform kann das Softwareanwendungswerkzeug 102, das die Suchaufgabenliste erzeugt, konfiguriert sein, um die Ergebnisse einer oder mehrerer der Operationen 202, 204, 206, 208 und 210 in eine Ausgabedatei zu schreiben. Dies kann von einem Debugging-Tool verwendet werden, um die Ergebnisse des Prozesses zu überprüfen. Das gleiche Debugging-Tool kann so konfiguriert sein, dass es eine Textversion einer Suchaufgabenliste verwendet und diese in einer virtuellen Testumgebung (z. B. einer ausführbaren .dos-Datei) ausführt, um zu überprüfen, ob die Suchaufgabenliste betriebsbereit ist.
-
3 veranschaulicht eine Ausführungsform eines Prozesses 300 zum Extrahieren von UI-Elementen aus einer Ul-Strukturdefinition. In einer Ausführungsform ist die UI-Strukturdefinition eine XML-Definition der Teile einer Anzeige, die durch die Konfigurationsgenerierungsfunktionen des Anwendungswerkzeugs konvertiert werden sollen. Das Anwendungswerkzeug analysiert die Strukturdefinitionen und erfasst die in der Definitionsstruktur definierten UI-Elemente. In Operation 302 wird jedes UI-Element geladen und in Operation 304 wird bestimmt, ob es ein bekanntes UI-Element ist. Wenn es sich nicht um ein bekanntes UI-Element handelt (d.h. dies ist das erste Mal, dass dieses Element in den Strukturdefinitionen identifiziert wurde), erstellt der Prozess in Operation 306 eine neue Elementdefinition für diesen Typ von UI-Element (z. B. Schaltfläche, Knopf, Schieberegler usw.).
-
Nach dem Erstellen der neuen Definition oder wenn das Element ein bekanntes UI-Element ist, wird in Operation 308 festgelegt, ob das Element einer vorhandenen Gruppe zugewiesen werden soll. In einer Ausführungsform basiert die Festlegung, ob es einer vorhandenen Gruppe zugewiesen werden soll, auf verschiedenen vorgegebenen Parametern, beispielsweise gemeinsamen Merkmalen von Elementen, wie dem Elementtyp, dem Bildschirmort, an dem das UI-Element angezeigt wird, einer Ebene, Position, eine Art von Antwort, die mit dem Element verbunden ist (z. B. visuell, haptisch, Audio usw.) und dergleichen. Wenn die Entscheidung getroffen wird, das Element einer neuen Gruppe zuzuweisen, wird in Operation 310 ein neuer Gruppendatensatz mit Parametern erstellt, die sich auf das Element beziehen.
-
Nachdem ein neuer Gruppendatensatz erstellt wurde oder wenn festgelegt wurde, das Element einer vorhandenen Gruppe zuzuweisen, wird in Operation 312 für dieses neue Element ein neuer Elementeintrag in den Gruppendatensatz eingefügt. In einer Ausführungsform beinhaltet der Eintrag Felder für die Element-ID und die Position des Elements (d.h. die Koordinaten des Elements auf dem Bildschirm). In Operation 314 wird eine Bestimmung vorgenommen, ob es weitere UI-Elemente gibt, und wenn es weitere UI-Elemente gibt, wird der Prozess für jedes verbleibende UI-Element ausgeführt, das in der UI-Strukturdefinition identifiziert ist. In Operation 316 gibt der Prozess das Element (die Elemente), die Elementdefinition(en) und die Gruppe(n) zurück.
-
Wenn in einer Ausführungsform die UI-Strukturdefinition mehr als eine Bildschirmdefinition beinhaltet, wird jedem solchen Bildschirm eine Bildschirm-ID zugewiesen, die ein Parameter des UI-Elements ist. Sie kann auch als Parameter für jede Gruppe aufgenommen werden. Jeder Bildschirm kann auch Unterbildschirme beinhalten, die definierte Bereiche einer angezeigten GUI sind, 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 Benutzeroberflächenelementen austauschbare Fenster, scrollbare Menüs, aktivierbare Informationsfenster, Navigationsschaltflächen und dergleichen umfassen.
-
4 veranschaulicht einen Prozess 400 zum Erzeugen eines Suchbaums gemäß einer Ausführungsform der Offenbarung. In diesem Prozess wird festgelegt, wie jeder in der UI-Definition identifizierte Bildschirm in durchsuchbare Bereiche unterteilt werden soll, wobei jeder durchsuchbare Bereich eine oder mehrere Gruppen von UI-Elementen beinhaltet. In der in 4 gezeigten beispielhaften Ausführungsform wird eine Trennlinie (xy-Koordinaten) ausgewählt, die Gruppen von UI-Elementen so teilt, dass sich zumindest eine UI-Elementgruppe auf einer Seite der Trennlinie und zumindest eine andere UI-Elementgruppe auf der anderen Seite der Trennlinie befindet.
-
Die Trennlinie teilt den Bildschirm effektiv in zwei durchsuchbare Bereiche mit einer gemeinsamen Grenze entlang der Trennlinie. Die UI-Elementgruppen werden rekursiv unterteilt, bis die UI-Elementgruppen nicht mehr weiter unterteilt werden können.
-
In einer anderen Ausführungsform werden der Bildschirm oder die durchsuchbaren Bereiche gleichzeitig in x- und y-Koordinatenrichtung unterteilt, was zu bis zu vier Unterteilungen der UI-Elementgruppen führen kann. Diese Technik könnte auch zu weniger als vier Unterteilungen führen, beispielsweise drei Unterteilungen von UI-Elementgruppen und einer leeren durchsuchbaren Region.
-
In noch anderen Ausführungsformen können Kreise, Quadrate und / oder Polygone verwendet werden, um einen Teil des Bildschirms zu definieren, der von den durchsuchbaren Bereichen ausgeschlossen werden soll, so dass der Bildschirm nicht in durchsuchbare Bereiche unterteilt ist.
-
In Operation 402 wird der erste durchsuchbare Bereich mit zwei oder mehr Gruppen geladen. Bei der ersten Iteration kann dies der gesamte Bildschirm einschließlich aller Gruppen sein. In dieser Ausführungsform existiert ein anfänglicher durchsuchbarer Regionsdatensatz mit einem Bereich, der so definiert ist, dass er den gesamten Bildschirm einschließlich aller UI-Elemente und UI-Elementgruppen umfasst. In Operation 404 wird eine Gitterlinie ausgewählt, die den anfänglich durchsuchbaren Bereich in zwei durchsuchbare Bereiche mit jeweils einigen der Gruppen unterteilt. In Operation 406 wird ein neuer Datensatz erstellt, die UI-Elementgruppen werden zwischen dem ursprünglichen Datensatz und dem neuen Datensatz sortiert und die Datensätze werden mit ihren jeweiligen durchsuchbaren Bereichen aktualisiert. Die Trennlinie wird als Trennung / Teilung zwischen den beiden durchsuchbaren Bereichen aufgezeichnet. Der erste durchsuchbare Bereich und die darin beinhalteten UI-Elementgruppen und UI-Elemente sind mit der Unterteilung verknüpft, die wiederum mit dem neuen durchsuchbaren Bereich und den darin beinhalteten UI-Elementgruppen und UI-Elementen verknüpft ist.
-
Zur Laufzeit sind Klassenobjekte von UI-Elementen, Klassenobjekte von UI-Elementgruppen und Klassenobjekte von Teilungen / Unterteilungen vorhanden.
-
Für jeden durchsuchbaren Bereich, der mehr als eine UI-Elementgruppe beinhaltet, wird der Prozess rekursiv ausgeführt (Operation 408), um die durchsuchbaren Bereiche zu teilen.
-
Insbesondere werden in einer Ausführungsform die UI-Elemente durch einen Verweis auf eine UI-Elementdefinition (z. B. eine Element-ID) und eine Verschiebung zum Ursprung eines UI-Elements in dieser Ausführungsform definiert, wodurch die Anforderungen an den Schnittstellenspeicher reduziert werden, da nicht jedes UI-Element individuell definiert werden muss.
-
Sobald ein Bildschirm vollständig unterteilt ist, ist jetzt ein Zwischensuchbaum vorhanden, der Unterteilungen / Teilungen, Benutzeroberflächenelemente und Benutzeroberflächenelementgruppen sowie Verknüpfungen zwischen diesen umfasst.
-
In Operation 410 werden Suchaufgaben auf Gruppenebene für jede Benutzeroberflächenelementgruppe erstellt. Eine Aufgabe auf Gruppenebene ist ein Prozessschritt oder eine Reihe von Prozessschritten. Die Aufgaben können umfassen: (i) Aufgaben, um zu bestimmen, ob ein Berührungs- oder Kontaktereignis innerhalb eines UI-Elements (oder ohne ein UI-Element) aufgetreten ist; (ii) Aufgaben zum Ändern des Suchbereichs in irgendeiner Weise; und (iii) Aufgaben, die für die nächste Aufgabe eingerichtet werden sollen.
-
Jede Aufgabe auf Gruppenebene kann eine Angabe der nächsten Aufgabe beinhalten, die im Falle eines Erfolgs oder Misserfolgs auszuführen ist. Beispielsweise kann jede Aufgabe ein Bit mit einem „Offset“ zur nächsten Aufgabenadresse beinhalten. Weiterhin kann jede Aufgabe auf Gruppenebene Argumente akzeptieren, wenn sie ausgeführt wird. In einigen Ausführungsformen kann die vorherige Aufgabe die Argumente bereitstellen oder ein Umgebungsbit / -flag setzen, um anzuzeigen, welche Argumente für die nächste Aufgabe verfügbar sind.
-
In einer Ausführungsform kann der Offset in den UI-Elementgruppenkoordinaten (Positionswinkel) verwendet werden, um einen Index zu erzeugen. Jedem UI-Element in einem durchsuchbaren Bereich kann, falls konfiguriert, eine andere ID zugewiesen werden, die durch den Index von der Basis-ID des durchsuchbaren Bereichs versetzt ist. Das Ergebnis ist eine Element-ID und ein Offsetwert. Es gibt separate Bestimmungen zum Modifizieren von entweder reaktiven (z. B. haptischem) oder Element-ID - so kann ein Gruppenelement eine einzelne Element-ID, aber mehrere reaktive IDs zurückgeben, und ein anderes kann eine reaktive ID für eine Anzahl verschiedener Elemente zurückgeben.
-
Die Suchaufgaben auf Gruppenebene können in die Gruppendatensätze, in eine Suchaufgabenliste oder in einen Zwischendatensatz eingefügt werden. Sobald die Suchaufgaben auf Gruppenebene abgeschlossen sind, wird in Operation 412 der Zwischensuchbaum zurückgegeben.
-
In einer Ausführungsform können Umgebungsvariablen für jede Aufgabe festgelegt werden, die gegebenenfalls angeben, was zurückgegeben wird, wenn die Aufgabe ausgeführt wird, was ein Erfolg ist und was die endgültige Aufgabe ist. Als nicht einschränkendes Beispiel kann eine Umgebungsvariable eine haptische ID, Werte zum Steuern, wie die Element-ID und die haptische ID für ein Element innerhalb einer Gruppenform geändert werden, usw. sein. Es können auch Umgebungsflags gesetzt werden, die die Daten angeben, die zur nächsten Aufgabenbeschreibung gesendet werden. Durch Verwendung bestimmter Einschränkungen und der richtigen Umgebungsvariablen kann eine Definition, beispielsweise eines Kreises, von 7 auf 2 Bytes reduziert werden.
-
5 veranschaulicht eine Ausführungsform eines Optimierungsprozesses 500, der an dem Zwischensuchbaum ausgeführt wird. In Operation 502 werden alle UI-Elemente nach gemeinsamen Merkmalen gruppiert. Beispiele für gemeinsame Merkmale umfassen den UI-Elementtyp, die Position in einer Ebene, die Position relativ zu einem anderen Element in einer anderen Ebene (z. B. alle hinter demselben UI-Element), eine Anzeigegruppe, eine Form oder mehr. In einer Ausführungsform können gemeinsame Merkmale ausgewählt werden, um einen UI-Element- / Formsuchprozess zu optimieren. Wenn beispielsweise UI-Elemente nach Ebenenposition mit den UI-Elementen auf der obersten Ebene oben im Suchbaum gruppiert werden, werden diese zuerst durchsucht. In einem anderen Beispiel ermöglicht in einer Anwendung, in der es „Seitenblättern“ gibt (d.h. Ebenen einer Benutzeroberfläche können gewischt werden, um darunter liegende Ebenen freizulegen oder eine Ebene über eine andere Ebene zu ziehen), die Gruppierung nach Anzeigegruppe die Steuerung aller angezeigten Benutzeroberflächen Elemente, die ein einzelnes Steuerelement verwenden - z. B. nach allen UI-Elementen in einer Anzeigegruppe suchen, Änderungen an diesen UI-Elementen anwenden, die auf die Steuerungseinstellungen reagieren, alle UI-Elemente in einer Anzeigegruppe aktivieren oder deaktivieren usw. In verschiedenen Ausführungsformen können Bezeichner verwendet werden, um Gruppen zu identifizieren, die nach gemeinsamen Merkmalen organisiert sind, z. B. Ebenen-IDs, Positions-IDs, Form-IDs usw.
-
In Operation 504 werden Suchaufgaben für jedes Element in den Suchbaum eingefügt und aufgeteilt, um einen Zwischen-Suchaufgabenbaum zu bilden. In Operation 506 wird der Zwischensuchaufgabenbaum neu angeordnet, um einen einzelnen Durchgang für jede Aufgabe sicherzustellen. In Operation 508 werden redundante oder ineffiziente Suchaufgaben eliminiert. In Operation 510 wird der optimierte Suchaufgabenbaum zurückgegeben.
-
6 veranschaulicht eine Ausführungsform eines Prozesses 600 zum Erstellen einer Suchaufgabenliste. In Operation 602 werden die Klassenobjekte in dem Suchaufgabenbaum geladen und in Operation 604 werden Anweisungswörter (d.h. Suchaufgaben) aus den Klassenobjekten erstellt und die Anweisungswörter (d.h. Suchaufgaben) werden in eine Suchaufgabenliste eingefügt. In der in 6 gezeigten Ausführungsform weist das Befehlswort ein Aufgabencodefeld und ein Sprungfeld auf. In einer Ausführungsform beinhaltet das Befehlswort ein Datenfeld. Jeder Fehler (d.h. das Element ist anders) und jede Aufteilung erfordert einen Sprung zu einem anderen Befehl, es sei denn, die nächste Aufgabe folgt unmittelbar der aktuellen Aufgabe im Speicher.
-
In Operation 606 werden die Aufgabencodes in das Aufgabencodefeld eingefügt, und in Operation 608 werden die Sprungwerte in das Sprungfeld eingefügt. In einigen Ausführungsformen werden einige oder alle Sprungwerte erst eingefügt, wenn alle Aufgaben in die Suchaufgabenliste eingefügt wurden. In anderen Ausführungsformen können Sprungwerte aus dem Suchaufgabenbaum abgeleitet werden.
-
In Operation 610 werden die verschiedenen Aufgaben der Suchaufgabenliste im Speicher zu einer konditionierten Suchaufgabenliste verkettet, die, wenn sich alle Objekte in der Liste befinden (Operation 612), von dem Prozess in Operation 614 zurückgegeben wird. Die Suchaufgabenliste und der Suchbaum können im Speicher gespeichert werden.
-
Die Aufgabenanweisungen können durch Containergrößenbeschränkungen (d.h. Bytebeschränkungen) variieren, die in der bestimmten Umgebung verfügbar sind, in der die Suchaufgabenliste implementiert wird. In einer Ausführungsform können die Daten, die jedem Aufgabenbefehl zugeordnet sind, abhängig von den Systemanforderungen variieren, einschließlich einer Befehlsschnittstellenanforderung (8-Bit, 12-Bit, 16-Bit usw.), verfügbarem Speicher usw. In einem einschränkenden Beispiel kann eine Anweisung zum Suchen 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 beinhaltet sein, wenn die Befehlsschnittstelle und andere Speicheranforderungen dies zulassen.
-
7 veranschaulicht einen Suchprozess für ein UI-Element / eine Form, um zu bestimmen, ob eine Berührung innerhalb eines UI-Elements gemäß einer Ausführungsform der Offenbarung aufgetreten ist. Die Suche im Suchbaum erfolgt anhand der bereitgestellten Daten und der Suchaufgabenliste. In Operation 702 wird die ausführbare Anweisung für jede Aufgabe auf der Schnittstelle des Prozessors sequentiell mit den Nutzdaten für jede Aufgabe bereitgestellt und in Operation 704 ausgeführt. Während der Suche nach dem Suchbaum wird in Operation 706 eine Bestimmung vorgenommen, ob die Berührung innerhalb eines UI-Elements erfolgt ist, und das Ergebnis jeder Aufgabe ist ein wahr / falsch, Erfolg / Misserfolg, der angibt, ob die Berührung innerhalb eines UI-Elements aufgetreten ist. In Operation 708 werden die nächste Aufgabenanweisung und die zugehörigen Daten von dem Prozessor geladen und empfangen, wenn das Ergebnis der aktuellen Aufgabe erfolgreich ist. Das heißt, wenn das Ergebnis der Operation 706 ein Erfolg ist, wird die nächste Aufgabe in der Aufgabenliste ausgeführt.
-
Wenn das Ergebnis ein Misserfolg ist, werden eine alternative Aufgabenanweisung und zugehörige Daten geladen und vom Prozessor als Reaktion auf das Ergebnis empfangen. Wenn es eine alternative Aufgabe gibt (Operation 714), wird der alternative Aufgabenort in Operation 716 bereitgestellt und der Prozess kehrt zu Operation 702 zurück, und die Aufgaben werden vom alternativen Ort für den Prozessor geladen. Wenn die Suche beendet ist, wurde das UI-Element entweder gefunden oder nicht gefunden. Wenn das UI-Element gefunden wurde, wird in Operation 710 ein gefundenes Ergebnis zurückgegeben, und in Operation 712 werden die ID für dieses Element sowie alle Umgebungseinstellungen / Reaktionsparameter zurückgegeben. Wenn die Operation nicht gefunden ergibt, wird in Operation 720 ein Nicht-Gefunden-Ergebnis zurückgegeben.
-
In einer Ausführungsform kann der in 7 gezeigte UI-Element- / Formsuchprozess eine Firmware-Anwendung sein, die an einem Touch-Prozessor (Mikrocontroller) ausgeführt wird. Der Touch-Prozessor kann die eine oder mehreren Suchaufgaben, die von dem Suchprozess ausgeführt werden, in einem Flash-Speicher gespeichert haben. In einer Ausführungsform können Suchaufgaben in einem RAM gespeichert sein, der einer Anzeigesteuerung zugeordnet ist, und die Suchaufgaben können dem Touch-Prozessor während eines Setup- oder Provisionierungsprozesses bereitgestellt und für den Suchprozess zugänglich gehalten werden.
-
Die beschriebenen Ausführungsformen bieten mehrere Vorteile gegenüber alternativen Ansätzen. Der Speicherbedarf wird erheblich reduziert - bis zu 50% bei linearer Suche, reiner Rastermethode oder reiner Suchbaummethode; und noch eine Verbesserung gegenüber kombinierten Gitter- / Baumverfahren. Dies liegt zum Teil daran, dass die Anzahl der durchgeführten Suchvorgänge reduziert wird. Da die Anzahl der Suchvorgänge verringert wird, sind die Antwortzyklen erheblich kürzer als bei alternativen Ansätzen (einschließlich herkömmlicher Ansätze). Beispielsweise wurden auf einem 1200 x 1200 berührungsempfindlichen GUI Zykluszeiten von weniger als 36 µs erreicht, verglichen mit alternativen Ansätzen im Bereich von 72 µs (reines Gitter) bis 1200 µs (linear). Für einen Benutzer ist der Unterschied eine viel reaktionsschnellere Touch-Oberfläche.
-
Für einen Designer kann die Touch-Oberfläche ausgefeilter sein und viele Elemente mit unterschiedlichen Reaktionseigenschaften aufweisen.
-
8, 9 und 10A bis 10E veranschaulichen Prozesse, die unter Bezugnahme auf 2 bis 7 in Verbindung mit einer GUI für eine Radioanwendung als ein nicht einschränkendes Beispiel einer GUI dargestellt und beschrieben sind, die mit Ausführungsformen der Offenbarung verwendet werden kann. Die in 8 dargestellte Radio-GUI 810 beinhaltet acht Typen von UI-Elementen und insgesamt 144 UI-Elemente, die in Tabelle 820 zusammengefasst sind. In einigen Ausführungsformen kann die GUI 810 ein Touchscreen sein, der herkömmliche Raster-Touch-Positionsberichte verwendet.
-
9 zeigt UI-Elemente, die gemäß 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ührungseigenschaften (z. B. haptisches Feedback bei Berührung), physische Positionen auf dem Bildschirm und Formen auf.
-
10A bis 10E zeigen ein Beispiel einer Baumstruktur 850, die unter Verwendung des unter Bezugnahme auf 4 beschriebenen Baum- und Gitterverfahrens ausgebildet wurde.
-
11 veranschaulicht ein System 1000 und ein verwandtes Werkzeug 1040, das die hierin beschriebenen UI-Element- / Formsuchverfahren gemäß einer Ausführungsform der Offenbarung implementieren kann. Das System 1000 weist eine Mikrocontroller-Firmware 1010 mit darauf befindlichen GUI-Elementsuchfunktionen 1012 und einer Ansprechfestlegung 1014 für GUI-Elemente auf. 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 einschließlich eines oder mehrerer Aktuatoren, und der Antworttreiber 1018 ist ein haptischer Treiber, der konfiguriert ist, um Steuersignale zu erzeugen, die die Aktuatoren anregen. Die Erfassungsschaltung 1022 kann ein oder mehrere Messsignale erzeugen, die auf Kontakt an der kontaktempfindlichen Schnittstelle 1020 ansprechen. Die Kontaktmessung und -verarbeitung 1016 kann Kontaktinformationen (z. B. Ort, Typ usw.) bestimmen und diese der Ansprechfestlegung 1014 und den GUI-Elementsuchfunktionen 1012 bereitstellen, die auf die Messsignale der Erfassungsschaltung 1022 reagieren. Die am Antworttreiber 1018 empfangenen Steuersignale können zumindest teilweise auf den Kontaktinformationen basieren, zum Beispiel, so dass an der richtigen Stelle auf der kontaktempfindlichen Schnittstelle 1020 eine haptische Rückmeldung bereitgestellt wird.
-
In 11 ist auch ein Werkzeug 1040 gezeigt, das einen Suchlistenerstellungsprozess implementieren und eine Elementsuchaufgabenliste und Elementantwortinformationen gemäß einer Ausführungsform der Offenbarung erstellen kann. Ein Suchlistenerstellungsanwendungsprogramm 1044 ist konfiguriert, um die unter Bezugnahme auf 2 bis 6 beschriebenen Prozesse zu implementieren, um eine GUI-Definitions-XAML-Datei 1042 zu verarbeiten, um eine Elementsuchaufgabenliste zu erzeugen. Die Anwendung 1044 kann die Elementsuchaufgabenliste 1046 und die Elementantwortinformationen 1048 als Datei für die Mikrocontroller-Firmware 1010 bereitstellen. In einer Ausführungsform kann sie auch einen Suchbaum bereitstellen, obwohl dies in den Suchaufgaben beinhaltet sein kann.
-
In einigen Ausführungsformen der Firmware kann die Firmware Kraftmess- und Verarbeitungsfunktionen beinhalten, um Kraftniveauinformationen über ein Berührungsereignis aufzunehmen. In diesen Ausführungsformen können die Kraftpegelinformationen und die GUI-Element-ID und die von der Elementsuchfunktion zurückgegebenen Details der haptischen Antwort von einem haptischen Sequenzer verwendet werden, um haptische Steuersignale zu erzeugen, die auf das Kraftniveau, die GUI-Element ID und die Details der haptischen Antwort reagieren.
-
Das System nach 11 kann in verschiedene Verbraucherprodukte, Vorrichtungen und Maschinen eingebaut sein, die Berührungsschnittstellen und Berührungssteuertafeln verwenden, einschließlich Kraftfahrzeuge.
-
12 veranschaulicht eine vereinfachte Version einer Radio-GUI 1210 für ein Automobil-Touch-Bedienfeld. Drei Regionen werden speziell genannt: Region 1, Region 2 und Region 3. Region 1 ist eine Taste 1212 in der Mitte eines Drehschalters 1214 zur Temperatursteuerung. Eine haptische Rückmeldung gemäß einer haptischen Profil-ID # 4 (Vibration) wird als Reaktion auf ein Berührungsereignis mit einem starken Kraftniveau bereitgestellt. Bereich 2 ist der Drehknopf 1214, ebenfalls zur Temperaturregelung. Eine haptische Rückmeldung gemäß einer haptischen Profil-ID # 3 (Reibung) wird als Reaktion auf ein Berührungsereignis mit einem leichten Kraftniveau bereitgestellt. Schließlich ist Region 3 eine Schaltfläche 1216, um ein Menü für Fahrzeugeinstellungen aufzurufen. Haptisches Feedback gemäß der haptischen Profil-ID # 2 (Klicken) wird als Reaktion auf ein Berührungsereignis mit einem starken Kraftniveau bereitgestellt, und haptisches Feedback gemäß dem haptischen Profil-ID # 3 (Reibung) wird als Reaktion auf eine Berührung bereitgestellt, die ein leichtes Kraftniveau aufweist.
-
13 veranschaulicht das System von 11 und die grafische Benutzeroberfläche von 12, die in von einer Haupteinheit 1310 angewiesene Fahrzeugsteuerungen integriert sind, und haptische Effekte in der Haupteinheit 1310 werden von einem Mikrocontroller gesteuert. In dieser Ausführungsform sind die Berührungssteuerungsfunktionen 1320 und die UI-Element- / Formsuchfunktionen 1324 Teil eines Automobilsubsystems, bei dem eine Fahrzeughaupteinheit 1310 auf Berührungen mit haptischer Rückmeldung reagiert, ohne dass die Verarbeitungsschaltung der Haupteinheit direkt eingreift. Der Touch-Controller 1320 ist konfiguriert, um Berührungsbildschirmtasten aus den Berührungspositionen und Kraftniveauinformationen zu identifizieren und eine Berührungszustandsmaschine einschließlich Tastenposition auszuführen, um den haptischen Effekt auszulösen.
-
In dieser Ausführungsform sind die Kraftverarbeitung 1326 und die Berührungsverarbeitung 1322 in eine Steuerungskomponente 1320 integriert, und der Touchscreen 1332 beinhaltet die Definitionen (Bildschirmanzeigedesign 1336 und Suchbaumdefinitionen 1338) einer Anzahl von geometrischen Objektbeschreibungen, die jeweils zum Auslösen einer Reihe von haptischen Effekten erforderlich sind, die direkt von dem Touch-Controller 1320 aktiviert und von der haptischen Vorrichtung 1350 ausgeführt werden sollen. Der Touch-Controller 1320 kann diese Definitionen auch über eine Touch-Controller-Konfigurationseinheit 1340 empfangen.
-
Zum Beispiel empfängt der Touch-Controller 1320 nach einer Berührung auf der Anzeige 1330 Kraftinformationen und Berührungsinformationen von der Kraftverarbeitung 1326 und der Berührungsverarbeitung 1322. Die Informationen können eine Kraftmessung von einem Kraftsensor 1334 und eine Berührungsposition auf der Anzeige umfassen. Die UI-Element- / Formsuche 1324 liefert UI-Elementinformationen, die dem UI-Element entsprechen, falls vorhanden, das auf der Anzeige 1330 angezeigt wird, wo die Berührung aufgetreten ist. Wenn es kein UI-Element gibt, das der Position auf der Anzeige entspricht, liefert die UI-Element- / Formsuche 1324 ein Suchergebnis Null. Während der Suche nach Forminformationen eines UI-Elements kann die UI-Element- / Formsuche 1324 die Definitionen verwenden, die in der Haupteinheit 1310 gespeichert sind. In einer Ausführungsform kann die UI-Element- / Formsuche 1324 die Definitionen beispielsweise während eines Provisionierungsprozesses empfangen, wenn der Touch-Controller 1320 in die Haupteinheit 1310 integriert wird, oder wenn die Haupteinheit 1310 eingeschaltet wird.
-
Wenn die UI-Element- / Formsuche 1324 ein UI-Element identifiziert, wird die haptische Information von der Haptik-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 beinhaltet. Die haptische Aktivierungsnachricht kann einen Parameter beinhalten, 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 in der haptischen Vorrichtung gespeichert ist. Die haptische Vorrichtung 1350 steuert dann Aktuatoren an der Anzeige 1330, so dass der spezifische Bereich der Anzeige den angeforderten haptischen Effekt zeigt. Insbesondere können verschiedene haptische Geräte unterschiedliche haptische Bibliotheken aufweisen, so dass die Auswirkungen zwischen Geräten 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 beinhaltet eine hierarchisch strukturierte Liste von Zeichenanweisungen für die Bildschirmelemente der Benutzeroberflächen der GUI. In der XAML-Datei sind Tags beinhaltet, die GUI-Elementen zugeordnet sind. Beispielsweise sind „Breite“, „Höhe“ und „Horizontale Ausrichtung“ gültige Tags für bestimmte Elemente.
-
Virtuelle Widgets
-
Wie oben diskutiert, kann in einigen Ausführungsformen eine kontaktempfindliche GUI (in eine GUI integrierte Berührungsschnittstelle) virtuelle Widgets verwenden, z. B. in Kombination mit einem der oben diskutierten Merkmale. Wie hierin verwendet, ist ein „virtuelles Widget“ eine beliebige Zusammenstellung von Formen (z. B. einschließlich eines oder mehrerer aktiver UI-Elemente), die in einem darstellbaren GUI-Bildschirm beinhaltet sind. Beispielsweise kann ein virtuelles Widget eine definierte Zusammenstellung mehrerer Instanzen und / oder Typen von virtuellen Schaltflächen, Schiebereglern, Reglern, Drehknöpfen usw. umfassen. Als ein anderes Beispiel kann ein virtuelles Widget eine definierte Zusammenstellung aktiver Elemente umfassen, die gemeinsam eine Schnittstelle zur Steuerung einer definierten Funktion festlegen. Beispielsweise kann ein virtuelles Widget vom Typ Schieberegler oder ein virtuelles Widget vom Typ drehbare Drehknopf aus einer definierten Sammlung von UI-Elementen bestehen, die sich auf einen Bereich von Positionsauswahlen für den Schieberegler oder den drehbaren Drehknopf beziehen, z. B. wie durch die in Beispiel 15 gezeigten und unten diskutierten, beispielhaften drehbaren Drehknöpfen veranschaulicht.
-
Virtuelle Widgets können auf dem Touchscreen angezeigt werden, existieren jedoch in einigen Ausführungsformen nur im Kontext eines Touchscreen-Konfigurationsmoduls / - prozesses und auf dem Touchscreen-Display. Virtuelle Widgets können an eine Haupteinheit berichten. Die Verwendung virtueller Widgets kann die Komplexität der physischen Schnittstelle der berührungsempfindlichen Benutzeroberfläche verringern. Beispielsweise kann die Verwendung von virtuellen Widgets den Overhead auf der Haupteinheit reduzieren, um Berührungspositionen zu verarbeiten, und erfordert möglicherweise keine separate Hardware oder Elektronik für physische Drehregler, Schieberegler usw., z. B. für Heizungssteuerungen, Radiosteuerelemente oder jede andere Art von Steuerelementen.
-
Einige Ausführungsformen stellen Systeme und Verfahren zum Definieren von Bereichen eines Touchscreens (z. B. Bereiche auf einer konfigurierten Bildschirmseite) bereit, die als virtuelle Widgets (z. B. Schaltflächen, Schieberegler, Drehknöpfen usw.) betrieben werden sollen. Wenn eine Berührung auf dem Touchscreen erkannt wird, kann ein Touch-Controller eine Position oder einen Zustand des Widgets bestimmen, die der Benutzerberührung entsprechen (z. B. die lineare Position eines virtuellen Schiebereglers oder die Drehposition eines virtuellen Zifferblatts, die der erkannten Berührungsposition entspricht) und solche Positions- / Statusinformationen in einer „Widget-Nachricht“ an die Haupteinheit melden, anstatt oder zusätzlich zu einer „Touch-Nachricht“, die die Position der Berührung auf dem Touchscreen angibt. Widget-Nachrichten können beispielsweise eine vom Benutzer ausgewählte Position, Drehung, den Status „berührt“ und / oder die Anzahl der erkannten Berührungen eines jeweiligen Widgets anzeigen, die dem erkannten Berührungsort, der erkannten Kraft und / oder einem anderen messbaren Aspekt der detektierten Berührung auf dem Touchscreen entsprechen.
-
In einigen Ausführungsformen werden Widget-Nachrichten an die Haupteinheit in einem separaten Datenstrom von Berührungsnachrichten übertragen, z. B. in der in 14 gezeigten beispielhaften Ausführungsform, die unten diskutiert wird. In einigen Ausführungsformen unterdrückt der Touch-Controller das Senden von Touch-Nachrichten an die Haupteinheit, wenn eine Berührung eines virtuellen Widgets erkannt wird. Mit anderen Worten, Touch-Nachrichten können während der Touch-Interaktion mit einem virtuellen Widget zugunsten von Widget-Nachrichten ausgesetzt werden.
-
Durch die Verwendung solcher virtueller Widgets können virtuelle GUI-Steuerelemente auf konfigurierbare und dynamische Weise an einer beliebigen Stelle auf dem Touchscreen positioniert werden. In einigen Ausführungsformen können die auf dem Bildschirm angezeigten virtuellen Steuerelemente durch Ändern der Bildschirmanzeige-ID geändert und / oder neu positioniert werden, z. B. basierend auf Techniken, die oben für die Suche nach UI-Formen offenbart wurden.
-
14 zeigt ein beispielhaftes GUI-Touchscreen-System 1400 gemäß einer beispielhaften Ausführungsform, das virtuelle Widgets verwendet, wie hierin offenbart. Das GUI-Touchscreen-System 1400 kann einen kontaktempfindlichen Touchscreen 1402, einen Touch-Controller 1404 und eine Haupteinheit 1406 umfassen, von denen jede eine der Komponenten bereitstellen kann (z. B. Touch-Sensoren, Mikrocontroller, Mikrocontroller-Firmware, Prozessor, Speicher, haptische Aktuatoren, usw.) und bieten alle Funktionen, die von einem Touchscreen, einem Touch-Controller und einer Haupteinheit bereitgestellt werden, wie oben erläutert. In einigen Ausführungsformen kann der Touch-Controller 1404 durch eine Firmware in einem Mikrocontroller ausgeführt sein.
-
Das System 1400 kann auch ein Bildschirmdesignmodul 1410 und ein Touch-Controller-Konfigurationsmodul 1414 beinhalten. Das Bildschirmdesignmodul 1410 kann ein Bildschirmdesign für jeden von einem oder mehreren verschiedenen Bildschirmen (auch als Seiten bezeichnet) definieren oder konfigurieren, die selektiv auf dem Touchscreen 1402 angezeigt werden können. Für jeden Bildschirm kann das Bildschirmdesignmodul 1410 virtuelle Widgets auswählen, die in den Bildschirm aufgenommen werden sollen, und die Anordnung / das Layout der ausgewählten Widgets. Das Bildschirmdesignmodul 1410 kann das Bildschirmdesign (die Bildschirmdesigns) zur Speicherung an die Haupteinheit 1406 übermitteln, und die Haupteinheit 1406 kann der GUI-Elementsuchmaschine 1424 gegebenenfalls selektiv Bildschirmdesigns bereitstellen, z. B. basierend auf dem aktuell zur Anzeige ausgewählten Bildschirm (z. B. unter Verwendung einer Bildschirmauswahl-Zustandsmaschine, die von der Haupteinheit 1406 bereitgestellt wird). Die Haupteinheit 1406 oder alternativ das Touch-Controller-Konfigurationsmodul 1414 kann dann die Anzeige auf dem Touchscreen steuern, z. B. indem gesteuert wird, welcher von mehreren verschiedenen Bildschirmen derzeit angezeigt wird, unter Verwendung verschiedener Selektionen und / oder Anordnungen von virtuellen Widgets.
-
Das Bildschirmdesignmodul 1410 kann auch die Parameter 1412 jedes virtuellen Widgets festlegen, das in einem der Bildschirmdesigns beinhaltet ist, und dem Touch-Controller-Konfigurationsmodul 1414 entsprechende Widget-Definitionen 1416 zur Speicherung übermitteln. Das Touch-Controller-Konfigurationsmodul 1414 kann somit eine Widget-Definition für jedes virtuelle Widget speichern, die eine definierte Zusammenstellung verwandter UI-Elemente eines oder mehrerer Typen beinhalten kann. Wie gezeigt, kann das Touch-Controller-Konfigurationsmodul 1414 die GUI-Elementsuchmaschine 1424 mit den Widget-Definitionen versehen, die in dem aktuell angezeigten Bildschirm beinhaltet sind, damit die GUI-Elementsuchmaschine 1424 eine Benutzerinteraktion mit einem virtuellen Widget basierend auf einer erkannten Berührung auf dem Touchscreen erkennen kann.
-
Wie oben erwähnt, kann jedes virtuelle Widget eine beliebige Zusammenstellung von Formen aufweisen, die auf dem Touchscreen angezeigt werden. Jedes virtuelle Widget kann eine Widget-ID und eine relative Position auf dem Bildschirm aufweisen. Virtuelle Widgets können weiterhin durch Parameter wie Schaltflächennummer (für Schaltflächentyp-Widgets), Drehposition / -änderung (für Drehtyp-Widgets) oder Schiebereglerposition / -änderung (für Schieberegler-Widgets) definiert werden. Virtuelle Widgets können auch durch eine Formkonfiguration definiert werden, die beispielsweise von der Haupteinheit ausgelagert werden kann.
-
Wenn ein Benutzer im Betrieb den Touchscreen 1402 berührt / kontaktiert, kann die Erfassungsschaltung des Touch-Controllers 1404 Sensorsignale bei 1420 messen und ein oder mehrere Messsignale als Reaktion auf den gemessenen Kontakt am Touchscreen 1402 erzeugen. Die Kontaktmessung und -verarbeitung 1420, 1422 kann Berührungsinformationen (z. B. Ort, Typ, Kraft usw.) bestimmen und einer GUI-Elementsuchmaschine (oder einem „Formsuch“-Modul) 1424 zur Verfügung stellen. Die GUI-Elementsuchmaschine 1424 kann dann bestimmen, ob der Berührungsort mit einem derzeit angezeigten virtuellen Widget übereinstimmt, z. B. basierend auf den Widget-Positions- und Formparametern, die in den Widget-Definitionen 1416 beinhaltet sind. Diese Bestimmung kann eine der verschiedenen oben diskutierten Techniken für die Berührungserkennung von UI-Elementen verwenden.
-
Wenn die GUI-Elementsuchmaschine 1424 bestimmt, dass der Berührungsort einem aktuell angezeigten virtuellen Widget entspricht, kann die Suchmaschine 1424 Widget-Informationen 1426 an ein Widget-Verarbeitungsmoduls 1428 kommunizieren, einschließlich der jeweiligen Widget-ID, eines Widget-Formindex, welche(s) UI-Element(e) innerhalb des Widget berührt wird / werden und / oder andere relevante Informationen bezüglich des virtuellen Widgets, das berührt wird. Bei 1428 kann das Widget-Verarbeitungsmodul 1428 eine Widget-Nachricht 1430, die eine der von der GUI-Elementsuchmaschine 1424 empfangenen Widget-Informationen 1426 und / oder Widget-Definitionsinformationen 1416 beinhaltet an eine Nachrichtenschnittstelle 1434 erzeugen, die einen Ereignisbericht 1440 einschließlich der Informationen vom Widget-Verarbeitungsmodul 1428 zur Haupteinheit 1406 weiterleiten kann.
-
In einigen Ausführungsformen kann das Widget-Verarbeitungsmodul 1428 für jedes relevante Widget-Berührungsereignis einen Ereignisbericht 1440 erzeugen, der jedes Widget-Berührungsereignis beinhalten kann, das eine haptische Antwort oder eine andere Benutzerfeedback- oder Steuerfunktion auslöst, z. B. wie durch die Widget-Definitionen 1416 oder andere Logik definiert, die für die Haupteinheit 1406 und / oder den Touch-Controller 1404 erzeugt wird oder auf andere Weise zugänglich ist. Beispielsweise können relevante Widget-Berührungsereignisse Berührungsereignisse in einem Widget beinhalten, die eine dem Widget zugeordnete Einstellung ändern, z. B. durch Ein- / Ausschalten einer entsprechenden Funktion oder Erhöhen oder Verringern eines einstellbaren Steuerparameters (z. B. Lautstärke, Lüftergeschwindigkeit, Anzeigehelligkeit usw.), zum Beispiel. Das Widget-Verarbeitungsmodul 1428 kann relevante Widget-Berührungsereignisse aus Widget-Informationen 1426 identifizieren, die von der GUI-Elementsuchmaschine 1424 und / oder Widget-Definitionsinformationen 1416 empfangen wurden.
-
Die Haupteinheit 1406 kann somit Widget-bezogene Ereignisberichte 1440 vom Widget-Verarbeitungsmodul 1428 über die Nachrichtenschnittstelle 1434 empfangen und auf jeden Ereignisbericht 1440 ansprechen, indem sie Aspekte des auf dem Touchscreen 1402 angezeigten Bildschirms steuert und / oder zumindest ein externes System oder Gerät steuert, das dem virtuellen Widget zugeordnet ist, das berührt wird, z. B. ein Radio, ein Infotainmentsystem, ein Karten- / Leitsystem, ein Licht, ein Lüfter, ein Antrieb, ein Motor usw. In einigen Ausführungsformen kann die Haupteinheit 1406 die jeweiligen Aktuatoren steuern, um am Ort der Berührung eine definierte haptische Rückmeldung an den Benutzer bereitzustellen, z. B. wie durch Widget-Definitionsinformationen 1416 festgelegt. In anderen Ausführungsformen kann die haptische Rückmeldung über den Touchscreen 1402 eher von dem Touch-Controller 1404 als von der Haupteinheit 1406 gesteuert und bereitgestellt werden, was die Reaktionszeit für die Rückmeldung an den Benutzer verbessern kann.
-
Weiterhin kann, wie in 14 bei 1432 angegeben, der Touch-Controller 1404 konfiguriert sein, um alle verarbeiteten Berührungsinformationen an die Nachrichtenschnittstelle 1434 weiterzuleiten, die diese Informationen über Ereignisberichte 1440 erzeugen und an die Haupteinheiten 1406 weiterleiten kann. In einigen Ausführungsformen kann das Widget-Verarbeitungsmodul 1428 einen Aktivierungs- / Deaktivierungsschalter / eine Logik 1442 steuern, um die Weiterleitung dieser Berührungsinformationen 1432 zu deaktivieren oder auszusetzen, wenn eine Berührung eins virtuellen Widget durch die GUI-Elementsuchmaschine 1424 identifiziert wird, z. B. während der Erzeugung und Weiterleitung von Widget-Nachrichten 1430 / Widget-bezogenen Ereignisberichten 1440 vom Widget-Verarbeitungsmodul 1428 zur Haupteinheit 1406.
-
Die Verwendung virtueller Widgets kann die erforderliche Verarbeitung der Haupteinheit 1406 vereinfachen. Beispielsweise kann die Verwendung virtueller Widgets es einem einzelnen Bildschirmdesign ermöglichen, mehrere Anwendungen aufzuweisen. Eine Schnittstelle kann beispielsweise jegliche Produktvariante über eine geeignete Konfiguration handhaben.
-
15 zeigt einen beispielhaften Radiobildschirm (oder eine Bildschirmseite) 1502, der auf einer Touchscreen-GUI 1500 angezeigt wird, wobei der Radiobildschirm / die Seite 1502 eine Anordnung von virtuellen Widgets 1504 beinhaltet, die verschiedene Gruppen von UI-Elementen gemäß einer beispielhaften Ausführungsform beinhalten. Die Touchscreen-Benutzeroberfläche 1500 kann so konfiguriert sein, dass sie eine beliebige Anzahl und Art verschiedener Bildschirme / Seiten selektiv anzeigt, um ein Radio und / oder ein oder mehrere andere Systeme oder Geräte (z. B. ein Infotainmentsystem, ein Karten- / Leitsystem, ein Licht, einen Lüfter, einen Antrieb, Motor usw.) zu steuern.
-
In diesem Beispiel weist der Radiobildschirm / die Seite 1502 eine Vielzahl von virtuellen Beispiel-Widgets 1504 auf, einschließlich: einem Radio-Widget 1504A, ein Paar von Radiomodus-Widgets 1504B und 1504C, ein Kanalvoreinstellungs-Widget 1504D, ein Zustands-Widget 1504E, ein Aktivierungs-Widget 1504F für die Lautstärkeregelung und ein Widget für die Lautstärkeregelung 1504G, ein Widget für die Aktivierung der Tuner-Steuerung 1504H und ein Widget für die Tuner-Einstellung 1504I, ein Widget für die Bass-Steuerung 1504J und ein Widget für die Höhenregelung 1504K.
-
Die oben diskutierten kontaktempfindlichen GUIs (z. B. Touchscreens) können in beliebigen geeigneten Produkten oder Systemen, z. B. Haushaltsgeräten oder beispielsweise für Fahrzeugsteuerungen verwendet werden. In einigen Ausführungsformen kann die Touchscreen-Steuerung durch Firmware bereitgestellt werden, z. B. in einem Mikrocontroller, ohne dass ein diskreter Mikroprozessor / Chip erforderlich ist.
-
Da die GUI (z. B. der Touchscreen) über die Konfiguration definiert und geändert werden kann, kann dieselbe GUI-Hardware für mehrere verschiedene Zwecke und / oder von mehreren verschiedenen Benutzern oder Kunden verwendet und selektiv konfiguriert werden. Darüber hinaus kann dieselbe GUI-Hardware mehrere verschiedene Schnittstellenoptionen für eine Produktpalette bereitstellen. Herkömmliche Ansätze stellen typischerweise separate Steuerungen bereit und / oder verwenden die Haupteinheit, um Tastendrücke oder andere Kontakte auf dem Touchscreen zu bestimmen, was nicht die Flexibilität des offenbarten Systems bietet und möglicherweise zusätzliche Verarbeitungsressourcen oder Zeit erfordert.
-
Die Möglichkeit, unterschiedliche Eigenschaften und Reaktionen für verschiedene Teile des Touchscreens zu definieren, wird hauptsächlich durch den oben offenbarten UI-Element- / Formsuchalgorithmus bereitgestellt, der eine flexible Definition von Sensorbereichen ermöglicht. Dies ist kein typischer Aspekt des herkömmlichen Touchscreen-Designs. Durch das Hinzufügen separater Messaging-Streams für UI-Elemente / Widgets können Funktionen wie Dreh- und Schieberegler praktisch erstellt werden, ohne dass ein physisches Gerät erforderlich ist. Mit derselben Funktionalität kann jede Form als virtuelles Widget mit eigener ID gemeldet werden, wobei die herkömmliche Touchscreen-Verarbeitung umgangen wird.
-
Viele der in dieser Spezifikation beschriebenen Funktionseinheiten können als Module, Threads oder andere Trennungen von Programmcode dargestellt, beschrieben oder gekennzeichnet werden, um insbesondere ihre Implementierungsunabhängigkeit hervorzuheben. Module können zumindest teilweise in Hardware implementiert sein, in der einen oder anderen Form. Ein Modul kann beispielsweise als Hardwareschaltung implementiert sein, die kundenspezifische VLSI-Schaltungen oder Gate-Arrays, handelsübliche Halbleiter wie Logikchips, Transistoren oder andere diskrete Komponenten aufweist. Ein Modul kann auch in programmierbaren Hardwaregeräten wie feldprogrammierbaren Gate-Arrays, programmierbarer Array-Logik, programmierbaren Logik-Vorrichtungen oder dergleichen implementiert werden. Module können auch unter Verwendung von Software oder Firmware implementiert werden, die auf einer physischen Speichervorrichtung (z. B. einem computerlesbaren Speichermedium), im Speicher, oder einer Kombination davon zur Ausführung durch verschiedene Arten von Prozessoren gespeichert sind.
-
Ein identifiziertes Modul von ausführbarem Code kann beispielsweise einen oder mehrere physische oder logische Blöcke von Computeranweisungen aufweisen, die beispielsweise als Thread, Objekt, Prozedur oder Funktion organisiert sein können. Trotzdem muss die ausführbare Datei eines identifizierten Moduls nicht physisch mit diesem zusammen angeordnet sein, sondern kann unterschiedliche Anweisungen aufweisen, die an verschiedenen Orten gespeichert sind, die, wenn sie logisch miteinander verbunden sind, das Modul ausbilden und den angegebenen Zweck für das Modul erreichen.
-
In der Tat kann ein Modul aus ausführbarem Code eine einzelne Anweisung oder viele Anweisungen aufweisen und kann sogar über mehrere verschiedene Codesegmente, zwischen verschiedenen Programmen und über mehrere Speicher- oder Speichergeräte verteilt sein. In ähnlicher Weise können Betriebsdaten hier in Modulen identifiziert und dargestellt werden und können in jeder geeigneten Form ausgeführt und in jeder geeigneten Art von Datenstruktur organisiert sein. Die Betriebsdaten können als ein einzelner Datensatz gesammelt oder über verschiedene Orte einschließlich über verschiedene Speichervorrichtungen verteilt sein und können zumindest teilweise nur als elektronische Signale in einem System oder Netzwerk existieren.
-
Wenn ein Modul oder Teile eines Moduls in Software implementiert sind, werden die Softwarebestandteile auf einem oder mehreren physischen Geräten gespeichert, die hier als computerlesbare Medien bezeichnet werden.
-
In einigen Ausführungsformen werden die Softwarebestandteile in einem nicht flüchtigen Zustand gespeichert, so dass die Softwarebestandteile oder Darstellungen davon für einen Zeitraum an demselben physischen Ort verbleiben. Zusätzlich werden in einigen Ausführungsformen die Softwarebestandteile auf einer oder mehreren nicht vorübergehenden Speichervorrichtungen gespeichert, die Hardwareelemente beinhalten, die nicht flüchtige Zustände und / oder Signale speichern können, die für die Softwarebestandteile repräsentativ sind, obwohl andere Teile der nicht flüchtigen Speichervorrichtungen in der Lage sein können, die Signale zu ändern und / oder zu übertragen. Beispiele für nicht flüchtige Speichergeräte sind Flash-Speicher und Direktzugriffsspeicher (RAM). Ein anderes Beispiel einer nicht flüchtigen Speichervorrichtung umfasst einen Nur-Lese-Speicher (ROM), der Signale und / oder Zustände speichern kann, die für einen Zeitraum für die Softwarebestandteile repräsentativ sind. Die Fähigkeit zum Speichern der Signale und / oder Zustände wird jedoch nicht durch die weitere Funktionalität des Sendens von Signalen beeinträchtigt, die mit den gespeicherten Signalen und / oder Zuständen identisch oder repräsentativ sind. Ein Prozessor kann beispielsweise auf das 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 hier beschriebenen Operationen auszuführen, auf einem beliebigen einer Vielzahl von Medien bereitgestellt werden. Weiterhin sind die tatsächliche Implementierung des Ansatzes und der Operationen der Erfindung tatsächlich Statements, die in einer Computersprache geschrieben sind. Solche Anweisungen in Computersprache bewirken, wenn sie von einem Computer ausgeführt werden, dass der Computer gemäß dem bestimmten Inhalt der Anweisungen handelt. Weiterhin kann die Software, die es einem Computersystem ermöglicht, gemäß der Erfindung zu agieren, in einer beliebigen Anzahl von Formen bereitgestellt werden, einschließlich, aber nicht beschränkt auf Originalquellcode, Assemblierungscode, Objektcode, Maschinensprache, komprimierte oder verschlüsselte Versionen der vorstehenden und alle Äquivalente.
-
Ein herkömmlicher Fachmann wird erkennen, dass „Medien“ oder „computerlesbare Medien“, wie sie hier verwendet werden, eine Diskette, ein Band, eine CD, eine integrierte Schaltung, ein ROM, eine CD, DVD, BLU-RAY, eine Kassette, ein Flash-Speicher, ein Memory Stick oder eine Karte oder ein anderes zerstörungsfreies Speichermedium umfassen können, das von Computern verwendet werden kann, einschließlich der aktuell bekannten oder später entwickelten.
-
Obwohl die Aktivierungssoftware auf eine Platte „geschrieben“ sein kann, die in einer integrierten Schaltung „verkörpert“ ist, über eine Kommunikationsschaltung „übertragen“, in einem Speicherchip „gespeichert“ oder in einen Cache-Speicher „geladen“ wird, wird es begrüßt, dass für die Zwecke dieser Anmeldung die Software einfach als „in“ oder „auf“ dem computerlesbaren Medium bezeichnet wird. Somit sollen die Begriffe „in“ oder „auf“ die oben erwähnten und alle äquivalenten und möglichen Arten umfassen, auf die Software einem computerlesbaren Medium zugeordnet werden kann.
-
Der Einfachheit halber wird der Begriff „Computerprogrammprodukt“ daher verwendet, um sich auf ein computerlesbares Medium zu beziehen, wie es oben definiert ist, das irgendeine Form von Software beinhaltet, um es einem Computersystem zu ermöglichen, gemäß einer beliebigen Ausführungsform der Erfindung zu arbeiten.
-
Während die vorliegende Offenbarung hierin in Bezug auf bestimmte dargestellte Ausführungsformen beschrieben wurde, werden Fachleute erkennen und würdigen, dass die vorliegende Erfindung nicht einschränkend ist. Vielmehr können viele Ergänzungen, Löschungen und Modifikationen der dargestellten und beschriebenen Ausführungsformen vorgenommen werden, ohne vom Schutzumfang der Erfindung abzuweichen, wie nachstehend zusammen mit ihren rechtlichen Äquivalenten beansprucht. Zusätzlich können Merkmale einer Ausführungsform mit Merkmalen einer anderen Ausführungsform kombiniert werden, während sie immer noch im Schutzumfang der Erfindung beinhaltet sind, wie von den Erfindern in Erwägung gezogen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 62/576383 [0001]
- US 62/576563 [0001]