String to char
- Войдите на сайт для отправки комментариев
Пнд, 01/06/2015 - 02:57
Добрый день
в целях экономия места для скетча пытаюсь уйти от переменных типа String, так как они тянут за собой большую библиотеку WString.cpp
есть к примеру функция
void ds_printString(String Str, char X, char Y){ if ( X >= 0 ) setCursorXY(X, Y); char count=0; while(Str[count]) ds_printChar(Str[count++]); }
вызов этой функции происходит так
char s[5]; float f=5.5; dtostrf(f, 5, 2, s); ds_printString(s,x,y);
в таком виде все замечатлеьно работает
переделываю первую функцию на
void ds_printString(char* Str, char X, char Y)
и все глючит, и ардуина перезагружается сама ... что я неправильно делаю?
dtostrf тоже вроде в WString определена, тоже надо избавляться от неё. ds_printChar что в качестве параметра принимает? Потому что всё остальное нормально написано, если только dtostrf всё правильно делает, я её просто убрал и вручную задал строку для проверки на дуе все работает если ds_printChar принимает именно char а не указатели или еще что-нибудь.
dtostrf нет, она не определена в WString
это проект бк для авто, в коде много параметров которые выводятся из флоата на экран...
вы правы на счет того что функция принимает указатели
вот точнее мой код
как быть в таком случае?
т.е. printString и printChar принимают в качестве параметра char*?
printchar уже принимает конкретно каждый символ
а вот printString действительно char*
подскажите как правильно исправить?
Тогда тот код что во втором сообщении (#2) будет работать, только что проверил на дуе. Быдет выводить "time trip". Что бы вывести оставшиеся три строки надо в цикле их выодить и всё, изменяя индекс и координату Y. char* str_podp[] это по сути массив строк, тут с указателями даже заморачиваться не надо, оно само всё делает. Если виснет и перезагружается это из-за чего-то другого.
спасибо!!! нашел проблему
так как у меня много переменных конвертируется перед выводом в массивы чаров, след. образом
когда ds_printString был со Stringом все было ок
пришлось расширить массив чаров char s[6];
почему? что то читал что в конце добавляется "/0" к массиву?
в итоге почти 5 кб скетча освободил, тем более у меня совсем туго...
Sketch uses 27 684 bytes (90%) of program storage space. Maximum is 30 720 bytes.