java-arduino-serielle Kommunikation
Ich versuche ein java-arduino-serielle Kommunikation. So weit ich heruntergeladen habe den code aus der Arduino-Seite ( http://playground.arduino.cc/interfacing/java ), aber ich bekomme eine Fehlermeldung.
Code:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.util.Enumeration;
public class SerialTest implements SerialPortEventListener {
SerialPort serialPort;
/** The port we're normally going to use. */
private static final String PORT_NAMES[] = {
"/dev/tty.usbserial-A9007UX1", //Mac OS X
"/dev/ttyACM0", //Raspberry Pi
"/dev/ttyUSB0", //Linux
"COM3", //Windows
};
/**
* A BufferedReader which will be fed by a InputStreamReader
* converting the bytes into characters
* making the displayed results codepage independent
*/
private BufferedReader input;
/** The output stream to the port */
private OutputStream output;
/** Milliseconds to block while waiting for port open */
private static final int TIME_OUT = 2000;
/** Default bits per second for COM port. */
private static final int DATA_RATE = 9600;
public void initialize() {
//the next line is for Raspberry Pi and
//gets us into the while loop and was suggested here was suggested http://www.raspberrypi.org/phpBB3/viewtopic.php?f=81&t=32186
System.setProperty("gnu.io.rxtx.SerialPorts", "/dev/ttyACM0");
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
//First, Find an instance of serial port as set in PORT_NAMES.
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
for (String portName : PORT_NAMES) {
if (currPortId.getName().equals(portName)) {
portId = currPortId;
break;
}
}
}
if (portId == null) {
System.out.println("Could not find COM port.");
return;
}
try {
//open serial port, and use class name for the appName.
serialPort = (SerialPort) portId.open(this.getClass().getName(),
TIME_OUT);
//set port parameters
serialPort.setSerialPortParams(DATA_RATE,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
//open the streams
input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
output = serialPort.getOutputStream();
//add event listeners
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
} catch (Exception e) {
System.err.println(e.toString());
}
}
/**
* This should be called when you stop using the port.
* This will prevent port locking on platforms like Linux.
*/
public synchronized void close() {
if (serialPort != null) {
serialPort.removeEventListener();
serialPort.close();
}
}
/**
* Handle an event on the serial port. Read the data and print it.
*/
public synchronized void serialEvent(SerialPortEvent oEvent) {
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
String inputLine=input.readLine();
System.out.println(inputLine);
} catch (Exception e) {
System.err.println(e.toString());
}
}
//Ignore all the other eventTypes, but you should consider the other ones.
}
public static void main(String[] args) throws Exception {
SerialTest main = new SerialTest();
main.initialize();
Thread t=new Thread() {
public void run() {
//the following line will keep this app alive for 1000 seconds,
//waiting for events to occur and responding to them (printing incoming messages to console).
try {Thread.sleep(1000000);} catch (InterruptedException ie) {}
}
};
t.start();
System.out.println("Started");
}
}
Das ist die Ausgabe die ich bekomme:
Stabil Bibliothek ========================================= Native lib
Version = RXTX-2.2pre2 Java lib Version = RXTX-2.1-7 WARNING: RXTX
Version mismatch Jar version = RXTX-2.1-7 native lib Version =
RXTX-2.2pre2
Konnte nicht gefunden COM port.
Gestartet
Ich bin mit Linux. Und ich denke, dass der port korrekt ist. Jemand helfen könnte?
- Sie können sich diese Abfrage. stackoverflow.com/questions/22592188/mismatched-rxtx-versions
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem ich die Probleme und kämpfen mit RXTX und JSSC für eine Weile, entwickelte ich die JAVA-Arduino-Kommunikation Bibliothek.
Meine Bibliothek hat (hopefullyy) tollen Dokumentation(zu finden auf der SourceForge-Wiki für die Bibliothek) und sagt Ihnen genau, wie zu installieren und zu verwenden. Nach dem Download beide Gläser in die Bibliothek und wie Sie in Ihrem classpath, nur sind die folgende Anweisung vor der Klassendefinition:
Nun, alles, was Sie brauchen, ist das folgende code-snippet in Ihre Methode, und du bist gut zu gehen!
Die Bibliothek kommt auch mit Beispiel-code, dass ich dachte, dass würde helfen, die Geschwindigkeit entlang des Prozesses.
"Konnte Nicht gefunden Com Port" ist der Standard-Fehler, wenn der Arduino kann nicht Schnittstelle mit der Arduino IDE.
In diesem Fall aber, der Fehler ist nicht zu sagen, dass die Arduino IDE kann nicht sehen, Ihr Arduino - Ihr zu sagen, dass die RXTX Bibliothek nicht sehen können, den Arduino.
Ihre PC-Treiber ist möglicherweise eine ältere version, und noch nicht die Unterstützung der Kom erforderlich RXTX...
Hier mein Rat:
Plugin Ihr Arduino-Board
Gehen Sie zu Systemsteuerung ---> System und Sicherheit ---> System ---> Auf der linken Seite Geräte-Manager
Erweitern Sie Andere Geräte.
Unter Andere Geräte, werden Sie feststellen, ein Symbol mit einem kleinen gelben Fehler-Grafik. (Trennen Sie alle anderen Geräte an jeden Seriellen Port)
Rechtsklick auf das Gerät ---> Treiber Aktualisieren-Software
Wählen Sie " Durchsuchen meine computer nach Treibersoftware
Klicken Sie auf browse (Durchsuchen)- - - > Durchsuchen Sie den Ordner der Arduino-Umweltt, die Sie heruntergeladen haben, von der Arduino-website. Wenn nicht dann heruntergeladen http://arduino.cc/en/Main/Software
Nach dem Surfen daneben gehören Unterordner.
Klicken Sie auf weiter ---> Ihre Treiber installiert werden.
Zusammenbruch Andere Geräte ---> Port Erweitern ( seine im Geräte-manager nur unter andere Geräte )
Sehen Sie Arduino Geschrieben ---> für COM-ANSCHLUSS (schließen Sie den Geräte-manager)
Gehen Sie zum Arduino-Umwelt ---> Extras ---> Seriell-Port ---> Wählen Sie den COM-PORT, wie oben im ANSCHLUSS im Geräte-manager. (Wenn Sie mit einem anderen Arduino-Board anstelle von UNO und wählen Sie dann die gleichen in-boards )
Referenzmaterial: http://www.devfactor.net/2014/10/26/arduino-basics-serial-communication/
scheint es zu sein, die Erlaubnis.
versuchen Sie : sudo chmod 666 /dev/ttyACM0 (usb ) und wiederholen Sie den java-code wieder.