Я играю с платой Arduino и предоставленными образцами. Пытаюсь отобразить полученное сообщение на ЖК-дисплее. Я изо всех сил пытаюсь понять, как работать с частью предварительно созданного кода.
Я получаю сообщение об ошибке: неверное преобразование из 'const unsigned char*' в 'const char*
Я попытался изменить тип параметра payload
, но он нарушает другие ссылки на MessageCallback.
Определение Screen.print() в документации для платы arduino: int print (строка int без знака, const char s, bool wrap)
Код:
static int MessageCallback(const unsigned char *payload)
{
int result = 200;
const char screenMsg[100];
strcpy(screenMsg,"Set Temp: ");
strcat(screenMsg,payload);
Screen.print(1, screenMsg, true);
return result;
}
Если вы просто измените на char screenMsg[100];
, это должно сработать.
Функция печати не изменит строку, которую вы ей предоставите, это все, что
const char s
означает.
Аргументы Strcat (char *, const char *)
. Вы можете передать «полезную нагрузку» char*
, выполнив «strcat(screenMsg, (char*)payload);
». Читать Strcat два беззнаковых символа в C.
const char screenMsg[100];
не инициализируется как const, а затем изменяется (?) в следующей строке, кажется двусмысленным