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 konkrete Lösungsmöglichkeiten für eine Steuerung mit beiden HMI-Typen vorgestellt.
Betriebssysteme und Plattformen, die speziell auf embedded- und mobile Endgeräte abgestimmt sind:
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.) |
Freesamrtphone.org | FSO | Linux | verwendet D-Bus, programmierbar auch in Vala und Python |
Android | Linux | Vollständig in Java programmierbar | |
Limo | Motorola | Linux | Linux Mobile Foundation (NEC, Panasonic, Samsung, Vodafone, u.a.) |
webOs | Palm | Linux | GUI verwendet Web Technologie (HTML 5, JavaScript, CSS) |
Maemo | Nokia | Linux | verwendet Hildon für Touch (s.u.) |
Moblin | Intel | Linux | auf Atom-Prozessoren abgestimmt, fingergesteuerter Internetbrowser |
Bada | Samsung | Linux | System ist verschlossen bis auf die API |
Maemo und Moblin haben sich kürzlich zu Meego vereinigt.
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:
Webbrowser bzw. HTML Rendering Engines mit spezieller Unterstützung für Touchscreens
Name | Engine | Verwendet u.a. von |
---|---|---|
WebKit | WebKit | Palm, Android, Apple's iPhone, Palm, Google Chrome |
Moblin browser | Gecko | Moblin |
Bibliotheken zur Entwicklung entfernter GUIs. Die für den Benutzer optimale remote HMI
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 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 |
---|---|---|
Dojo | Javacript | |
GWT | Java | Java⇒Javascript Cross-Compiler, client side processing |
Script.aculo.us | Javacript | |
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: Dojo Demos, Google Maps oder Google Text und Tabellen
Rich Internet Applications (RIA) / Runtime auf dem Client erforderlich:
Name | Runtime | Sprache | Besonderheit |
---|---|---|---|
Apache Pivot | JVM | Java | Wahlweise als Applet, Websstart- oder klassische Applikation einsetzbar |
JavaFX | JVM | JavaFX Script | proprietär? |
Silverlight | Dotnet | C# | proprietär |
Flash | Flash | ActionScript | proprietär |
OpenLaszlo | Flash | Javascript+XML | |
Curl | Curl RTE | Curl | Verbreitung? |
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.
Anwendung von XUL evtl. in Kombination mit Mozilla_Prism
Alles was eine Java-API besitzt (Android, Apache Pivot, GWT) kann auch in 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 auf GTK aufsetzt (z.B. Hildon) kann (neben anderem) auch in Vala programmiert werden. 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 hat eine Csharp-ähnliche Syntax.
Auf Grund der Performance und Benutzerfreundlichkeit bietet sich Vala auch für die Programmierung der eigentlichen Applikation (nicht nur HMI) an.
Für die Projektierung und Gestaltung einer GTK-basierten GUI in deklarativer Form auf Basis von XML bietet sich Glade an.
Drei Vorschläge zur Realisierung einer Steuerung auf einem Panelrechner mit lokaler- und remote HMI:
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.
AJAX für die lokale HMI und remote HMI
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.