Gremp
15.Август.2023 15:09:30
1
Доброго времени суток! Пожалуйста, помогите разобраться.
Мне нужно из порта читать данные в двоичном виде, чтобы управлять реле. Должен читать 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 лайк
Gremp
15.Август.2023 15:19:08
3
Вы правы. Спасибо!
То есть на самом деле 00110000 и т.п.
а в терминале почему видим не 8 бит?
Gremp
15.Август.2023 15:23:04
4
например отправляя NUL я рассчитывал получить 00000000, а получаю 1101
А как послать в COM-порт bin или hex?
v258
15.Август.2023 16:22:58
5
Видимо, вместо print использовать write
2 лайка
Многие в этом мире расчитывают получить двукратное увеличение з/п, а получают двузначную инфляцию.
Так и тут выходит - шлете NUL (интересно как?), а приходит LF.
1 лайк
Gremp
16.Август.2023 08:59:17
7
Я c компа посылаю через ардуино, либо pyttu, а они похоже отправляют символ.
Может кто знает чем можно отослать BIN или HEX.
Gremp
16.Август.2023 09:00:30
8
Спасибо! Я понял, что отсылал LF.
Terminal 1.9,
HEX формат, например: $C1$10$13
1 лайк