Inhaltsverzeichnis

Ü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 konkrete Lösungsmöglichkeiten für eine Steuerung mit beiden HMI-Typen vorgestellt.

Embedded / Mobile Plattformen

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 Google 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.

Touch Libs

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:

Touch Browser

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

Remote HMI SDKs

Bibliotheken zur Entwicklung entfernter GUIs. Die für den Benutzer optimale remote HMI

Web-basiert

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

RIAs

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.

Gecko basiert

FIXME Anwendung von XUL evtl. in Kombination mit Mozilla_Prism

Enhancements / Besonderheiten

Java

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.

Vala / GTK

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.

Konkrete Lösungsmöglichkeiten

Drei Vorschläge zur Realisierung einer Steuerung auf einem Panelrechner mit lokaler- und remote HMI:

1. Lokal: Touch Lib / Remote: Web-basiert

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. Lokal und Remote: Web-basiert

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.

3. Lokal: Touch Lib / Remote: RIA