Bulldog icon indicating copy to clipboard operation
Bulldog copied to clipboard

Serial Listener Leak

Open mihainigrini opened this issue 10 years ago • 1 comments

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"); DEZARMARE

         serial2.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 }

mihainigrini avatar Oct 05 '15 10:10 mihainigrini

@Datenheld can you help remedy the problem ?

mihainigrini avatar Oct 08 '15 13:10 mihainigrini