Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
becki:linux:hmi_technologien [2010-04-07 16:02] becki |
becki:linux:hmi_technologien [2010-04-12 08:40] (aktuell) becki |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Übersicht HMI Technologien == | ====== Übersicht HMI Technologien == | ||
+ | |||
+ | Dieses Dokument gibt zunächst einen Überblick über die aktuellen Möglichkeiten zur Entwicklung von lokalen, touch-basierten und entfernten, netzwerkbasierten HMIs. Am Ende werden [[hmi_technologien#konkrete Lösungsmöglichkeiten]] für eine Steuerung mit beiden HMI-Typen vorgestellt. | ||
+ | |||
===== Embedded / Mobile Plattformen == | ===== Embedded / Mobile Plattformen == | ||
Zeile 5: | Zeile 8: | ||
^ Name ^ Initiator ^ OS-Kern ^ Besonderheit ^ | ^ Name ^ Initiator ^ OS-Kern ^ Besonderheit ^ | ||
- | | Ubuntu Mobile/Embedded | Canonical Ltd. | Linux | verwendet Hildon für Touch (s.u.), auf Atom-Prozessoren abgestimmt, programmierbar auch in Vala (s.u.), Favorit | | + | | [[http://www.ubuntu.com/products/mobile|Ubuntu Mobile/Embedded]] | Canonical Ltd. | Linux | verwendet Hildon für Touch (s.u.), auf Atom-Prozessoren abgestimmt, programmierbar auch in Vala (s.u.) | |
| Freesamrtphone.org | FSO | Linux | verwendet D-Bus, programmierbar auch in Vala und Python | | | Freesamrtphone.org | FSO | Linux | verwendet D-Bus, programmierbar auch in Vala und Python | | ||
- | | Android | Google | Linux | Vollständig in Java programmierbar | | + | | [[wpde>Android_(Betriebssystem)|Android]] | Google | Linux | Vollständig in Java programmierbar | |
| Limo | Motorola | Linux | Linux Mobile Foundation (NEC, Panasonic, Samsung, Vodafone, u.a.) | | | Limo | Motorola | Linux | Linux Mobile Foundation (NEC, Panasonic, Samsung, Vodafone, u.a.) | | ||
| webOs | Palm | Linux | GUI verwendet Web Technologie (HTML 5, JavaScript, CSS) | | | webOs | Palm | Linux | GUI verwendet Web Technologie (HTML 5, JavaScript, CSS) | | ||
Zeile 18: | Zeile 21: | ||
===== Touch Libs == | ===== Touch Libs == | ||
- | Speziell auf Bedienung per //Finger//-Touch entwickelte Softwarebiblitheken um lokale GUI-Appliktionen zu entwickeln: | + | Speziell auf Bedienung per //Finger//-Touch entwickelte Softwarebibliotheken zur Entwicklung //lokaler// GUIs. Diese nutzen die speziellen Möglichkeiten eines Touchscreen voll aus und ermöglichen so z.B. eine gestische Bedienung: |
* Das aktuelle QT 4.6 unterstützt gestische Bedienung und auch Multitouch, das auch z.B. Zwei-Finger-Zoom ermöglicht. | * Das aktuelle QT 4.6 unterstützt gestische Bedienung und auch Multitouch, das auch z.B. Zwei-Finger-Zoom ermöglicht. | ||
* [[wpde>Hildon]] ist ein Framework, dass für die Bedienung mit dem Finger optimiert ist. Hildon ist Teil von GTK+ und ist u.a. in Vala programmierbar. | * [[wpde>Hildon]] ist ein Framework, dass für die Bedienung mit dem Finger optimiert ist. Hildon ist Teil von GTK+ und ist u.a. in Vala programmierbar. | ||
* FIXME [[wp>Clutter_(toolkit)|Clutter]] für Animationen | * FIXME [[wp>Clutter_(toolkit)|Clutter]] für Animationen | ||
+ | * FIXME Weitere: [[http://www.fltk.org/shots.php|FLTK]], [[http://www.wxwidgets.org/|wxWidgets]], [[http://elinux.org/EFL|Enlightenment foundation libraries]] (mit Elementary) | ||
===== Touch Browser == | ===== Touch Browser == | ||
Zeile 28: | Zeile 32: | ||
Webbrowser bzw. HTML Rendering Engines mit spezieller Unterstützung für Touchscreens | Webbrowser bzw. HTML Rendering Engines mit spezieller Unterstützung für Touchscreens | ||
- | ^ Name ^ Initiator ^ Verwendet u.a. von ^ | + | ^ Name ^ Engine ^ Verwendet u.a. von ^ |
- | | WebKit | Palm | Android, Apple's iPhone, Palm, Google Chrome, | | + | | WebKit | WebKit | Palm, Android, Apple's iPhone, Palm, Google Chrome | |
- | + | | Moblin browser | Gecko | Moblin | | |
- | FIXME Welchen Browser verwendet Moblin? | + | |
===== Remote HMI SDKs == | ===== Remote HMI SDKs == | ||
+ | |||
+ | Bibliotheken zur Entwicklung //entfernter// GUIs. Die für den Benutzer optimale remote HMI | ||
+ | * erfordert keine Installation auf dem Client | ||
+ | * läuft auf jedem Betriebssystem | ||
+ | * hat den Komfort einer lokalen Applikation | ||
+ | * bietet reichhaltige grafische Elemente | ||
+ | * kommt ohne die Installation einer zusätzlichen Runtime aus | ||
+ | * Aktualisiert sich von selbst | ||
+ | |||
==== Web-basiert == | ==== Web-basiert == | ||
- | Rein web-basierte Technik, die direkt im Broswser ohne zusätzliches Plugin läuft. Der Browser erledigt den programmatischen Teil per Javascript, den deklarativen Teil per XHTML und die Oberflächengestalltung per CSS. Bekannt unter dem Namen AJAX. | + | Rein web-basierte Technik, die direkt im Browser **ohne zusätzliches Plugin** läuft. Der Browser erledigt den programmatischen Teil per Javascript, den deklarativen Teil per XHTML und die Oberflächengestalltung per CSS. Diese Technik ist bekannt unter dem Namen AJAX. |
- | Die Bibliotheken liefern eine für alle Broswer gleiche API u.a. für GUI-Elemente (Container, Buttons, Slider, Charts, ...). Sie schützen damit den Programmierer vor der Komplexität und Aufwand der Anpassung ihres Programmes vor allem an nicht standardkonforme Browser. | + | Die Bibliotheken liefern eine für alle Browser gleiche API u.a. für GUI-Elemente (Container, Buttons, Slider, Charts, ...). Sie schützen damit den Programmierer vor der Komplexität und Aufwand der Anpassung ihres Programmes vor allem an nicht standardkonforme Browser. |
^ Name ^ Sprache ^ Besonderheit ^ | ^ Name ^ Sprache ^ Besonderheit ^ | ||
- | | Dojo | Javacript | | | + | | [[wpde>Dojo_Toolkit|Dojo]] | Javacript | | |
- | | Scriptaculous | Javacript | | | + | | [[wpde>Google_Web_Toolkit|GWT]] | Java | Java=>Javascript Cross-Compiler, client side processing | |
- | | GWT | Java | Java=>Javascript Cross-Compiler | | + | | Script.aculo.us | Javacript | | |
- | | ZK | Java | FIXME | | + | | YUI | Javacript | | |
+ | | ZK | Java | Java=>Javascript Cross-Compiler, server side processing, benötigt Servlet Container auf Target | | ||
+ | | OpenLaszlo | Javascript+XML | Die DHTML Variante hat möglicherweise eingeschränkten Funktionsumfang | | ||
Beispiele für rein web-basierte Applikationen: [[http://demos.dojotoolkit.org/demos/|Dojo Demos]], [[http://maps.google.de|Google Maps]] oder [[http://docs.google.com|Google Text und Tabellen]] | Beispiele für rein web-basierte Applikationen: [[http://demos.dojotoolkit.org/demos/|Dojo Demos]], [[http://maps.google.de|Google Maps]] oder [[http://docs.google.com|Google Text und Tabellen]] | ||
Zeile 50: | Zeile 64: | ||
==== RIAs == | ==== RIAs == | ||
- | Rich Internet Applications (RIA) / Runtimes auf dem Client erforderlich: | + | Rich Internet Applications (RIA) / **Runtime auf dem Client erforderlich**: |
^ Name ^ Runtime ^ Sprache ^ Besonderheit ^ | ^ Name ^ Runtime ^ Sprache ^ Besonderheit ^ | ||
- | | Apache Pivot | JVM | Java | | | + | | [[http://pivot.apache.org/|Apache Pivot]] | JVM | Java | Wahlweise als Applet, [[wpde>Java_Web_Start|Websstart]]- oder klassische Applikation einsetzbar | |
| JavaFX | JVM | JavaFX Script | proprietär? | | | JavaFX | JVM | JavaFX Script | proprietär? | | ||
| Silverlight | Dotnet | C# | proprietär | | | Silverlight | Dotnet | C# | proprietär | | ||
| Flash | Flash | ActionScript | proprietär | | | Flash | Flash | ActionScript | proprietär | | ||
- | | OpenLaszlo | ? | ? | | | + | | OpenLaszlo | Flash | Javascript+XML | | |
- | | Curl | ? | ? | | | + | | Curl | Curl RTE | Curl | Verbreitung? | |
- | Im Zeitalter von leistungsfähigen und standardkonformen Internetbrowsern ist es jedoch fraglich, ob RIA's noch zeitgemäß sind, bzw. ob sie nicht bald obsolet werden. | + | Im Zeitalter von leistungsfähigen und standardisierten Internetbrowsern ist es jedoch fraglich, ob RIA's noch zeitgemäß sind, bzw. ob sie nicht bald obsolet werden. |
==== Gecko basiert == | ==== Gecko basiert == | ||
- | FIXME | + | FIXME Anwendung von [[wpde>XUL]] evtl. in Kombination mit [[wpde>Mozilla_Prism]] |
- | + | ||
- | * XUL | + | |
- | * Mozilla Prism | + | |
===== Enhancements / Besonderheiten == | ===== Enhancements / Besonderheiten == | ||
==== Java == | ==== Java == | ||
- | Alles was eine Java-API besitzt (Android, Apache Pivot, GWT) kann auch in [[wpde>Groovy]] programmiert werden. Groovy bringt die typischen Vorteile einer Scriptsprache (kompakt, einfach, elegant) auf die Java Platform. In Groovy geschriebene Programme sind wesentlich kompakter und einfacher zu lesen als herkömmlicher Java- oder Csharp-Code | + | Alles was eine Java-API besitzt (Android, Apache Pivot, GWT) kann auch in [[wpde>Groovy]] programmiert werden. Groovy bringt die typischen Vorteile einer Scriptsprache (kompakt, einfach, elegant) auf die Java Plattform. In Groovy geschriebene Programme sind wesentlich **kompakter und einfacher** zu lesen/schreiben als herkömmlicher Java- oder Csharp-Code |
Alles was clientseitig auf die JVM (Apache Pivot, JavaFX) aufsetzt erfordert **keine zusätzliche Installation beim Kunden**, da die JAVA Runtime meist schon vorhanden ist. | Alles was clientseitig auf die JVM (Apache Pivot, JavaFX) aufsetzt erfordert **keine zusätzliche Installation beim Kunden**, da die JAVA Runtime meist schon vorhanden ist. | ||
Zeile 78: | Zeile 89: | ||
==== Vala / GTK == | ==== Vala / GTK == | ||
- | Alles was auf GTK aufsetzt (z.B. Hildon) kann (neben anderem) auch in [[wpde>Vala_(Programmiersprache)|Vala]] programmiert werden. | + | Alles was auf GTK aufsetzt (z.B. Hildon) kann (neben anderem) auch in [[wpde>Vala_(Programmiersprache)|Vala]] programmiert werden. [[http://live.gnome.org/Vala/HildonSample|Beispiel]] |
- | Vala vereinigt die Vorteile einer gemanagten Sprache wie (Java/Csharp) mit den Vorteilen von C/C++. D.h. man bekommt u.a. Objektorientierung, Exceptions und automatische Speicherverwaltung mit der Performance einer nativ compilierten Applikation. Dies ist möglich, da Vala ohne Runtime auskommt. Auch lassen sich mit Vala x-beliebige externe C-Bibliotheken verwenden. | + | Vala vereinigt die Vorteile einer **gemanagte**n **Sprache** wie (Java/Csharp) mit den Vorteilen von C/C++. D.h. man bekommt u.a. Objektorientierung, Exceptions und automatische Speicherverwaltung mit der Performance einer nativ compilierten Applikation. Dies ist möglich, da Vala **ohne Runtime** auskommt. Auch lassen sich mit Vala x-beliebige externe C-Bibliotheken verwenden. |
Vala hat eine Csharp-ähnliche Syntax. | Vala hat eine Csharp-ähnliche Syntax. | ||
- | Auf Grund der Performance und Benutzerfreundlichkeit bietet sich Vala auch für die Programmierung der eigentlichen Applikationn (nicht nur HMI) an. | + | Auf Grund der Performance und Benutzerfreundlichkeit bietet sich Vala auch für die Programmierung der eigentlichen Applikation (nicht nur HMI) an. |
- | Für die deklarative Gestaltung Glade einer GTK-basierten GUI bietet sich [[wpde>Glade]] an | + | Für die Projektierung und Gestaltung einer GTK-basierten GUI in deklarativer Form auf Basis von XML bietet sich [[wpde>Glade]] an. |
- | ===== Lösungsmöglichkeiten == | + | ===== Konkrete Lösungsmöglichkeiten == |
- | ==== 1. Lokale Touch Lib / Web Technologie für remote HMI == | + | |
+ | Drei Vorschläge zur Realisierung einer Steuerung auf einem Panelrechner mit lokaler- und remote HMI: | ||
+ | |||
+ | ==== 1. Lokal: Touch Lib / Remote: Web-basiert == | ||
* Lokale GUI Applikation mit Finger-Touch-GUI (z.B. Hildon) | * Lokale GUI Applikation mit Finger-Touch-GUI (z.B. Hildon) | ||
* Standardbrowser (Firefox, Chrome, IE, ...) für die remote HMI (keine Plugins nötig) mit AJAX-SDK (z.B. Dojo oder GWT) für die GUI-Programmierung | * Standardbrowser (Firefox, Chrome, IE, ...) für die remote HMI (keine Plugins nötig) mit AJAX-SDK (z.B. Dojo oder GWT) für die GUI-Programmierung | ||
- | Favorit, da beide HMIs optimal auf ihren Einsatzweck abestimmt sind. | + | Beide HMIs sind optimal auf ihren Einsatzweck abgestimmt. Die lokale HMI kann die speziellen Möglichkeiten eines Touchscreens voll ausnutzten, während die remote HMI ohne Installation und Download sofort auf jedem Rechner funktioniert. |
+ | |||
+ | Als Plattform bietet sich derzeit Maemo oder Ubuntu Mobile and Embedded Edition an, die hier Hildon schon als Bordmittel vorhanden ist. Die Plattform kann später jederzeit später noch geändert werden. | ||
- | ==== 2. Reine Web Technologie == | + | ==== 2. Lokal und Remote: Web-basiert == |
AJAX für die lokale HMI und remote HMI | AJAX für die lokale HMI und remote HMI | ||
Zeile 104: | Zeile 120: | ||
* Web-basierte AJAX-SDK (wie Dojo oder GWT) für die GUI-Programmierung | * Web-basierte AJAX-SDK (wie Dojo oder GWT) für die GUI-Programmierung | ||
- | Theoretisch ein HMI-Projektierung für lokale HMI und remote HMI nötig. Tatsächlich werden aber wohl spezielle Anpassungen für die unterschiedlichen Bildschirmgrößen und Bedienstrategien (Maus/Tastatur <=> Fingertouch) nötig werden. Weiterhin muß muß die AJAX-SDK den Touch Browser unterstützen | + | Theoretisch ein HMI-Projektierung für lokale HMI und remote HMI nötig. Tatsächlich werden aber wohl spezielle Anpassungen für die unterschiedlichen Bildschirmgrößen und Bedienstrategien (Maus/Tastatur <=> Fingertouch) nötig werden. Weiterhin muß die AJAX-SDK den Touch Browser unterstützen. |
- | ==== 3. Touch Lib / RIA == | + | ==== 3. Lokal: Touch Lib / Remote: RIA == |
* Lokale GUI Applikation mit Finger-Touch-GUI (z.B. Hildon) | * Lokale GUI Applikation mit Finger-Touch-GUI (z.B. Hildon) | ||
* Remote GUI per RIA (z.B. Apache Pivot) | * Remote GUI per RIA (z.B. Apache Pivot) | ||
- | |||
- | ===== Unsortiert / Ideen == | ||
- | |||