Вопрос про Serial и перевод byte в char
- Войдите на сайт для отправки комментариев
Пнд, 18/01/2016 - 10:51
Приветствую всех. Только осваиваю ардуино и наткнулся на одну проблемку, которую не понимаю. Есть такой код
int SerialByte; char SerialSymbol; void setup() { Serial.begin(115200); } void loop () { SerialByte = Serial.read(); SerialSymbol = char(SerialByte); if (SerialSymbol == 48) { Serial.println(SerialSymbol); Serial.println(SerialByte); Serial.println(""); } }
Посылаею ему в терминале команду 0, получаю ответ. Но я не понимаю почему он понимает условие на 48 символ ASCII, а не на 0. Я ведь уже перевёл командой char полученый в Serial.read 48 символ в символ 0. N/t/ независимо от того, пишу я в условии if (SerialSymbol == 48) или if (SerialByte == 48) выполнение этого условия не меняется. Почему так?
Что самое странное при выполнении Serial.print он работает верно - возвращает одно значение в byte (48), а второе в char (0). Только почему-то в if не учитывает это изменение.
'0' = 48 = 0x30 = B00110000 = (char)48 = (byte)48 = (int)48 = (long)48
от того, пишу я в условии if (SerialSymbol == 48) или if (SerialByte == 48) выполнение этого условия не меняется.
А Вы ещё напишите if (SerialSymbol == '0') и if (SerialByte == '0') и подумайте
Почему так?
А, т.е. получается вводить переменную для перевода в char вооще не надо? Так ещё лучше, спасибо.
Но можно и "переводить" .....
arduino-1.6.7\examples\04.Communication\ASCIITable