Ошибка преобразования из 'const char*' в 'int' в 32-й атмеге

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Привет.

Скетч с LCD 2004
Выбираю батарейку, на экране нужные параметры.

Все компилируется, отлично работает на Уно.
Мне нужно спаять на плате одну штуку и решил взять завалящую 32А
Использую MightyCore

Но при компиляции говорит, что я инвалид и неправильно делаю преобразование:
"invalid conversion from 'const char*' to 'int'"

Строки из библиотеки:



// Функция поиска индекса пункта по его ключу
int getItemIndexByKey(uint8_t key) {
  for (uint8_t i = 0; i < menuLen; i++)
    if (menu[i].key == key)
      return i;
  return -1;
}
 
// Функция формирования названия пункта меню, содержащего значение параметра
void updateCaption(uint8_t key, char format[], int value) {
  // key - ключ пункта меню, для которого обновляется навание
  // format - шаблон названия со значением
  // value - значение, добавляемое в название
  uint8_t index = getItemIndexByKey(key);
  char* buf = (char*) malloc(40);
  sprintf(buf, format, value);
  menu[index].caption = (char*) realloc(menu[index].caption, strlen(buf) + 1);
  strcpy(menu[index].caption, buf);
  free(buf);
}

я использую:  updateCaption(mkRoot, "Battery %s", list[indexBattery].c_str()); 
Мои буквы здесь: list[indexBattery].c_str()
String list[] = {"18650", "AA", "AAA"};

Собственно вопросы: почему на уно работает? что не так? как сделать "так"?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

код как-то криво вставился, сорри, не вижу кнопку редактировать

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Вставь в новом сообщении. Стыдно за столько лет не знать этого.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019
// Функция поиска индекса пункта по его ключу
int getItemIndexByKey(uint8_t key) {
  for (uint8_t i = 0; i < menuLen; i++)
    if (menu[i].key == key)
      return i;
  return -1;
}
 
// Функция формирования названия пункта меню, содержащего значение параметра
void updateCaption(uint8_t key, char format[], int value) {
  // key - ключ пункта меню, для которого обновляется навание
  // format - шаблон названия со значением
  // value - значение, добавляемое в название
  uint8_t index = getItemIndexByKey(key);
  char* buf = (char*) malloc(40);
  sprintf(buf, format, value);
  menu[index].caption = (char*) realloc(menu[index].caption, strlen(buf) + 1);
  strcpy(menu[index].caption, buf);
  free(buf);
}

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

 В функцию передаётся только указательна на массив char (точнее на первый элемент), по сути тебе нужно передавать в аргументе функции char*

И я не совсем понял суть переменной buf 

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

BOOM пишет:

 В функцию передаётся только указательна на массив char (точнее на первый элемент), по сути тебе нужно передавать в аргументе функции char*

И я не совсем понял суть переменной buf 

Спасибо, это пример из библиотеки, я лишь использую ее. 

Можете написать строчку так, как видите ее Вы?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Zero-Botanik пишет:

Спасибо, это пример из библиотеки, я лишь использую ее. 

Можете написать строчку так, как видите ее Вы?

А нормально скопировать  пример не судьба? 

Неудачников нигде не любят...

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Я не понимаю. Можете переформулировать?

Неудачник - это про себя?

mykaida пишет:

А нормально скопировать  пример не судьба? 

Неудачников нигде не любят...

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Zero-Botanik пишет:

Я не понимаю. Можете переформулировать?

Неудачник - это про себя? Поскольку у меня с этим проблем нет.

mykaida пишет:

А нормально скопировать  пример не судьба? 

Неудачников нигде не любят...

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Zero-Botanik пишет:

Zero-Botanik пишет:

Я не понимаю. Можете переформулировать?

Неудачник - это про себя? Поскольку у меня с этим проблем нет.

 

В приведении есть ошибка или нет? Что изменилось со сменой контроллера?

 

mykaida пишет:

А нормально скопировать  пример не судьба? 

