Перевод INT в const void *
- Войдите на сайт для отправки комментариев
Пнд, 14/10/2019 - 17:51
Всем привет! Имеется E-Inc дисплей, подключение через сериал, Библиотека для работы с дисплеем: https://github.com/Arduinolibrary/DFRobot_E_paper/blob/master/epd.zip
Самый простой пример вывода текста:
#include <epd.h> int i = 465; char Buffer[] = "Hello String"; void setup(void) { epd_init(); // inicjalizacja epd_wakeup(); // pobudka epd_set_memory(MEM_NAND); // wybor pamieci NAND delay(1000); epd_set_color(BLACK, WHITE); // czarne litery, biale tlo epd_clear(); // czyszczenie ekranu epd_set_en_font(ASCII64); // uastawiamy czcionki zwykle o rozmiarze 64 epd_disp_string("ASCII64: Hello, World!", 0, 50); // wyswietlamy powitanie epd_disp_string(Buffer, 0, 120); // wyswietlamy powitanie epd_udpate(); } void loop(void) { }
Но вот я никак не могу понять как вывести переменную. На пример i, которая имеет значение 465. На все мои попытки сделать преобразование типов я получаю ошибку типа:
error: invalid conversion from 'int' to 'const void*' [-fpermissive]
Функция принимает либо явную строку типа: "Hello String", либо массив символов:
char Buffer[] = "Hello String"; epd_disp_string(Buffer, 0, 120);
Но тоже не понятно как присвоить новое значение буферу. Не посимвольно же вводить! В библиотеке функция вывода текста на дисплей выглядит так:
void epd_disp_string(const void * p, int x0, int y0) { int string_size; unsigned char * ptr = (unsigned char *)p; string_size = strlen((const char *)ptr); string_size += 14; _cmd_buff[0] = FRAME_B; _cmd_buff[1] = (string_size >> 8) & 0xFF; _cmd_buff[2] = string_size & 0xFF; _cmd_buff[3] = CMD_DRAW_STRING; _cmd_buff[4] = (x0 >> 8) & 0xFF; _cmd_buff[5] = x0 & 0xFF; _cmd_buff[6] = (y0 >> 8) & 0xFF; _cmd_buff[7] = y0 & 0xFF; strcpy((char *)(&_cmd_buff[8]), (const char *)ptr); string_size -= 5; _cmd_buff[string_size] = FRAME_E0; _cmd_buff[string_size + 1] = FRAME_E1; _cmd_buff[string_size + 2] = FRAME_E2; _cmd_buff[string_size + 3] = FRAME_E3; _cmd_buff[string_size + 4] = _verify(_cmd_buff, string_size + 4); _putchars(_cmd_buff, string_size + 5); }
Можете что-то подсказать?
itoa тебя спасет, или sprintf
По сути вопрос в чем: как правильно собирать строку для вывода? На пример есть строки и переменные:
как из этого собрать строку "Curent Tme: 19:45" в таком виде чтобы ее приняла библиотека?
char
H =
"19"
Что за бред ???
Библиотеке нужен адрес буфера со строкой !
Не бред, а лишь пример. Так как некоторые библиотеки возвращают строчные переменные, а некоторые числовые. Вот я и ломаю голову над тем как теперь все это вывести на дисплей...
Можете привести пример?
char это один символ !!!
Не обязательно (просто я забыл скобки добавить). Это может быть массив: http://arduino.ru/Reference/String
пример:
char
myString[] =
"This is the first line"
где у вас скобки ?
:)))
[] это массив char-ов, а char - это один символ.
Спасибо! Так работает!
:)
А если нужно объединить разнотипные данные? Как в моем примере выше, где некоторые переменные имеют текстовый формат.
%s
Спасибо! Раньше с такой заморочкой преобразования / объединения данных не сталкивался. Сижу, изучаю.
гугаль: "Спецификаторы форматов printf"
Вот, как раз читаю: http://mypractic.ru/urok-30-tekstovye-stroki-v-arduino-konvertirovanie-dannyx-v-stroki-i-naoborot-klass-string.html
snprintf() безопасней.