USMI

Объявление

12/06/2025 (Administration) - Spamming for the purpose of boosting messages will be punished with a ban. Спам с целью накрутки сообщений будет караться баном.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » Подключение разной периферии к JL SoC. SPI/I2C/I2S/PWM/UART/GPIO...


Подключение разной периферии к JL SoC. SPI/I2C/I2S/PWM/UART/GPIO...

Сообщений 121 страница 130 из 130

121

kagaimiq написал(а):

Для русского (cp1251) нужно в прошивку добавлять файлы f_cp1251_s.pix и f_cp1251.tab вместо f_ascii_s.pix, f_gb2312_s.pix и f_gb2312.tab.

Только в этом случае отображение (в данном случае) кириллицы всё равно работать нормально не будет.
Да, там где текст оторбражается как 'ANSI', там будет работать нормально, но когда будет отображаться UTF-16 (т.е. имена файлов в плеере), вместо неё будет отображаться мусор или может даже произойти перезагрузка чипа.

(такое происходит и со штатными tab/pix файлами)

Эта проблема не только в cp1251 но и во всём font_OtherLanguage, так как там неправильно парсится сам TAB файл для конвертации с юникода в кодовую страницу к которой относится сам PIX файл.

На 695х похоже такая же ерунда, если так то на стандартном сдк нормальную локализацию не сделать. Как в старые времена, только ascii в именах файлов.

122

amateur написал(а):

На 695х похоже такая же ерунда, если так то на стандартном сдк нормальную локализацию не сделать. Как в старые времена, только ascii в именах файлов.

В общем работает, но не понятно почему так.

Код:
#if LANGUAGE&BIT(English)
    {
        .language_id = English,
        .flags = FONT_SHOW_PIXEL | FONT_SHOW_MULTI_LINE,
        .pixel.file.name = (char *)FONT_PATH"F_CP1252.PIX", //а это вообще роли не играет, можно закомментиривать
        .ascpixel.file.name = (char *)FONT_PATH"F_CP1252.PIX",//подсунул сюда это вместо F_ASCII.PIX
        .tabfile.name = (char *)FONT_PATH"F_CP1252.TAB",
        .isgb2312 = false,
        .bigendian = false,
        .putchar = font_putchar,
    },

123

amateur написал(а):

В общем работает, но не понятно почему так.

Работает, и в названиях файлов тоже?

Подпись автора

USMicro(R) (C)2025

124

BIOS написал(а):

Работает, и в названиях файлов тоже?

Да, pix файлы именно для того. UI стринги они в JL.str. Там тоже не все в порядке, изменения шрифта игнорируются.

125

BIOS написал(а):

Работает, и в названиях файлов тоже?

amateur написал(а):

Да, pix файлы именно для того. UI стринги они в JL.str. Там тоже не все в порядке, изменения шрифта игнорируются.

Работает всё-таки. UI шрифты меняются всё-таки в excel. А не как китайцы пишут в мануале что в их программе это нужно делать.
https://upforme.ru/uploads/001b/ca/8a/24/t765423.jpg
https://upforme.ru/uploads/001b/ca/8a/24/t570809.jpg

126

По поводу .str файлов тут неудобство что для генерации excel нужен. В этих .str файлах формат очень похож как у .pix файлов только есть пара непонятных байтов, скорее всего какая-то checksum. Если догадаться что это за байты можно было бы написать свою программку для генерации этих файлов. Тогда можно отказаться от excel.

Что я догадался:
красное: всегда одинаково
фиолетовое: неизвестно, для начала все равно
желтое: похоже на checksum, причем похоже реагирует только на количество байтов и пикселей в стринге, т.е. 3-10байт
зеленое:всегда одинаково
синее:
1,2 байт: номер стринга в result_str_index.h
3,4 байт: ширина стринга в пикселях
5,6 байт: высота стринга в битах
7,8,9,10 байт: кол-во байт в стринге
11,12,13,14 байт: оффсет где начинаются пиксель-данные.

https://upforme.ru/uploads/001b/ca/8a/24/t531657.png

вот как пример:

1 и 2: разница только в длине стринга

