kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




Externe Hardware mit Javascript ansteuern

(EN google-translate)

(PL google-translate)

Wie kann man mit einem PC-Programm elektrische Schaltvorgänge ausführen, oder elektrische Signale von einer Hardware empfangen?

Bei älteren Rechnern gab es den Parallel-(Drucker)-Port. Es gibt Möglichkeiten an dessen Pins mit ca. 100kHz Pegelwechsel durchzuführen und auch Signale zu empfangen.

Mit der Verschlankung der Rechner und der Einführung von USB verschwanden diese Ports. Die COM-Schnittstelle für serielle datenübertragung hat sich etwas länger gehalten, ist aber auch nur noch selten bei heutigen Rechnern nativ vorhanden. Hier kann allerdings nicht mehr direkt geschaltet werden, sondern eine serielle Nachricht muß an ein anderes Gerät geschickt und von diesem interpretiert werden.

Derzeit ist die einfachste Möglichkeit für eine Kommunikation mit einem externen Gerät vom PC aus, die verwendung einer USB-Emulation einer seriellen Schnittstelle. Dies wird im folgenden die Grundlage für entsprechende Kommunikation mit externer Hardware sein. Als Beispiel und einfachen flexibel einzusetzenden Ausgangspunkt wird ein Arduino-Micro verwendet, der bereits eine USB-seriell-Schnittstelle besitzt.

Grundsätzlich ist ein Webbrowser nicht dafür gedacht, Hardware auf einem Client-Rechner anzusprechen.

Möglich wäre dies durch die Kommunikation mit einem lokalen Server, der wiederum über externe Programme die Hardware anspricht.

Es gibt einige Plugins für Webbrowser, die diesen in seinen Fähigkeiten entsprechend erweitern. Für Arduino gibt es das Node.js-Modul "Johnny Five":

"Johnny Five"-Homepage http://johnny-five.io/

Über eine spezielle Firmware "StandardFirmata" kann der Arduino dann in die Lage versetzt werden, seriell an ihn geschickte Codesequenzen, die in einem Javascript-Dokument formuliert werden, zu interpretieren.

Dieser Weg wird hier aus folgenden Gründen nicht verfolgt:

  • Das Interpretieren von Code auf einem Mikrocontroller ist ein Overhead, der hier nicht benötigt wird und schiebt sich hemmend zwischen den direkt zu lösenden Aufgaben.
  • Der Ansatz verbirgt sehr stark die Komplexität der Sache und erschwert ein tiefergehendes Verständnis. D.h. man lernt viel über das verwendete proprietäre Werkzeug und sehr wenig allgemein Nützliches.
  • Man macht sich abhängig vom Zusammenspiel mehrerer Softwarelösungen von Drittanbietern.

Statt dessen soll ein elementarerer Weg eingeschlagen werden:

Auf dem Clientrechner wird ein lokaler Server installiert, der die Anfragen der Webseite entgegennimmt und eine externe Hardware ansteuert.

Die verwendeten Mittel:

  • XAMPP-Server (Kombination aus Apache-Server, MySQL, PHP und Perl),
  • Die Fähigkeit der Server-seitigen Skriptsprache PHO Port-Kommunikation durchzuführen,
  • POST-Anfragen mit Hilfe von Formularen auf einer Webseite und im weiteren Verlauf direkt in Javascript XMLHttpRequest.

Der anzusprechende Mikrocontroller ist ein Arduino-Micro. Da aber lediglich die Fähigkeit der seriellen Kommunikation genutzt wird, ist der hier verfolgte Ansatz allgemein nutzbar.

Das Szenario wird ausgehend vom Mikrocontroller hin zur Webseite aufgebaut. D.h. Man beginnt mit der Programmierung des Mikrocontrollers, lernt dann etwas über Server-seitige Skripte und schließlich wie deren Verarbeitung von einer Webseite her mit Javascript ausgelöst werden kann.