Serial.read не передаёт символ завершения строки. Симулятор Circuits в Tinker CAD.
- Войдите на сайт для отправки комментариев
Вс, 26/11/2017 - 14:22
Необходимо получить некое число от пользователя в виде строки, затем преобразовать её в float, дабы после использовать в вычислениях. Проблема в том, что нужно всё это сделать на эмуляторе Tinker CAD. В нём есть эмуляция Serial Port, но почему-то Serial.read() не считывает символ завершения строки при нажатии ENTER. Я пробовал сравнивать и по кодам в ASCII - результат тот же, сообщение "VIZHU" не выводится. Так же дебаггер показывает, что X принимает значение последнего введёного символа, отличного от символа завершения строки. Это проблема конкретного эмулятора или я что-то делаю не так? Вот код простой проверки на распознавание нажатия ENTER, который не работает.
char x;
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available()>0)
x=Serial.read();
if(x=='\n' || x == '\r')
Serial.print("VIZHU");
}
При вводе числа 56 и нажатии кнопки "Enter" дебаггер показывает, что переменная x хранит последний символ '6', а не '\n' или '\r'.
Поэтому я не могу отследить конец строки и банально вывести её на экран правильно, используя например условие
if(x=='\n'){ Serial.print(exampleString); x = 0; }Пожалуйста помогите.
Ну а терминал как настроен? Указано что надо добавлять \r\n? Может их там нет, потому-что вы их не шлете?
Терминал вообще нельзя настроить. Это эмулятор от Autodesk в браузере с кнопочкой Send.
Терминал вообще нельзя настроить. Это эмулятор от Autodesk в браузере с кнопочкой Send.
Вероятно, сериал-монитор эмулятора не отсылает этих символов. Чтобы не отказываться от эмулятора - могу посоветовать придумать свой символ окончания строки и передавать его после данных. А потом, в коде для реального ардуино - поменяете этот свой символ на \r или \n
Терминал вообще нельзя настроить. Это эмулятор от Autodesk в браузере с кнопочкой Send.
Он устанавливается на локальную машину или в инете только доступен? Если первое - можно поправить эмулятор :)