Guten Abend alle zusammen,
ich steuer über TCP/IP einen KUKA Roboter an und setze über Netzwerk Variablen, damit er seinen Position ändert. Wenn ich diese manuell eingeben läuft alles super. Sobald ich die Variablen jedoch aus einer Textdatei lesen will stellt sich mein Programm quer.
Die Methode "ladeDatei" liest die Datei aus und returned mir einen String.
Wenn ich den Verbindungsteil entferne läuft das Programm auch. Hier mal in "test3" festgehalten.
Interessant ist auch, dass das Programm läuft wenn ich einen Haltepunkt vor "return list.toArray(new String[0])" setze.
In der Konsole steht dann: "Listening for transport dt_shmem at adress:jdbconn"
Meine Erfahrung ist leider unzureichend um das Problem festzumachen. Ich hoffe Ihr könnt mir weiterhelfen
Vielen Dank schonmal!
ich steuer über TCP/IP einen KUKA Roboter an und setze über Netzwerk Variablen, damit er seinen Position ändert. Wenn ich diese manuell eingeben läuft alles super. Sobald ich die Variablen jedoch aus einer Textdatei lesen will stellt sich mein Programm quer.
Java:
package no.hials;
import java.io.IOException;
import java.util.Scanner;
import no.hials.crosscom.CrossComClient;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Anfahren {
public static void main(String[] args) throws IOException {
String[] test = {"172.19.11.46","7000"};
if (test.length != 2) {
System.out.println("Error! Both IP and port must be provided as input arguments!");
System.out.println("Terminating..");
System.exit(1);
}
String address = test[0];
int port = -1;
try {
port = Integer.parseInt(test[1]);
} catch (NumberFormatException ex) {
System.out.println("Error on parsing port number! Tried to convert '" + test[1] + "' to int..");
System.out.println("Terminating..");
System.exit(1);
}
CrossComClient client = null;
try {
client = new CrossComClient(address, port);
} catch (IOException ex) {
System.out.println(ex);
System.out.println("Terminating..");
System.exit(1);
}
Scanner sc = new Scanner(System.in);
String[] punkte;
System.out.println("Manuelle Eingabe (0)");
System.out.println("Einlesen einer Textdatei (1)");
int manual = 1;//Integer.parseInt(sc.nextLine().trim());
if (manual == 0) {
System.out.println("Wie viele Punkte zur Kalibrierung sollen angefahren werden?");
punkte = new String[Integer.parseInt(sc.nextLine().trim())];
for (int i = 1;i <= punkte.length ;i++ ) {
System.out.println("Geben sie den " + i +"ten Kalibrierungspunkt an");
punkte[i-1] = sc.nextLine().trim();
} // end of for
} else {
System.out.println("Name der Textdatei angeben (Bsp: test.txt)");
punkte = ladeDatei(sc.nextLine().trim());
} // end of if-else
for (int i = 0;i <punkte.length ;i++ ) {
System.out.println(punkte[i]);
} // end of for
System.out.println("Wie viele Sekunden soll zwischen den Punkten gewartet werden?");
int wait = Integer.parseInt(sc.nextLine().trim());
for (int i = 0;i <punkte.length ;i++ ) {
client.simpleWrite("MYPOS", punkte[i]);
try {
Thread.sleep(wait*1000);
}
catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
} // end of for
} // end of main
public static String[] ladeDatei(String datName) {
File file = new File(datName);
List<String> list = new ArrayList<String>();
if (!file.canRead() || !file.isFile()) {
System.exit(0);
} else {
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(datName));
String zeile = null;
while ((zeile = in.readLine()) != null) {
list.add(zeile);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
}
}
} // end of if-else
return list.toArray(new String[0]);
}
} // end of class Anfahren
Die Methode "ladeDatei" liest die Datei aus und returned mir einen String.
Wenn ich den Verbindungsteil entferne läuft das Programm auch. Hier mal in "test3" festgehalten.
Java:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.io.IOException;
import java.util.Scanner;
public class test3 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
String[] punkte;
System.out.println("Manuelle Eingabe (0)");
System.out.println("Einlesen einer Textdatei (1)");
int manual = Integer.parseInt(sc.nextLine().trim());
if (manual == 0) {
System.out.println("Wie viele Punkte zur Kalibrierung sollen angefahren werden?");
punkte = new String[Integer.parseInt(sc.nextLine().trim())];
for (int i = 1;i <= punkte.length ;i++ ) {
System.out.println("Geben sie den " + i +"ten Kalibrierungspunkt an");
punkte[i-1] = sc.nextLine().trim();
} // end of for
} else {
System.out.println("Name der Textdatei angeben (Bsp: test.txt)");
punkte = ladeDatei(sc.nextLine().trim());
} // end of if-else
for (int i = 0;i <punkte.length ;i++ ) {
System.out.println(punkte[i]);
} // end of for
} // end of main
private static String[] ladeDatei(String datName) {
File file = new File(datName);
List<String> list = new ArrayList<String>();
if (!file.canRead() || !file.isFile()) {
System.exit(0);
} else {
BufferedReader in = null;
try {
in = new BufferedReader(new FileReader(datName));
String zeile = null;
while ((zeile = in.readLine()) != null) {
list.add(zeile);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
}
}
} // end of if-else
return list.toArray(new String[0]);
}
} // end of class test3
Interessant ist auch, dass das Programm läuft wenn ich einen Haltepunkt vor "return list.toArray(new String[0])" setze.
In der Konsole steht dann: "Listening for transport dt_shmem at adress:jdbconn"
Meine Erfahrung ist leider unzureichend um das Problem festzumachen. Ich hoffe Ihr könnt mir weiterhelfen
Vielen Dank schonmal!
Zuletzt bearbeitet: