Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
techniken:datenaustausch:processingserialread [2015/01/15 11:30] fbonowski |
techniken:datenaustausch:processingserialread [2016/11/16 13:49] (aktuell) fbonowski |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Mit Processing Daten von der Seriellen Schnittstelle empfangen ====== | ====== Mit Processing Daten von der Seriellen Schnittstelle empfangen ====== | ||
- | Genauso, wie ihr Ausgaben des Arduino im Serial-Monitor mitlesen könnt, kann auch ein beliebiges Programm auf eurem Computer diese Daten empfangen. | + | Genauso, wie ihr Ausgaben des Arduino im Serial-Monitor lesen könnt, kann auch ein beliebiges Programm auf eurem Computer diese Daten empfangen und verarbeiten. |
- | ====== Beispielcode: ====== | + | |
+ | Dazu muss euer Programm zunächst eine Verbindung über die Serielle Schnittstelle herstellen und dazu den Namen der Schnittstelle und die Baudrate angebnen. In Processing geht das mit der bereits vorinstallierten [[https://processing.org/reference/libraries/serial/|Serial Library (Dokumentation mit Beispielen zu allen Funktionen)]]. Auf eurem PC gibt es auch vorinstallierte Beispiele unter (''Examples/Libraries/Serial''). | ||
+ | |||
+ | ===== Beispielcode Processing: Serielle Verbindung herstellen und ankommende Daten ausgeben ===== | ||
+ | <code Java> | ||
+ | import processing.serial.*; //verwende die 'Serial' Library | ||
+ | |||
+ | Serial myPort; // Deklariere ein Object vom Typ 'Serial', mit dem Namen 'myPort' | ||
+ | |||
+ | //stelle eine Verbindung zum Arduino her. | ||
+ | void setup() { | ||
+ | // Um den Namen der Schnittstelle herauszufinden, lassen wir uns von der Serial-Klasse zunächst | ||
+ | // eine Liste der Namen der am PC vorhandenen Ports geben ('Serial.list()') | ||
+ | // Den x'ten Eintrag aus dieser Liste bekommen wir mit 'Serial.list()[x-1]' (die indices fangen mit 0 an) | ||
+ | |||
+ | // Bei den meisten PCs ist der Arduino der letzte Port in der Liste. | ||
+ | // Deshalb ermitteln wir zunächst die Länge der Liste (Serial.list().length) | ||
+ | // und nehmen uns den letzten Namen aus der Liste heraus (Serial.list()[Serial.list().length-1]) | ||
+ | |||
+ | String portName = Serial.list()[Serial.list().length-1]; // finde den Namen des letzten Serialports heraus. | ||
+ | int baudrate=115200; // Diese Baudrate muss mit der in eurem Arduinoprogramm übereinstimmen. | ||
+ | // String portName = "COM1"; // alternativ: verwende stattdessen einen bekannten Portnamen | ||
+ | myPort = new Serial(this, portName, baudrate); // Erzeuge ein Serial Objekt und stelle eine Verbindung her | ||
+ | } | ||
+ | |||
+ | //Lese Daten und gib sie in Processing aus | ||
+ | void draw() { | ||
+ | while (myPort.available() > 0) { // wiederhole das folgende, solange (while) es neue Daten (myPort.available() > 0)gibt. | ||
+ | char inByte = myPort.readChar(); // lese einen einzelnen Buchstaben von der Seriellen Schnittstelle | ||
+ | print(inByte); // gib den gelesenen Buchstaben im Fenster unter dem Code aus. | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </code> | ||
+ | ====== Beispielcode Empfang von Zahlenwerten: ====== | ||
<file Java receiveDataSerial.pde> | <file Java receiveDataSerial.pde> | ||
Zeile 16: | Zeile 50: | ||
// Initialze Serial communication. There may be multiple serial ports on your computer, so we have to select one: | // Initialze Serial communication. There may be multiple serial ports on your computer, so we have to select one: | ||
- | String[] portNames=Serial.list();//Serial.list() returns an array of port names | + | String[] portNames=Serial.list();//Serial.list() returns an array of port names |
+ | // if there is no serial port, quit with an error message | ||
+ | if (portNames.length==0){throw(new IllegalStateException("There are no Serial ports on this computer!"));} | ||
println(portNames); //print them to the user | println(portNames); //print them to the user | ||
// initialize the Serial port Object using the last name from the list and a Baudrate of 9600 | // initialize the Serial port Object using the last name from the list and a Baudrate of 9600 |