Чтение и вывод в serial port

Доброго времени суток! Пожалуйста, помогите разобраться.
Мне нужно из порта читать данные в двоичном виде, чтобы управлять реле. Должен читать 1 байт, а у меня такая ерунда.

void setup() {
  Serial.begin(115200);
}
  
void loop(){ 
  if (Serial.available())
  {
    byte d1 = Serial.read();
    Serial.println(d1, BIN);
   }
}

отправляю:
0
1
2
пробел
a (английская)

В консоль получаю
110000
110001
110010
100000
1100000

С последним числом ошиблись наверное. Если там было 1100001 то всё совсем правильно. Шлёте символы, получаете их коды: 48, 49, 50, 32 и должно быть 97, а не 96

1 лайк

Вы правы. Спасибо!
То есть на самом деле 00110000 и т.п.
а в терминале почему видим не 8 бит?

например отправляя NUL я рассчитывал получить 00000000, а получаю 1101
А как послать в COM-порт bin или hex?

Видимо, вместо print использовать write

2 лайка

Многие в этом мире расчитывают получить двукратное увеличение з/п, а получают двузначную инфляцию.

Так и тут выходит - шлете NUL (интересно как?), а приходит LF.

1 лайк

Я c компа посылаю через ардуино, либо pyttu, а они похоже отправляют символ.
Может кто знает чем можно отослать BIN или HEX.

Спасибо! Я понял, что отсылал LF.

Terminal 1.9,
HEX формат, например: $C1$10$13

1 лайк

Спасибо!!!