Проблема с выводом строки в порт

eip
Offline
Зарегистрирован: 05.05.2014

Друзья, подскажите плизз способ реализации вывода строки в порт с использованием Serial.print или Serial.write, что бы в порт не передовался символ конца строки.

Из доков - Текстовые строки в Ардуино объявляются как массив (array) типа char (символов - литер), оканчивающийся символом "конца строки".

Так вот, мне этот символ всю картину портит ))) Предполагаю что как то можно уменьшить массив на один последний байт.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

символ конца строки 0x00 - вы его имеете ввиду ? Тогда нужно передавать строки фиксированной длины char[5] str = "12345"; Если строка меньше размера переменной то используется 0x00 для оьозначения ее конца. В противном случае вы будете получать в переменной данные принадлежащие другим переменным.

eip
Offline
Зарегистрирован: 05.05.2014

а обрезать уже имеющуюся строку как то можно. Посмотрел "монитором" символ конца строки у меня char(13)

eip
Offline
Зарегистрирован: 05.05.2014

сейчас сделал несколько проверок  char(13) выводится в конце всех строк

eip
Offline
Зарегистрирован: 05.05.2014

Получилось исправить проблему так

void delOneChar (char* str) {
  int len = strlen(str);
  str[len-1] = 0;
}

 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Вообще это не символ конца строки это перевод строки "\n" называемый еще <LN> - по нему программы определяют конец передачи данных и приступают к их обработке, если данные накапливаются в буфер перед обработкой. но если обрабатывать каждый байт отдельно - то в нем нет особой необходимости.