Неудачников нигде не любят...

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018
А сообщение об ошибке можете выложить целиком.
Потом попробуйте изменить:
void updateCaption(uint8_t key, char format[], int value) {

на: 

void updateCaption(uint8_t key, char *format, int value) {

 

ну и возвращаемое значение в функции getItemIndexByKey() наверное нужно поменять с int на uint8_t
 

 

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Спасибо. попробую, отпишусь.

Вероятно в понедельник.

SergeiL пишет:

А сообщение об ошибке можете выложить целиком.
Потом попробуйте изменить:
void updateCaption(uint8_t key, char format[], int value) {

на: 

void updateCaption(uint8_t key, char *format, int value) {

 

ну и возвращаемое значение в функции getItemIndexByKey() наверное нужно поменять с int на uint8_t
 

 

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

SergeiL пишет:
ну и возвращаемое значение в функции getItemIndexByKey() наверное нужно поменять с int на uint8_t

Посмотрел, в функции getItemIndexByKey() вы возвращаете -1, а записываете возвращаемое значение в переменную типа  uint8_t, и не проверяете на ошибку (-1)

Правильнее будет везде поменять на более соответствующее ситуации или int8_t или  int16_t (в зависимости от количества пунктов), и проверять на ошибку.

Ну и я бы поменял  

char* buf = (char*) malloc(40);

на: 

char buf[40];

Зачем дефрагментировать кучу, если можно использовать локальную переменную. Строку 19 тогда нужно убрать.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

SergeiL, во-ервых, спасибо большое за реальные строчки, а не филосовствования.

По скетчу. Пока не работает, занимаюсь. Меняю и сразу и частями. Сейчас хочу очистить код от всего кроме меню. Отпишусь к чему приду.

Проблема в том, что практически не имею опыта в программировании, и эти строки были взяты из примеров библиотеки. Поэтому я Вам киваю и с улыбкой заменяю :)

Сейчас все равно что-то найду. Так не оставлю.

SergeiL пишет:

SergeiL пишет:
ну и возвращаемое значение в функции getItemIndexByKey() наверное нужно поменять с int на uint8_t

Посмотрел, в функции getItemIndexByKey() вы возвращаете -1, а записываете возвращаемое значение в переменную типа  uint8_t, и не проверяете на ошибку (-1)

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

SergeiL пишет:

Сейчас так:


#include <Wire.h>
#include <LiquidCrystal_I2C_Menu_Btns.h>
LiquidCrystal_I2C_Menu_Btns lcd(0x27, 20, 4);

// Входы
#define UP 5        // кнопка Добавить
#define DOWN 6      // кнопка Вычесть 
#define OK 7        // кнопка Ок
#define RESET 8     // кнопка Выход 

// I2C
#define SDA 18
#define SDL 19

// LCD
int indexBattery;        // индекс батареи
String list[] = {"18650", "AA", "AAA"};

// Объявим перечисление, используемое в качестве ключа пунктов меню
enum {mkBack, mkRoot, mkChooseBattery};

// Прототипы обработчиков пунктов меню:
void SelectBattery();

// Описание меню

// структура пункта меню: {ParentKey, Key, Caption, [Handler]}

sMenuItem menu[] = {
  // {ParentKey, Key, Caption, [Handler]} - структура пункта меню

  {mkBack, mkRoot, NULL, NULL},
  {mkRoot, mkChooseBattery, "Select battery", SelectBattery}
};

uint8_t menuLen = sizeof(menu) / sizeof(sMenuItem);

void setup() {

  // Входы
  pinMode(UP, INPUT_PULLUP);
  pinMode(DOWN, INPUT_PULLUP);
  pinMode(OK, INPUT_PULLUP);
  pinMode(RESET, INPUT_PULLUP);

  // LCD
 lcd.begin();
  lcd.attachButtons(UP, DOWN, OK, RESET);
  lcd.clear();
  
  updateCaption(mkRoot, "Battery %s", list[indexBattery].c_str());
}

void loop() {

  // Для изменения параметров необходимо нажать кнопку OK
  if (lcd.getButtonsState() == eButton) { // При нажатии
    lcd.showMenu(menu, menuLen, 1); // показываем меню
    LCDRepaint(); // после чего обновляем информацию на дисплее
  }
} //----------------------------------------------------------------------------//

// Функция поиска индекса пункта по его ключу
int getItemIndexByKey(int8_t key) {
  for (uint8_t i = 0; i < menuLen; i++)
    if (menu[i].key == key)
      return i;
  return -1;
}
 
// Функция формирования названия пункта меню, содержащего значение параметра
void updateCaption(uint8_t key, char *format, int value) {
  // key - ключ пункта меню, для которого обновляется навание
  // format - шаблон названия со значением
  // value - значение, добавляемое в название
  uint8_t index = getItemIndexByKey(key);
  char buf[40];
  sprintf(buf, format, value);
  menu[index].caption = (char*) realloc(menu[index].caption, strlen(buf) + 1);
  strcpy(menu[index].caption, buf);
  // free(buf);
}

// Обработчик для пункта меню Battery
void SelectBattery() {
  indexBattery = lcd.selectVal("Select battery", list, 8, false, indexBattery);
  updateCaption(mkRoot, "Battery %s", list[indexBattery].c_str());  
}

// Перерисовка информации на экране
void LCDRepaint() {
  lcd.clear();
  lcd.printf("Battery %s", list[indexBattery].c_str());
  lcd.printAt(0, 3, "Press <OK> for menu");
}

Ошибка:

<Путь>\menu.ino: In function 'void setup()':
menu:52:63: error: invalid conversion from 'const char*' to 'int' [-fpermissive]
<Путь>\menu.ino:73:6: note:   initializing argument 3 of 'void updateCaption(uint8_t, char*, int)'
<Путь>\menu.ino: In function 'void SelectBattery()':
menu:88:63: error: invalid conversion from 'const char*' to 'int' [-fpermissive]
<Путь>\menu.ino:73:6: note:   initializing argument 3 of 'void updateCaption(uint8_t, char*, int)'
exit status 1
invalid conversion from 'const char*' to 'int' [-fpermissive]
 
 
Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Почему выбор плат:

ArduinoAVR -> Uno работает без проблем,

MightyCore -> Atmega32 с этой ошибкой

???

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik давйте ссылку на библиотеку, откуда вы скопировали эти строчки

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

Zero-Botanik давйте ссылку на библиотеку, откуда вы скопировали эти строчки

https://github.com/VladimirTsibrov/LiquidCrystal_I2C_Menu_Btns

Спасибо что откликнулись

Код меню из примера: Menu_for_setting_params.ino

В него вставил функцию выбора, чтобы не вводить руками, а выбирать из списка, взял из файла: selectVal.ino

Оба файла по отдельности компилируются без ошибки, мой франкенштейн на 32-й дает ошибку

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik уже сам нашел

По-моему, этот автор VladimirTsibrov программирует чуть лучше вашего, используйте его библиотеку с острожностью

kalapanga
Offline
Зарегистрирован: 23.10.2016

Zero-Botanik пишет:

Почему выбор плат:

ArduinoAVR -> Uno работает без проблем,

MightyCore -> Atmega32 с этой ошибкой

Нет, не так. На Uno не работает без проблем. Только в стандартном ядре это будут не ошибки, а предупреждения (Warnings). Т.е. принятие решения оставлено на совести программиста. 

Зайдите в меню File - Preferences и поменяйте настройку Compiler warnings с None хотя бы на Default. И Вы увидите все эти же сообщения.

А вот какого Х разработчики IDE по умолчанию отключают предупреждения - это уже другой вопрос.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

Zero-Botanik уже сам нашел

По-моему, этот автор VladimirTsibrov программирует чуть лучше вашего, используйте его библиотеку с острожностью

Ну что есть в программирование с осторожностью? какой логический уровень у этого параметра? :)

Что-то надо делать. Мне понравилось его меню.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Разработчики правильно сделали что отключили.

Если бы я в самом начале это увидел, то бы и не стал заниматься. А сейчас хотя бы попробую что-то.

Включу сейчас.

kalapanga пишет:

Нет, не так. На Uno не работает без проблем. Только в стандартном ядре это будут не ошибки, а предупреждения (Warnings). Т.е. принятие решения оставлено на совести программиста. 

Зайдите в меню File - Preferences и поменяйте настройку Compiler warnings с None хотя бы на Default. И Вы увидите все эти же сообщения.

А вот какого Х разработчики IDE по умолчанию отключают предупреждения - это уже другой вопрос.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Ничего правильного. Без предупреждений Вы считаете что у Вас корректный код (раз он компилируется!), а работать он не будет. И что делать, как ошибку искать?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Именно так. Для новичка, на уровне мигания и хэллоу ничего не надо.
Кто на ступеньку поднимется, тому уже можно включать.
Это мое мнение. У Вас свое. Никаких проблем.

Скажите, сейчас в Visual Studio скопировал пример из библиотеки. Ее купить надо, чтобы компилировать? Хочу посмотреть что она скажет, Ардуино ИДЕ уже высказала свое мнение :)

kalapanga пишет:

Ничего правильного. Без предупреждений Вы считаете что у Вас корректный код (раз он компилируется!), а работать он не будет. И что делать, как ошибку искать?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Сведем к короткому вопросу:

 

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

Хочу посмотреть что она скажет, Ардуино ИДЕ уже высказала свое мнение :)

