Einen wunderschönen, guten Tag wünsche ich,
Ich habe folgendes Problem:
Hab ein Programm in Java geschrieben das über den Com Port Daten an den Arduino sendet.
Wenn ich das Programm starte und die Daten sende blinken die RX LED und die LED am DO 13 ein wenig und dann passiert nichts mehr, also Serial.available bleibt 0.
Wenn ich per SerialMonitor von Arduino was sende funktioniert alles aber nicht mit eigenem Java Programm.
So weit bin ich:
-COM Port und PortParameter stimmen
-Verbindung steht
-Ich schicke die Daten wie der SerialMonitor (hab mir den SourceCode besorgt und mit meinem verglichen)
-Hab auch beispiel Javaprogramm aus dem Inet probiert, geht auch nicht
mein Arduino sketch:
int led = 13;
String combine = "";
char buf[200];
void setup() {
// initialize serial:
Serial.begin(9600);
combine.reserve(200);
// reserve 200 bytes for the inputString:
pinMode(led, OUTPUT);
}
void loop() {
while (Serial.available()) {
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
char inChar = (char)Serial.read();
combine = combine + inChar;
}
combine.toCharArray(buf, combine.length());
Serial.println(buf);
delay(10);
}
Entscheidende Zeilen aus meinem Java Programm:
enumComm = CommPortIdentifier.getPortIdentifiers();
while(enumComm.hasMoreElements()){
serialPortID = (CommPortIdentifier) enumComm.nextElement();
messageTextArea.append("\n>>Opening Port <" + serialPortID.getName() + ">");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
//Serial Port öffnen
try {
serialPort = (SerialPort) serialPortID.open("Arduino", 500);
}
catch (PortInUseException e) {
messageTextArea.append("\n>>Port is already in use");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
continue;
}
//Outputstream erreichen
try {
out = serialPort.getOutputStream();
}
catch (IOException e) {
messageTextArea.append("\n>>OutputStream not reachable");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
continue;
}
//Inputstream erreichen
try {
in = serialPort.getInputStream();
}
catch (IOException e) {
messageTextArea.append("\n>>InputStream not reachable");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
continue;
}
//SerialPort Parameter setzen
try {
serialPort.setSerialPortParams(9600, dataBits, stopBits, parity);
}
catch(UnsupportedCommOperationException e) {
messageTextArea.append("\n>>Unable to set\nPort Parameter");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
}
//Listener erstellen
try {
serialPort.addEventListener(new serialPortEventListener());
}
catch (TooManyListenersException e) {
messageTextArea.append("\n>>Could not create a\n Listener");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
continue;
}
//Melden wenns was neues gibt
serialPort.notifyOnDataAvailable(true);
connected = true;
messageTextArea.append("\n>>Connected to Port\n <" + serialPortID.getName() + ">\n Asking vor Arduino");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
try {
out.write("Hallo Arduino\n\0\b".getBytes());
out.flush();
} catch (IOException ex) {
messageTextArea.append("\n>>Unable to send Bytes");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
}
time = System.currentTimeMillis();
while(true){
try {
if(in.available() < 0) break;
}
catch (IOException ex) {
messageTextArea.append("\n>>Error Readig Data");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
}
if(System.currentTimeMillis() - time >= TimeOut){
messageTextArea.append("\n>>Answer Timeout");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
serialPort.close();
try {
out.close();
in.close();
} catch (IOException ex) {
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
connected = false;
break;
}
}
if(connected == true){
try {
num = in.read(bytebuf);
System.out.println("Message: " + new String(bytebuf, 0, num));
} catch (IOException ex) {
Logger.getLogger(Frame.class.getName()).log(Level.SEVERE, null, ex);
}
if("#".contentEquals(new String(bytebuf, 0, 1))){
messageTextArea.append("\n>>Found Arduino");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
break;
}
else{
messageTextArea.append("\n>>Not Arduino");
messageTextArea.setCaretPosition(messageTextArea.getDocument().getLength());
continue;
}
}
}
Ich würde mich riesig freuen wenn mir jemand helfen könnte.
Ich bitte darum das sämtliche Einwürfe bezüglich Rechtschreibung ezt. , sprich alles was nichts mit meinem Problem zu tun hat, weggelassen werden. Danke