1 и 3: стринг одинаковый но оффсет разный (ну еще номер вместо 48 D8, в 1-м и 2-м только один язык был а в 3-м 3 языка 48*3=D8)

Код:
1.  73 42 E0 B8 01 00 48 00 38 00 10 00 70 00 00 00 79 2A 00 00    
    
2.  14 6E 1D EF 01 00 48 00 40 00 10 00 80 00 00 00 79 2A 00 00	
    
3.  F8 F4 E0 B8 01 00 D8 00 38 00 10 00 70 00 00 00 35 64 00 00

127

Байты 0-15 = RES_HEAD_T — заголовок
  0-3 = magic ('R' 'U' '2' 0x31) — сигнатура
  4-5 = version (0x101) — версия
  6-7 = bPanelType (0) — тип дисплея
  8-9 = totalPage — кол-во страниц (относится к файлу JL.res)
  10-11 = reserved
  12-15 = resver — некая версия, проверяющееся через res_file_version_compare, в SDK вроде бы нигде не используется

Байты 16-27 = RES_ENTRY_T — описание секции со строками (bItemType ­= 0x53 = 'S')
  16-19 = dwOffset — смещение к описанию каждой строки
  20-21 = wCount — кол-во строк
  22 = bItemType — тип (0x53 = 'S' = строки)
  23 = langsum — кол-во языков (кол-во строк для одного языка = wCount / langsum)
  24-27 = language — битовая маска с языками, которые присутствуют в файле

С байта 28 (dwOffset = 0x1c у RES_ENTRY_T выше) = RES_STR_T
  0-1 = head_crc — CRC16 заголовка (байтов 2-19)
  2-3 = data_crc — CRC16 данных
  4-5 = res_type — 1
  6-7 = type_id — индекс строки
  8-9 = wWidth — ширина
  10-11 = wHeight — высота
  12-15 = dwLength — размер данных
  16-19 = dwOffset — смещение к началу данных

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

128

kagaimiq написал(а):

Байты..

Спасибо, это ты где-то в *.а нашел?

129

amateur написал(а):

А как показывается название папки на стандартном LCD? У меня почему-то только на первом файле в папке показывается нормальное название. При переходе к следующему файлу, не важно вручную или автоматически, показывается сокращение. Только при смене папки и только на первом файле опять полное название.
Примерно так: 80's Collection превращается в  80'SCO~2.

все пытаюсь приделать LCD 2004 на AC6925

Вернулся к этой теме. До сих пор у меня было так: если lfn_cnt==0 это либо папка ROOT либо просто нужно показывать последнее название которое было в юникоде, как-никак в 2025 живем, все давно должно быть в юникоде.

Попробовал по другому,

Код:
common\file_operate\file_operate.c
    case FOP_OPEN_FILE_BYNUM:
        fop_printf("FOP_OPEN_FILE_BYNUM\n");
        ret = fs_get_file_byindex(&(obj->fop_file->fs_hdl), &(obj->fop_file->file_hdl), 0);//добавил
        ret = fs_get_file_byindex(&(obj->fop_file->fs_hdl), &(obj->fop_file->file_hdl), obj->fop_info->filenum);

пока побочных эффектов не заметил

130

kagaimiq написал(а):

Для русского (cp1251) нужно в прошивку добавлять файлы f_cp1251_s.pix и f_cp1251.tab вместо f_ascii_s.pix, f_gb2312_s.pix и f_gb2312.tab.

Только в этом случае отображение (в данном случае) кириллицы всё равно работать нормально не будет.
Да, там где текст оторбражается как 'ANSI', там будет работать нормально, но когда будет отображаться UTF-16 (т.е. имена файлов в плеере), вместо неё будет отображаться мусор или может даже произойти перезагрузка чипа.

(такое происходит и со штатными tab/pix файлами)

Эта проблема не только в cp1251 но и во всём font_OtherLanguage, так как там неправильно парсится сам TAB файл для конвертации с юникода в кодовую страницу к которой относится сам PIX файл.

Работает только cp1252, все что больше 255 не работает. Как они так жидко обделались, там вроде ничего сложного быть не должно..


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » Подключение разной периферии к JL SoC. SPI/I2C/I2S/PWM/UART/GPIO...