слушайте. вы немного идиот или как?

вместо того чтоб исправлять ошибку - вы будете пробовать разные среды программирования в надежде. что ошибка сама уйдет?

kalapanga
Offline
Зарегистрирован: 23.10.2016

Zero-Botanik пишет:

Именно так. Для новичка, на уровне мигания и хэллоу ничего не надо.
Кто на ступеньку поднимется, тому уже можно включать.
Это мое мнение. У Вас свое. Никаких проблем.

С мнением-то точно никаких проблем, проблема с кодом :) А не с Вашим микроконтроллером, и не с компилятором. А Вы в это упорно не верите, теперь вот зачем-то в студию полезли. Вместо исправления ошибки.

Посмотрите на типы всех трёх параметров функции updateCaption в её описании и в Вашем вызове этой функции. Одинаково должно быть. Почему функция объявлена так как есть? Она судя по всему предназначалась для дописывания к  некоей строке циферок. Поэтому и последний аргумент у неё число (int). А вы хотите передать туда Ваши названия батареек (строки). Так и сделайте такую же функцию, в которую будет передаваться не число, а строка.

 

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

слушайте. вы немного идиот или как?

вместо того чтоб исправлять ошибку - вы будете пробовать разные среды программирования в надежде. что ошибка сама уйдет?

 

