Hallo zusammen,
ich möchte mit Java und der Bibliothek jSerialComm an einen Arduino mit
Grbl G-Code Befehle senden und damit einen Schrittmotor ansteuern.
Bisher funktioniert nur das lesen, nicht aber das senden!
Ausgabe Konsole:
run:
1 :COM9
1
Gewählter Port: 1
USB-SERIAL CH340 (COM9)
Grbl 0.9a ['$' for help]
Der Hardware Aufbau funktioniert soweit, getestet hab ich es mit Arduino
Serial Monitor.
Zum Programm:
Ich gebe zuerst alle aktive COM Ports aus, lasse dann den Benutzer über
die Konsole einen wählen. Dann starte ich zwei Threats zum gleichzeitig
lesen und senden von G-Code.
Findet jemand den Fehler warum das Senden nicht funktioniert?
// -------------------------------------------------------------------
ich möchte mit Java und der Bibliothek jSerialComm an einen Arduino mit
Grbl G-Code Befehle senden und damit einen Schrittmotor ansteuern.
Bisher funktioniert nur das lesen, nicht aber das senden!
Ausgabe Konsole:
run:
1 :COM9
1
Gewählter Port: 1
USB-SERIAL CH340 (COM9)
Grbl 0.9a ['$' for help]
Der Hardware Aufbau funktioniert soweit, getestet hab ich es mit Arduino
Serial Monitor.
Zum Programm:
Ich gebe zuerst alle aktive COM Ports aus, lasse dann den Benutzer über
die Konsole einen wählen. Dann starte ich zwei Threats zum gleichzeitig
lesen und senden von G-Code.
Findet jemand den Fehler warum das Senden nicht funktioniert?
// -------------------------------------------------------------------
Java:
package com.port;
import java.util.Scanner;
import java.io_OutputStream;
import java.io.PrintWriter;
import com.fazecast.jSerialComm.SerialPort;
public class Main {
static int inputPort=0;
static SerialPort chosenPort;
public static void main(String[] args) {
// Aktive COM Ports ausgeben
SerialPort[] portNames = SerialPort.getCommPorts();
int i;
for(i = 1; i <= portNames.length; i++)
System.out.println(i+"
:"+portNames[i-1].getSystemPortName());
// Benutzer wählt COM Port
Scanner scan = new Scanner(System.in);
do{
try{
int input = Integer.parseInt(scan.nextLine());
if((input>0) && (input<i))
inputPort = input;
else
System.out.println("Bitte richtige Zahl eingeben!");
}catch(Exception e){
System.out.println("Bitte eine Zahl eingeben!");
}
}while(inputPort==0);
System.out.println("Gewählter Port: "+inputPort);
chosenPort = SerialPort.getCommPorts()[inputPort-1];
chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
System.out.println(chosenPort.getDescriptivePortName());
if(chosenPort.openPort()) {
// Seriell Lesen
Thread threadIn = new Thread(){
[USER=48687]@Override[/USER] public void run() {
Scanner input = new
Scanner(chosenPort.getInputStream());
while(input.hasNextLine()) {
try {
String line = input.nextLine();
System.out.println(line);
} catch(Exception e) {}
}
}
};
// Seriell Schreiben
Thread threadOut = new Thread(){
[USER=48687]@Override[/USER] public void run() {
try {Thread.sleep(100); } catch(Exception e) {}
PrintWriter output = new
PrintWriter(chosenPort.getOutputStream());
output.println("G0 X100");
output.flush();
}
};
threadIn.start();
threadOut.start();
}
else {
System.out.println("COM Port konnte nicht geöffnet werden");
}
}
}
Zuletzt bearbeitet von einem Moderator: