Вложений: 1
Re: Дисплей Epson LCD L2F50 от Siemens S65
Шрифты все работают, меняются в fonts.h.
Питаюсь добавить русский. Нашел чужой, выводит слова на русском, но через букву добавляет мусор.
На англ. все в порядке.
Отключил #define FONT_END7F в fonts.h чтобы от 0x80 до 0xbf были русские буквы.
В шрифте англ. и русские буквы ни чего лишнего но и знаки и цифры конечно. Все стандартно.
Как это можно исправить.
Может в uint8_t S65Display::drawChar(uint8_t x, uint8_t y, char c, uint8_t size, uint16_t color, uint16_t bg_color)
где то условие поставить, если после 0x80 до 0xbf выводил на экран через букву :confused:.
Только не пойму где, и как это придумать.
Пока не разобрался как, и какой программой под этот дисплей шрифт сделать.
Но шрифт нормальный может действительно в uint8_t S65Display::drawChar(uint8_t x, uint8_t y, char c, uint8_t size, uint16_t color, uint16_t bg_color) проблема.
Подскажите где копать.
В шрифте 8х8 выводит / палочку перед русской буквой.
Это 12х15 выводит мусор перед русской буквой.
Вложение 18871
Re: Дисплей Epson LCD L2F50 от Siemens S65
А для LS020 есть у кого библиотека ? Я взял библиотеку L2F50 и заменил там L2F50 на LS020 не работает )
Re: Дисплей Epson LCD L2F50 от Siemens S65
Re: Дисплей Epson LCD L2F50 от Siemens S65
В шапке есть "Исправленная и рабочая библиотека для LCD L2F50 еще одна библиотека с исправленным выводом текста от VetalST" но нет на LS020 и написано что простая замена не помогла " поменял нужные строчки либы вместо LS020 заменил на L2F50 , но диплей никак не хотел работать "
Re: Дисплей Epson LCD L2F50 от Siemens S65
"Тестовая программа для вывода изображений через USB . В программе можно задать паузу между выводами картинок и скорость порта в файле config.ini
Изображения с разрешением 176х132 можно положить в любом количестве в папку с программой и они будут автоматически прокручены через ардуино и ЖКИ"
В какую папку с программой ? ардуино ?
Re: Дисплей Epson LCD L2F50 от Siemens S65
В ардуино код, программа на ПК. Которая тоже есть в шапке темы
Программа работает только с ардуиной у которой FTDI USB мост
Re: Дисплей Epson LCD L2F50 от Siemens S65
В какой папке на ПК должна быть программа ?
Re: Дисплей Epson LCD L2F50 от Siemens S65
Re: Дисплей Epson LCD L2F50 от Siemens S65
С кирилицей по прежнему никак?, или есть варианты?
Re: Дисплей Epson LCD L2F50 от Siemens S65
Копать нужно в эту сторону http://compcar.ru/forum/showthread.p...l=1#post110401
http://compcar.ru/forum/showthread.p...l=1#post110395
http://compcar.ru/forum/showthread.p...ll=1#post91484
Вытащил из либы функции, с которыми нужно разбираться
PHP код:
uint8_t S65Display::drawChar(uint8_t x, uint8_t y, char c, uint8_t size, uint16_t color, uint16_t bg_color)
{
uint8_t ret, h, w; // h,w sind Laufvariablen für Höhe und Weite
#if FONT_WIDTH <= 8
uint8_t data;
#elif FONT_WIDTH <= 16
uint16_t data;
#elif FONT_WIDTH <= 32
uint32_t data;
#endif
uint8_t i, j, width, height;
const prog_uint8_t *ptr, *ptr_tmp;
i = (uint8_t)c;
#if FONT_WIDTH <= 8
ptr = &font_PGM[(i-FONT_START)*(8*FONT_HEIGHT/8)];
#elif FONT_WIDTH <= 16
ptr = &font_PGM[(i-FONT_START)*(16*FONT_HEIGHT/8)];
#elif FONT_WIDTH <= 32
ptr = &font_PGM[(i-FONT_START)*(32*FONT_HEIGHT/8)];
#endif
width = FONT_WIDTH;
height = FONT_HEIGHT;
if(size <= 1)
{
ret = x+width;
if(ret > S65_WIDTH)
{
return S65_WIDTH+1;
}
setArea(x, y, (x+width-1), (y+height-1));
s65_drawStart();
ptr_tmp = ptr;
for(w=width; w!=0; w--) //
{
ptr = ptr_tmp;
//Serial.print("w="); Serial.println(w); delay(50);
for(h= height; h!=0; h--)
{
#if FONT_WIDTH <= 8
data = pgm_read_byte(ptr); ptr+=1;
#elif FONT_WIDTH <= 16
data = pgm_read_word(ptr); ptr+=2;
#elif FONT_WIDTH <= 32
data = pgm_read_dword(ptr); ptr+=4;
#endif
if(CHECK_BIT(data,w)) // hier Sprung in die Funktion CHECK_BIT(var,pos)
// die ist in S6%Dislay.h angelegt
// und sieht so aus:
// #define CHECK_BIT(var,pos) ((var & (1 << pos)) == (1 << pos))
{
s65_draw(color);
}
else
{
s65_draw(bg_color);
}
}
}
s65_drawStop();
}
else
{
ret = x+(width*size);
if(ret > S65_WIDTH)
{
return S65_WIDTH+1;
}
s65_setArea(x, y, (x+(width*size)-1), (y+(height*size)-1));
s65_drawStart();
ptr_tmp = ptr;
for(w=width; w!=0; w--) //
{
ptr = ptr_tmp;
//Serial.print("w="); Serial.println(w); delay(50);
for(h= height; h!=0; h--)
{
#if FONT_WIDTH <= 8
data = pgm_read_byte(ptr); ptr+=1;
#elif FONT_WIDTH <= 16
data = pgm_read_word(ptr); ptr+=2;
#elif FONT_WIDTH <= 32
data = pgm_read_dword(ptr); ptr+=4;
#endif
if(CHECK_BIT(data,w))
{
for(j=size; j!=0; j--)
{
s65_draw(color);
}
}
else
{
for(j=size; j!=0; j--)
{
s65_draw(bg_color);
}
}
}
}
s65_drawStop();
}
return ret;
}
uint8_t S65Display::drawText(uint8_t x, uint8_t y, char *s, uint8_t size, uint16_t color, uint16_t bg_color)
{
while(*s != 0)
{
x = drawChar(x, y, *s++, size, color, bg_color);
if(x > S65_WIDTH)
{
break;
}
}
return x;
}
Я бы поправил, но без дисплея это просто не возможно