не буду как Вы переходить на личности
но в VS нет ошибок, что скажете? я все еще немного идиот?

интересно? просто для того чтобы использовать больше функций среды.

Compiling 'Menu_for_setting_params' for 'Arduino Uno'
C:\Program Files (x86)\Arduino\java\bin>"C:\Users\Admin\AppData\Local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7/bin/avr-objdump" --disassemble --source --line-numbers --demangle --section=.text "C:\Users\Admin\AppData\Local\Temp\VMBuilds\Menu_for_setting_params\uno\Release/Menu_for_setting_params.ino.elf"  1>"C:\Users\Admin\AppData\Local\Temp\VMBuilds\Menu_for_setting_params\uno\Release/Menu_for_setting_params.ino_{build.mcu_compile}_16000000L.lst" 
Program size: 10 346 bytes (used 32% of a 32 256 byte maximum) (1,41 secs)
Minimum Memory Usage: 462 bytes (23% of a 2048 byte maximum)
 
Если кто-то думает по-другому совсем не означает, что он идиот, это вообще ничего не означает, ясно?
Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

kalapanga пишет:

Посмотрите на типы всех трёх параметров функции updateCaption в её описании и в Вашем вызове этой функции. Одинаково должно быть. Почему функция объявлена так как есть? Она судя по всему предназначалась для дописывания к  некоей строке циферок. Поэтому и последний аргумент у неё число (int). А вы хотите передать туда Ваши названия батареек (строки). Так и сделайте такую же функцию, в которую будет передаваться не число, а строка.

Спасибо за разъяснение. 

Там были другие пункты меня (я временно убрал из скетча), так что "лучше бы" передавать только цифры. Но мне понятна суть.

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

но в VS нет ошибок, что скажете? я все еще немного идиот?

В Vs точно так же, как и в Ардуино - предупреждения по умолчанию выключены. Включите - и все ваши ошибки вернутся обратно.

А. главное - с ошибками или без - работать нормально ваш код гне будет.

так что идиот. однозначно

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

так что идиот. однозначно

ну я раз за тебя (на "Вы" больше не могу обращаться), теперь когда ярлыки расставлены, ты счастлив? победил? какой же ты напыщенный и ущербный, мамка в детстве била? мальчишки бычки об тебя тушили? повидал я таких в жизни. амбиций на мешок, а внутри гниль, комплекс на комплексе. так и не реализовался? больше чем щеки дуть на форуме не способен?

меня хоть горшком назови, только в печь не ставь, вообще филетово :)

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

теперь когда ярлыки расставлены, ты счастлив? победил?

пока нет. Срач слишком короткий, скучно.

ну так что с предупреждениями в Студии? включил? убедился. кто ты?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

А. главное - с ошибками или без - работать нормально ваш код гне будет.

Так работает, уже три дня вообще без ошибок. Полный код, на Уне.

Но я докопаюсь до ошибки все равно на другом микроконтроллере.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

пока нет. Срач слишком короткий, скучно.

ну так что с предупреждениями в Студии? включил? убедился. кто ты?

нет еще, читаю про visual studio code
думаю может на него перейти

предупреждали, что Ардуино ИДЕ будет не хватать. выбираю

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

пока нет. Срач слишком короткий, скучно.

вот если бы срач был предметный, а не личностный. тут интересно и адреналин

а так не, ну ты выставил себя, а что толку? фу. ветка растет не в том направлении

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

Спасибо, я только модуль подключил. Еще в прострации в новом интерфейсе. Найду все кнопки.

DetSimen пишет:

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

Так работает, уже три дня вообще без ошибок. Полный код, на Уне.

