13. november 2004 - 00:27Der er
49 kommentarer og 1 løsning
Java proram som kan modtage data på seriel og skrive til fil
Jeg er igang med at lave en temperaturmåler og vil gerne have temperaturen vist i grafer på mrtg. Jeg tænkte så om der var nogen der havde et java program til at ligge, som kan modtage data fra RS232, og skrive det til en fil.
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
Så har jeg fundet en javakode som læser fra com porten. Nu mangler jeg bare at få det skrevet til en fil. Data'ene (temperaturen) skal gerne opdateres hele tiden i filen. Er der nogen der kan hjælpe mig?
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];
Så kommer det på en linie med store mellemrum. Jeg har prøvet at ændre på byte størrelsen (byte[] readBuffer = new byte[20];), men uden at det har hjulpet det helt store.
Hej igen. Så har jeg haft en gut til at kigge lidt på koden, og han fik det til at virke. Jeg har været utrolig taknemlig for al den tid du har brugt på det Arne :-)
Jeg har lige et sidste spørgsmål. Hvordan får man den til at overskrive den "gamle" temperatur i filen. Hvis den bare bliver ved med at skrive til filen kommer den hurtigt til at fylde en del.
Her er lige det der blev rettet: 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: StringBuffer readBuffer = new StringBuffer(); int c;
try { while ((c=inputStream.read()) !=10) { if(c!=13) readBuffer.append((char) c);
} //System.out.print(new String(readBuffer)); PrintWriter pw = new PrintWriter(new FileWriter(new File("C:\\temp.txt"), true)); String s1 = new String(readBuffer).toString(); String s2 = new String(s1.replaceAll("4 00","")); pw.println(new String(s2)); //System.out.println(s2 + " grader"); //pw.println((new String(readBuffer)).replaceAll("\r\n","").replaceAll( s ,"")); pw.close();
} catch (IOException e) {} break; } } }
Arne kan du ikke lige skrive et svar, så jeg kan give dig point
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.