Processing - Applet?

Hi Leute,

ich wollte mein Ardunio Board mittels Processing ansprechen. Das geht auf meinem Mac eigt. ganz gut.

import processing.serial.*;
import cc.arduino.*;

Arduino arduino;
int ledPin = 6;

void setup()
{
  //println(Arduino.list());
  arduino = new Arduino(this, Arduino.list()[0], 57600);
  arduino.pinMode(ledPin, Arduino.OUTPUT);
}

void draw()
{
  arduino.digitalWrite(ledPin, Arduino.HIGH);
  delay(1000);
  arduino.digitalWrite(ledPin, Arduino.LOW);
  delay(1000);
}

Der o.g. lässt eine LED an Pin6 aufblinken. Jetzt hab ich ein Problem: Es funktioniert mit der Entwicklungsumgebung und als exportieres Programm - aber nicht als Applet im Browser.

Weiß da jemand weiter?

Grüße und Danke

Schätze mal, Dein Browser lässt das Applet nicht "rauswählen", also nicht mit der seriellen/USB-Schnittstelle arbeiten. Bin nicht sicher, ob das überhaupt mit einem Applet geht...

Ist das Applet signiert?

Was Du auf jeden Fall machen könntest wäre eine Applikation als Server laufen zu lassen, auf die Du Dich verbindest, und eine Applikation kann in Java auf Schnittstellen zugreifen. :)

Wofür willst Du das im Browser laufen lassen, sollen das Besucher Deiner Website nutzen können oder ist das für Dich, weil es der einfachste Weg ist, eine grafische Oberfläche zu haben?

Hmmm...

wie du schon gesagt hast, sollen Besucher auf der Website drauf zugreifen. Ich bin grad dabei, ein Sever einzurichten und das Board mittels SOAP anzusprechen. Dann bin ich auf Processing gestoßen und das erschien mir leichter.

Kriegt man das nicht irgendwie hin? Wie soll das mit dem siginieren funktionieren?

Grüße

Signieren würde nur was bringen, wenn das Board an dem Computer hängen würde, auf dem der Browser, repektive das Applet, läuft. In Deinem Fall also nix.

Du brauchst also ein Applet, dass eine Verbindung zu Deinem Server aufbaut, welcher dann über eine Verbindung zum Board die LED bedienen kann.

Was genau soll das Applet denn machen bzw. zeigen? Ggf. wärs mit JavaScript/Ajax einfacher als in Java...?

Naja... im Grunde genommen geht es mir ja nicht um das Applet an sich, sondern an die Steuerung des Boards via Webserver. D.h. ein User kann sich übers Internet auf dem Webserver einloggen (an dem ist das Board angeschlossen) und es dann steuern: Einfache Befehle senden, wie z.B. "Led geh an!".

Man kann ja über Java mit dem USB(Seriel)-Port kommunizieren. Dies würde dann auf dem Webserver mit SOAP realisiert. Nur ist dies ein wenig kompliziert, etc. und ich dachte - wie schon erwähnt - dass Processing mir da helfen würde, da es ja alles mit sich bringt.

Hmmm...

Grüße & Danke

und ich dachte - wie schon erwähnt - dass Processing mir da helfen würde, da es ja alles mit sich bringt.

Ab hier kann ich nur noch lesend an der Diskussion teilnehmen, mit Processing kenne ich mich überhaupt nicht aus. ;)

Hab mit Processing in Applets nicht so viel Erfahrung, aber ich denke, das Problem lässt sich relativ leicht umgehen, indem du einfach zwei Programme in Processing schreibst:

1) Ein Programm, das auf deinem Webserver läuft und einen Server aufmacht. Alles was das Programm tun muss, ist die eingehenden Daten über die serielle Schnittstelle an den Arduino weiterleiten. 2) Ein Client, den du als Applet von den Nutzern aufrufen lässt. Dieser stellt den Nutzern dann das Interface zur Verfügung und sendet alle Eingaben direkt an den Server.

Das ist ja von der Idee her nichts anderes, als das, was Joghurt schon vorgeschlagen hatte (man kanns nur eben auch in Processing machen, wenn man schon dabei ist ;) ). Wenn dein bisheriges Programm in Processing schon funktioniert, ist das kaum noch Arbeit. Einfach den Teil, der die Kommunikation mit dem Arduino regelt, in ein zweites Programm auslagern und die Kommunikation zwischen den zwei Programmen einbauen und das ist mit der Network-library (zu der ich grad nicht verlinken kann, weil das hier mein erstes posting ist... einfach mal in der processing-reference "libraries" anklicken und network auswählen) ziemlich einfach.

Vielleicht hilft das ja weiter. :)

mfg, Mirko

Kommt das dann auch mit Proxies klar? Z.B. wenn der Benutzer hinter einem Firmenproxy sitzt oder so?

Macht Processing das automatisch oder muss man das beachten?

Ja das hört sch ja gut an. Weiß aber nicht ganz, wie ich das praktisch umsetzen kann.

Wegen den Proxis mach ich mir erstmal keine Sorgen... 8-)

Grüße & Danke

@Edit: Wenn ich jetzt die Beispiele SharedCanvasServer und SharedCanvasClient nehme, funktionieren die ja lokal. Nur müsste ich mit diesen beiden ja auch mein Problem näherungsweise lösen können, oder? Wenn ich den Client als Applet im Browser öffne und den Server starte, "sollte" doch das Applet funktionieren. Tut es aber nicht... Hmm...

Keine ne’ Ahnung?