вот только врать не надо. Код с передачей указателя на строчку вместо целого числа может компилироваться, но работать не будет. Если работает, значит на самом деле код "немного не такой". Я тут такое от новичков раз 100 видел - изменили пару букв в коде и не видят разницы в упор

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

вот только врать не надо. Код с передачей указателя на строчку вместо целого числа может компилироваться, но работать не будет. Если работает, значит на самом деле код "немного не такой". Я тут такое от новичков раз 100 видел - изменили пару букв в коде и не видят разницы в упор

слушай, ну вот я точно не умею врать
в пятницу заработал и все ок, и все выбираю пункты и исполнительные работают как надо.

не, я точно не буду врать. ты конечно не из тех, кто верит. но вот для остальных

хочешь видео? как его только сюда вставить скажи

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

По-моему, этот автор VladimirTsibrov программирует чуть лучше вашего, используйте его библиотеку с острожностью

он бывает здесь на сайте, ждём, вызовет на дуэль ан нет )))

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

вот если бы срач был предметный, а не личностный. тут интересно и адреналин

потому что беспредметным срач может быть, а безличностным - никак

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

он бывает здесь на сайте, ждём, вызовет на дуэль ан нет )))

пусть обьяснит. что он хотел сказать этим:

void updateCaption(uint8_t key, char format[], int value) {

 

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

не, я точно не буду врать. ты конечно не из тех, кто верит. но вот для остальных

хочешь видео? как его только сюда вставить скажи

причем тут видео, если я говорю, что у тебя в Уно код не такой? - чем тут видео поможет?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

причем тут видео, если я говорю, что у тебя в Уно код не такой? - чем тут видео поможет?

выше код из 95 строк посвященный только меню, он выдран из полного кода с выходами, памятью и прочим

- для Уно  этот код (и полный большой код) компилируются и работают как задумано. могу снять видео
- ни код из 95 строк, ни большой код компиляцию не проходят но другом микроконтроллере

объяснил? если нет - задай короткий конкретный вопрос.

b707
Offline
Зарегистрирован: 26.05.2017

Zero-Botanik пишет:

объяснил? если нет - задай короткий конкретный вопрос.

я разве просил ОТ ТЕБЯ каких-то обьяснений?

Если ты еще не понял - слова новичка на этом форуме ничего не значат. Никакие ТВОИ обьяснения не убедят меня, пока я сам не запущу этот код на ардуине и не увижу (если увижу) - что он работает.

И в данном случае это вовсе не имеет отношения к срачу и к твоей персоне - такое отношение к любому новичку. Слишком часто я видел. как люди пишут полную чушь, вообще не понимая. что это

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Филин, ты чего съел сёдня?

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

b707 пишет:

https://wdfiles.ru/e17afe/btn.mp4

подождать и затем нажать "смотреть"

на видео:

мой монитор, первое окно форум с этим кодом, потом - VS, потом - ардуино с этим же кодом, надпись: загружено

ниже экран и я кнопки нажимаю. работает

я пишу и снимаю не для оправдания какого-то. как упоминал, меня не беспокоит что меня как-то обзывают, пофиг

мне НЕ НРАВИТСЯ что для одного и того же семейства микроконтроллера, для одной и той же архитектуры код СОБАКА компилируется по-разному!!!!

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019
SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

b707 пишет:

ua6em пишет:

он бывает здесь на сайте, ждём, вызовет на дуэль ан нет )))

пусть обьяснит. что он хотел сказать этим:

void updateCaption(uint8_t key, char format[], int value) {

 

Так у автора библиотеки нет функции updateCaption() Это похоже функция ТС.

Zero-Botanik
Zero-Botanik аватар
Offline
Зарегистрирован: 02.11.2019

SergeiL пишет:

Так у автора библиотеки нет функции updateCaption() Это похоже функция ТС.

это его функция из файла Menu_for_setting_params

моя скромная функция SelectBattery()

:) 

 

В общем, в защиту автора - у него нормально работающий код, ошибка появилась (как мне справедливо указали) когда я вставил в его код кусок с попыткой передать строку, где требовалось число.

Засим, просто надо другой код вставить, где будет число, но отображать все равно надо название батарейки, то есть string. Пока не умею. Но понятно куда копать.

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

Zero-Botanik пишет:

SergeiL пишет:

Так у автора библиотеки нет функции updateCaption() Это похоже функция ТС.

это его функция из файла Menu_for_setting_params

моя скромная функция SelectBattery()

:) 

Нуда, ну да, я примеры не смотрел. char format[] - такого видел в параметрах функции.