Зависание данных в программе на Java

clone
Offline
Зарегистрирован: 04.05.2016

Доброе время суток! Столкнулся с проблемой, есть прога на Java, принимает , отображает , данные с arduino uno. 

Все бы хорошо, но через промежуток времени ( нет зависимости, может 20 мн, может 40 мин, а может и через 5 мин.) , зависают данные. Друина сама не висит, передача идет а отображения нет, зависшие цифры. После отключения соединения и подключения , все снова работает , до следующего зависания. Библиотека используется Jssc 2.8.0 , использовал сначала 2.7.0 результат был тот же. Если использовать библиотеку RXTX , то зависаний нет, но там свои заморочки, она мне не подходит, и с ней сильно грузится проц. 

Вот код непосредственно связанный с настройками com порта :

 String baudRate = baudrate.getSelectedItem().toString();

            Integer baudget = Integer.parseInt(baudRate);

           
            if (conButton.isSelected()) {

                try {

                    serialport.openPort();
                    serialport.setParams(baudget, 8, 1, 0);
                    serialport.setDTR(false);
                    serialport.setRTS(false);

                    icon.setIcon(iconYes);

                    status.setForeground(Color.blue);
                    status.setText("Connected to " + serialport.getPortName());

                    icon.setVisible(true);

                } catch (SerialPortException ex) {

                    conButton.setSelected(false);

                    status.setForeground(Color.RED);

                    status.setText("Cannot connect");
                }

            } else {

                try {

                    serialport.closePort();

                    status.setForeground(Color.darkGray);

                    status.setText("Disconnected : " + !serialport.isOpened());

                    icon.setIcon(iconNO);

                } catch (SerialPortException ex) {

                    status.setForeground(Color.RED);

                    status.setText("Port Cannot be closed");

                }
            }

            try {
                serialport.addEventListener(new SerialPortEventListener() {

                    @Override
                    public void serialEvent(SerialPortEvent e) {

                        if (e.isRXCHAR() && e.getEventValue() > 0) {

                            try {

                                String receivedData = serialport.readString();

                                 String[] sensor = receivedData.split(";");
                                 jTextField1.setText(sensor[0]);
                                 jTextField2.setText(sensor[1]);
                                 jTextField3.setText(sensor[2]);  

                            } catch (Exception exp) {

                                status.setText("Cannot receive data ");
                            }
                        }

                    }
                });

            } catch (SerialPortException ex) {

            }

        }

Может кто сталкивался с такой же проблемой , в чем может быть косяк, никак не пойму. Заранее спасибо!

 

Logik
Offline
Зарегистрирован: 05.08.2014

Жава херня, перепишите на С.

ПС. Вы форумом не ошиблись?