Java RS232 Problem
HejJeg har en atmel processer, som måler en temp. Denne atmel er forbundet vil et RS232 kabel til en pc, hvor på jeg har et java program som læser de værdier som atmellen sender ud på RS232.
Efter ca. 3 min. går mit java program meget langsom. Den bruger ikke CPU eller RAM. Hvis der kommer en svingning på min temp føler, er det ligesom at de værdier jeg får på min RS232, bliver lagt i kø, og kommer ind til mit program, men meget langsomt.
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals(ComPort.trim())) {
LogFil.SkrivLog("ComPort :" + ComPort.trim());
break;
}
}
}
try {
serialPort = (SerialPort) portId.open("Sun Control Klient", 2000);
}
catch (PortInUseException ex1) {
LogFil.SkrivLog("SerialPort Exception: " + ex1);
}
try
inputStream = serialPort.getInputStream();
in = new BufferedReader(new InputStreamReader(inputStream));
}
catch (IOException ex2) {
LogFil.SkrivLog("IOException: " + ex2);
}
try {
serialPort.addEventListener(this);
}
catch (TooManyListenersException e3) {
LogFil.SkrivLog("serialPort - TooManyListenersException" + e3);
}
serialPort.notifyOnDataAvailable(true);
try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_EVEN);
}
catch (UnsupportedCommOperationException e) {}
}
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:
Date time = new Date();
DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
DateFormat df2 = new SimpleDateFormat("HH-mm-ss");
try {
in2 = in.readLine();
}
catch (IOException ex4) {
LogFil.SkrivLog("IOException: " + ex4);
}
Index = in2.indexOf("A");
a = in2.substring(Index, Index + 5) + "\n";
out.println(a);
LogFil.SkrivLog("Modtaget og Sendt Data Fra Kit Til Server: \n" +
a.trim() + " - " + "Dato: " + df1.format(time) + " - " +
"Tid: " + df2.format(time));
if (a.trim().equals("A-5")) {
LogFil.SkrivLog("Fejl På Sensor nr. 1: \n" + a.trim() + " - " +
"Dato: " + df1.format(time) + " - " + "Tid: " +
df2.format(time));
}
Index = in2.indexOf("B");
b = in2.substring(Index, Index + 5) + "\n";
out.println(b);
LogFil.SkrivLog("Modtaget og Sendt Data Fra Kit Til Server: \n" +
b.trim() + " - " + "Dato: " + df1.format(time) + " - " +
"Tid: " + df2.format(time));
if (b.trim().equals("B-5")) {
LogFil.SkrivLog("Fejl På Sensor nr. 2: \n" + a.trim() + " - " +
"Dato: " + df1.format(time) + " - " + "Tid: " +
df2.format(time));
}
Index = in2.indexOf("C");
c = in2.substring(Index, Index + 4) + "\n";
out.println(c);
LogFil.SkrivLog("Modtaget og Sendt Data Fra Kit Til Server: \n" +
c.trim() + " - " + "Dato: " + df1.format(time) +
" - " + "Tid: " + df2.format(time));
if (c.trim().equals("C0")) {
LogFil.SkrivLog("FAN Værdi er \n: " + c.trim() + " - " +
"Dato: " + df1.format(time) + " - " + "Tid: " +
df2.format(time));
LogFil.SkrivLog("FAN Står Stille");
LogFil.SkrivLog("---------------------------------------------------------------------------------------------");
}
try {
Class.forName("com.mysql.jdbc.Driver");
}
catch (ClassNotFoundException ex1) {
LogFil.SkrivLog("ClassNotFoundException: " +
"Class.forName(com.mysql.jdbc.Driver)" + ex1);
}
try {
forb = (Connection) DriverManager.getConnection("jdbc:mysql://" +
ServerIP.trim() +
":" + SqlPort.trim() + "/" + DatabaseNavn.trim(),
SqlBrugerNavn.trim(), SqlPassword.trim());
LogFil.SkrivLog("MySql forbindelse Oprettet Til : " +
DatabaseNavn.trim() + " - " + "Dato: " +
df1.format(time) + " - " + "Tid: " + df2.format(time));
}
catch (SQLException ex2) {
LogFil.SkrivLog("------------------------------------------------------------------------------------------");
LogFil.SkrivLog("SQLException: " + ex2);
LogFil.SkrivLog("------------------------------------------------------------------------------------------");
}
Statement stmt = null;
try {
stmt = forb.createStatement();
}
catch (SQLException ex4) {
LogFil.SkrivLog("SQLException: " + ex4);
}
try {
rs = stmt.executeQuery("select * from fan");
while (rs.next()) {
fanrpm = rs.getString("rpm");
}
}
catch (SQLException ex5) {
}
try {
outputStream = serialPort.getOutputStream();
}
catch (IOException ex) {
}
messageString = fanrpm;
LogFil.SkrivLog("Blæser Værdi : " + fanrpm + " Sendt til Kit" + " - " +
"Dato: " + df1.format(time) + " - " + "Tid: " +
df2.format(time));
try {
outputStream.write(messageString.getBytes());
try {
forb.close();
LogFil.SkrivLog("------------------------------------------------------------------------------------------");
LogFil.SkrivLog("MySql forbindelse Lukket :" + " - " + "Dato: " +
df1.format(time) + " - " + "Tid: " +
df2.format(time));
LogFil.SkrivLog("------------------------------------------------------------------------------------------");
}
catch (SQLException ex6) {
LogFil.SkrivLog("------------------------------------------------------------------------------------------");
LogFil.SkrivLog("SQLException: " + ex6);
LogFil.SkrivLog("------------------------------------------------------------------------------------------");
}
}
catch (IOException ex3) {
LogFil.SkrivLog("------------------------------------------------------------------------------------------");
LogFil.SkrivLog("IOException" + ex3);
LogFil.SkrivLog("------------------------------------------------------------------------------------------");
}
}
}
public void run() {
while (true) {
try {
Thread.sleep(20000);
}
catch (InterruptedException ex) {
}
}
}
}
Hvad kan jeg gøre, er det noget med buffer??
