-
Notifications
You must be signed in to change notification settings - Fork 36
Description
After using the serial listener for some time java kills the process because of memory leak. ()
package bbb;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import org.bulldog.beagleboneblack.BBBNames;
import org.bulldog.core.io.serial.SerialDataEventArgs;
import org.bulldog.core.io.serial.SerialDataListener;
import org.bulldog.core.io.serial.SerialPort;
import org.bulldog.core.platform.Board;
import org.bulldog.core.platform.Platform;
//import org.bulldog.core.util.BulldogUtil;
/**
-
@author Datenheld
*
*/
public class SerialExample {
public static StringBuilder sb = new StringBuilder();
public static void main(String... args) throws IOException {//Get your platform final Board board = Platform.createBoard(); //Retrieve a serial port (UART2) and configure it SerialPort serial2 = board.getSerialPort(BBBNames.UART2); serial2.setBaudRate(9600); serial2.setBlocking(false); serial2.open(); final String host = "192.168.17.44" ;// inner range device host ip adddress final int port = 7575; serial2.addListener(new SerialDataListener() { @Override public void onSerialDataAvailable(SerialDataEventArgs args) { //String hex_buff = args.getDataAsString(); /* for (byte b : args.getData()) { sb.append(String.format("%02X ", b)); } */ for (byte b : args.getData()) { sb.append(String.format("%02X ", b)); } //sb.append(hex_buff); System.out.println("POLON MESSGE " + sb); if (sb.length() >= 7 ){ System.out.println("char at " + sb.charAt(sb.length() - 1)); System.out.println("char at " + sb.charAt(sb.length() - 2)); System.out.println("char at " + sb.charAt(sb.length() - 3)); System.out.println("char at " + sb.charAt(sb.length() - 4)); System.out.println("char at " + sb.charAt(sb.length() - 5)); System.out.println("char at " + sb.charAt(sb.length() - 6)); } if( (sb.length()>=7) && (sb.charAt(sb.length() - 2) == 'A') && (sb.charAt(sb.length() - 3) == '0') && (sb.charAt(sb.length() - 4) == ' ') && (sb.charAt(sb.length() - 5) == 'A') && (sb.charAt(sb.length() - 6) == '0') && (sb.charAt(sb.length() - 7) == ' ')) { System.out.println("log ok"); System.out.println(" Time milis =====>>>>>"+System.currentTimeMillis() ); SendOverTCPIP(sb.toString()); sb = new StringBuilder(); } // TO DO use delimiter 0A 0A position last from sb-1 and last from sb System.out.println(sb.toString()); System.out.println(sb.length()); // System.out.println(args.getDataAsString()); // SendOverTCPIP(args.getDataAsString()); } private void SendOverTCPIP(String dataAsString) { Socket innerrangesocket = null; try{ InetAddress inetAddressIR = InetAddress.getByName(host); innerrangesocket = new Socket(inetAddressIR, port); PrintWriter myprintwriter = new PrintWriter(innerrangesocket.getOutputStream(), true ); String userinput = dataAsString; myprintwriter.println(userinput); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if(innerrangesocket != null) try { innerrangesocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } });;serial2.writeString("0331123491\r\n");
//BulldogUtil.sleepMs(3000);
try {
Thread.sleep(3000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
serial2.writeString("00191\r\n");
//serialPort.writeString("0331123491\r\n"); ARMARE
// serialPort.writeString("040112348F\r\n"); DEZARMAREserial2.writeString("00191\r\n"); try { Thread.sleep(8000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } //System.out.println("Sleep 500 Ms"); //BulldogUtil.sleepMs(500); } //serial2.close(); //serial1.close();}
// public void main(String args){}do here
}