Arduino Serial.println() и com.pi4j.wiringpi.Serial - странный порядок чтения или чтение только нечетных байтов?

Адаптируясь из библиотеки PI4J ( WiringPiSerialExample), у меня есть этот небольшой отрывок для чтения данных, отправляемых в Raspberry serial. Последовательное соединение осуществляется непосредственно от tx - rx на Teensy (используя Serial 5) к UART, соответствующему rx tx на Raspberry Pi (Raspberry zero w).

Строки ниже выполняются в цикле с интервалом в 20 миллисекунд.

static void getByte(){
        /* DATA RECEIVED FROM MICROCONTROLLER */
        int dataavail = Serial.serialDataAvail(fileDescriptor);

        while( dataavail > 0){

            byte data = Serial.serialGetByte(fileDescriptor);

            if( data == 10 ){
                System.out.println(new String(bbuffer));
                for(int i = 0; i < bytesRead; i++){
                    System.out.print(bbuffer[i] + " ");
                }
                System.out.println( "number of bytes:" + bytesRead);
                bytesRead = 0;
                bbuffer = new byte[1024];
            }

            else{
                bbuffer[bytesRead] = data;
                bytesRead++;
            }   

            dataavail = Serial.serialDataAvail(fileDescriptor);
        }
    }

Это цикл на стороне Arduino, отправляющий массив байтов в этом первом примере:

void loop() {
  delay(1000);

  byte buff[] = {48,49,50,51,52,53,10};
  Serial5.write(buff,7);
}

Выходные данные на консоли Java-апплета:

135024
49 51 53 48 50 52 number of bytes:6

Пока я не могу быть уверен, почему заказ изменился. Но возьмем следующий пример, запустив эту модификацию в цикле arduino. Я не уверен, как объяснить, что происходит

void loop() {
  delay(1000);
  Serial5.println("a b c d e f"); 
}

это выводит.

abcdef
32 32 32 32 32 13 97 98 99 100 101 102 number of bytes:12

Я могу получить только этот вывод, вставив один символ в середине других. Если я уберу пробел между символами ("a b c d e f") to ("abcdef") выход:

bdf
98 100 102 number of bytes:3

Как я могу отладить это поведение или как правильно с этим бороться?

0 ответов

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