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 страница 131 из 131

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 не работает. Как они так жидко обделались, там вроде ничего сложного быть не должно..

131

Ну кто же знал что лог дебага, от аудио отстает на пару сек, там или буферизация,или хз чего. Но вот прикол, былся пару часов над не существующей проблемой! Одел наушники и послушал, когда звук в 0-1 то он прям сразу за нажатием кнопок происходит, а принт тупит.

Код:
common vol-: 1
[Info]: [APP_ACTION]common_key_event:162

[Info]: [APP_ACTION]COMMON KEY_VOL_DOWN

common vol-: 0
[IR] NEW_KEY: 41
[Info]: [APP_ACTION]common_key_event:161

[Info]: [APP_ACTION]COMMON KEY_VOL_UP

common vol+: 1

Люблю такой дебаг,  %-)

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

USMicro(R) (C)2025


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