ich habe eine Frage, ich habe eine einfache Schaltung gebaut ein DigitalREAD meinetwegen einen Taster und als DigitalWRITE dann eine LED auf einen Ausgang gelegt die dann für 10 Sekunden an ist.
Jetzt möchte ich über JAVA mir den den Zustand der LED anzeigen lassen z.B. LED EIN, LED AUS.
aber ich nehme an, sogar java kann daten auf der seriellen schnittstelle empfangen. also kannst Du den arduino den zustand senden lassen und in java anzeigen.
Ich hab ehr wenig Erfahrung damit das stimmt, kann ich mir die Zustandsdaten, Ablaufprotokoll auch normal in der Konsole oder im Arduino-Programm ausgeben lassen?
Ich hab bisher ehr mit LOGO und S7 gearbeitet und NICHTS in die Konsole oder im JAVA anzeigen lassen, weil ich im Simatic alles sehen konnte....
naja, die IDE und Processing laufen auch unter Java. Vielleicht reicht Processing für Deine Zwecke schon aus.
Die Programmierung ist an Arduino angelehnt. Bsp. gibts auch.
Nimm davon lieber die 32Bit Version, läuft unter Windows laut meinen damaligen Tests schneller. Warum weis ich nicht.
Die Serielle Console kannst du vom Arduino Uno dann nicht mehr verwenden. Denn du brauchst die COM Schnittstelle für dein Java Programm. Macht aber auch keinen Unterschied.
Du kannst entweder die Konsole oder dein Java Programm nutzen. Das Protokoll sollte so simple sein, dass die Steuerung auch über die Konsole möglich ist.
Zum Beispiel:
Kommuniktation herstellen
Konsole oder Java Programm sendet B1:1;
Nun musst du entsprechend den Buchstabensalat auseinanderplücken.
B1 = Button/Taster 1
1 = HIGH/gedrückt.
Das ; dient dazu, dass der Arduino weiß, dass der Befehl komplett ist.
Mehrere Befehle auf einmal senden sähe dann so aus, B1:0;B4:1;B13:0;
Arduino ist C/C++. Nicht nur daran angelehnt. Die Abstraktion der IDE ändert daran nichts.
Er hat schon etwas recht. Es gibt an paar Punkte bei denen die Arduino Sprachmittel bewusst an Java angelehnt wurden. Besten Beispiel ist der Datentyp boolean. Das war lange Zeit nur ein typedef auf unsigned char, wie in C Urzeiten, was an manchen Stellen Probleme bereitet. Besser wäre hier von Anfang an der native C++ Datentyp bool gewesen.
nebelfieber:
Meine Frage/n: Ist die möglich und wenn ja wie?
Hi,
das ist gar nicht ganz trivial. Zunächst musst Du die RXTX-Lib für Java installieren und mit Deinem Projekt verknüpfen. Wenn das passiert ist, kannst Du mit folgendem
import gnu.io.*;
import java.util.Enumeration;
public class SerPort {
public static void main(String[] args) {
CommPortIdentifier serPortID;
Enumeration commPorts;
commPorts = CommPortIdentifier.getPortIdentifiers();
while (commPorts.hasMoreElements()) {
serPortID = (CommPortIdentifier) commPorts.nextElement();
if (serPortID.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println("Port gefunden: " + serPortID.getName());
}
}
System.out.println("Kein Fehler aufgetreten.");
}
}
testen, ob ein Arduino am Seriellen Port angeschlossen ist. Ich habe das unter Ubuntu für Netbeans gemacht, deswegen kann ich Dir für Windows leider nicht genau erklären, wie die RXTX-Lib korrekt einzubinden ist.