Полученный байтовый массив не всегда корректен

У меня есть программа Arduino, которая отправляет через Bluetooth байтовый массив в программу Java.

Программа на Java получает данные о JSSC. Длина массива составляет 72 байта (18 с плавающей запятой по 4 байта). Как JSSC распознает конец передачи или узнает, что становится доступным новый байтовый массив?

В большинстве случаев передача правильная. Но время от времени отходы получаются.

Я нашел этот пример здесь.

http://www.javaprogrammingforums.com/java-se-api-tutorials/5603-jssc-library-easy-work-serial-ports.html

Это если (event.getEventValue() == 10) означает перевод строки, но у bytearray нет перевода строки.

Arduino:

Serial.write (bytearray, размер bytearray);

Джава:

    class SerialPortReader implements SerialPortEventListener {

    public void serialEvent(SerialPortEvent event) {
        int dataNumber = 0;           
        try {             
            if(event.isRXCHAR()){
                if(event.getEventValue() >= BYTE_NUMBER){
                    receivedByte = usbPort.readBytes(BYTE_NUMBER);

                    if(receivedByte != null) {
                        isRequestOK = true;       
                        byte[] myArray = new byte[FLOATSIZE];

                        for(int i = 0, y = 0; i < receivedByte.length; i++, y++) {  //i < receivedByte.length-1
                            if(myArray == null) {
                                y = 0;
                                myArray = new byte[FLOATSIZE];
                            }
                            if((i + 1) % FLOATSIZE != 0) {
                                myArray[y] = receivedByte[i];
                            } 
                            else {
                                myArray[y] = receivedByte[i];               
                                receivedValue[dataNumber] = ByteBuffer.wrap(myArray).order(ByteOrder.LITTLE_ENDIAN).getFloat();
                                myArray = null;                                 
                                dataNumber++;  
                            }
                        }                         
                    }
                }                          
            }                
        } catch (SerialPortException e) { }    ///InvocationTargetException oder NullPointerException  
    }//--------------------------- End of serialEvent ------------------------------------------------------------- 
}//--------------------------- End of SerialPortReader ------------------------------------------------------------

Кто-нибудь может мне помочь?

С наилучшими пожеланиями Вилли

PS Это мой первый вопрос на этом форуме. Надеюсь, я следовал правилам.

0 ответов

Другие вопросы по тегам