BT тип данных, символы.
- Войдите на сайт для отправки комментариев
В общем имеется программа на Android отсылающая такие вот пакеты
void loop() {
if (Serial.available()) {
BT = Serial.read();
}
if (BT == '^D') { // Forward
Forvard();
} else if (BT == '^U') { // Stop Forward
Stop();
} else if (BT == 'VD') { // Backward
Back();
} else if (BT == 'VU') { // Stop Backward
Stop();
} else if (BT == '>D') { // Right
Right();
} else if (BT == '<D') { // Left
Left();
}else if (BT == '<U'||'>U') { // Stop
Stop();
}
}
Но я не пойму какой тип данных должен быть для BT. как я понял тут должно быть string. написал вот так char BT[4];
но выдает ошибку:
bt:6: error: conflicting declaration 'char BT'
bt:0: error: 'BT' has a previous declaration as 'char BT [4]'
bt.cpp: In function 'void loop()':
bt:64: error: incompatible types in assignment of 'int' to 'char [4]'
bt:66: error: ISO C++ forbids comparison between pointer and integer
.
.
.
Подскажите пожалуйста как правильно все сделать?
Для начала читаем http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Во вторых как объявлен BT - догадтесь сами? Ну то есть можно догадатся что объявлен он как byte или char, но все же.
Вообщем причина такова:
Serial.read(); за один раз умеет читать только один байт. Следовательно если у вас команды двух-байтовые ее нужно вызвать минимум два раза.
Далее. Нужно либо bt объявить массивом, заполнить его элементы, а потом уже анализировать и разбиратся что за команда пришла, либо
тупо каждый раз дергать Serial.read() примерно так:
Спасибо, я правда уж проще придумал)
Спасибо, я правда уж проще придумал)
Оператор switch, ИМХО тут академичней бы смотрелся