Hallo an alle Helfer,
ich arbeite mit Windows xp Prof. und schreibe meine Programme mit Eclipse, jdk 1.6.0_14 und als lib die RXTX.jar, dass nur mal zu den Gegebenheiten.
Ich habe ein Progrämmchen zum Erfassen der Daten aus einer TK-Anlage. Es funktioniert soweit ganz gut, nur das beim zweiten Mal des Erfassens viele Fragezeichen vor dem 2. und nachfolgenden Datensätzen stehen. Ich habe mir schon alle Daten während des Betriebes ausgeben lassen, wo dieses Fragezeichen auch dabei war. Dann bin ich "Step by Step" mit Eclipse durchgegangen und da kamen keine Fragezeichen.
Ich habe auch schon versucht die Fragezeichen mit Leerzeichen zu ersetzen und danach mit trim() die Leerzeichen zu beseiten. Wäre aber auch nicht die optimale Lösung. Die Anzahl der Fragezeichen ist auch immer unterschiedlich. Ich kann mir das jetzt nicht erklären.
Hier ein Beispiel der Ausgabe:
Die viele Fragezeichen werden komischerweise rausgenohmen, aber es stehen wirklich viele Fragezeichen ab dem 2. Datensatz davor.
Hier der Java-Code:
So, jetzt zu meine Fragen:
Woher kommen die Fragezeichen?
Warum werden sie vor jedem Datensatz gesetzt und das erst bei dem zweiten und nicht schon beim ersten Datensatz?
Wie kann ich dieses Problem beseitigen.
Für jede Hilfe bin ich dankbar.
Gruß seven.
ich arbeite mit Windows xp Prof. und schreibe meine Programme mit Eclipse, jdk 1.6.0_14 und als lib die RXTX.jar, dass nur mal zu den Gegebenheiten.
Ich habe ein Progrämmchen zum Erfassen der Daten aus einer TK-Anlage. Es funktioniert soweit ganz gut, nur das beim zweiten Mal des Erfassens viele Fragezeichen vor dem 2. und nachfolgenden Datensätzen stehen. Ich habe mir schon alle Daten während des Betriebes ausgeben lassen, wo dieses Fragezeichen auch dabei war. Dann bin ich "Step by Step" mit Eclipse durchgegangen und da kamen keine Fragezeichen.
Ich habe auch schon versucht die Fragezeichen mit Leerzeichen zu ersetzen und danach mit trim() die Leerzeichen zu beseiten. Wäre aber auch nicht die optimale Lösung. Die Anzahl der Fragezeichen ist auch immer unterschiedlich. Ich kann mir das jetzt nicht erklären.
Hier ein Beispiel der Ausgabe:
Die viele Fragezeichen werden komischerweise rausgenohmen, aber es stehen wirklich viele Fragezeichen ab dem 2. Datensatz davor.
Code:
09.10.2009 11:45 00:04:19 11 IB100 09 ########### 0.000
?09.10.09 11:38 00:15:25 50 IB2 09 ########### 0.000
Hier der Java-Code:
Code:
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
// byte[] readBuffer = new byte[20];
ReadIni pathToOutputfile = null;
try {
pathToOutputfile = new ReadIni();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String pfad = null;
try {
pfad = pathToOutputfile.getPathToOutput();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
StringBuffer strBuffer = new StringBuffer();
File inBW = new File(pfad);
int c = 0;
try {
while ((c = inputStream.read()) != 10) { // 10 - Newline LN
if (c != 13) // 13 - carriage return
if (c != 63) // 63 - ? (Fragezeichen)
strBuffer.append((char) c);
}
String aaa = strBuffer.append((char) c).toString();
String scannedInput = strBuffer.toString();
StringTokenizer st = new StringTokenizer(scannedInput);
String token = "";
int i = 0;
// Deklaration und Initialisierung
String datum1 = "";
....
ReadIni tkAnlage = new ReadIni();
char tkHersteller = tkAnlage.getTKHersteller();
String zeitS = "";
String dauerRufnr = "";
Calendar cal = Calendar.getInstance();
cal.setTime(new Date()); //heute
int jahr = cal.get(Calendar.YEAR);
while (st.hasMoreTokens()) {
token = st.nextToken().trim();
i++;
switch (tkHersteller) {
case 'E':
if (i == 1) {
datum1 = token;
datum2 = datum1.replace("/", ".");
tag_monat = datum2.substring(0, 6);
jahr2 = datum2.substring(6);
if (jahr2.length() <= 2) {
datum4 = tag_monat + jahr;
} else {
datum4 = datum2;
}
}
if (i == 2) {
zeit = token;
}
if (i == 3) {
dauer = token;
}
if (i == 4) {
internNr = token;
}
if (i == 5) {
in_out = token;
}
if (i == 6) {
nobody = token;
}
if (i == 7) {
telefonNr = token;
}
if (i == 8) {
preis = token;
}
if (i == 9) {
waehrung = token;
}
break;
case 'S':
String leitung = "";
if (i == 1) {
datum1 = token;
datum2 = datum1.substring(0, 8);
zeitS = datum1.substring(8, 16);
tag_monat = datum2.substring(0, 6);
jahr2 = datum2.substring(6);
if (jahr2.length() <= 2) {
datum4 = tag_monat + jahr;
} else {
datum4 = datum2;
}
}
// if (i == 2) {
zeit = zeitS;
// }
if (i == 3) {
leitung = token;
}
if (i == 4) {
internNr = token;
}
if (i == 5) {
dauerRufnr = token;
int maxlenght = dauerRufnr.length();
dauer = dauerRufnr.substring(0, 8);
telefonNr = dauerRufnr.substring(8, maxlenght);
}
break;
default:
break;
}
}
// Daten aus INI-Datei
ReadIni date = new ReadIni();
String wert_1 = date.getDatum();
...
String[] datentk = { datum4, zeit, dauer, internNr, in_out,
nobody, telefonNr, preis, waehrung };
String[] arr = { wert_1, wert_2, wert_3, wert_4, wert_5,
wert_6, wert_7, wert_8, wert_9 };
SortedMap<String, String> sm = new TreeMap<String, String>();
for (int j = 0; j < datentk.length; j++) {
sm.put(arr[j], datentk[j]);
}
String ausgabe = "";
for (String key : sm.keySet()) {
//System.out.printf("%s \t", sm.get(key));
ausgabe += sm.get(key) + "\t";
}
FileWriter ausgabeFW = new FileWriter(inBW, true);
ausgabeFW.write(ausgabe + "\r\n");
ausgabeFW.close();
} catch (IOException e) {
...
So, jetzt zu meine Fragen:
Woher kommen die Fragezeichen?
Warum werden sie vor jedem Datensatz gesetzt und das erst bei dem zweiten und nicht schon beim ersten Datensatz?
Wie kann ich dieses Problem beseitigen.
Für jede Hilfe bin ich dankbar.
Gruß seven.