Страница 3 из 3
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 03, 2026 09:33:26
jcxz
linux_rulezz писал(а): Пт июл 03, 2026 01:34:35в мышах на среднюю кнопку, которую нажимаешь куда чаще правой, ставят самый дешёвый микрик! Я уже пару десятков мышей выкинул, у которых отказала эта важная для любой работы кнопка!
Давно известно:
Скупой платит дважды.
Вместо того, чтобы купить нормальную мышу, можно конечно "экономить" и покупать их десятками.
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 03, 2026 09:34:36
linux_rulezz
"Нормальную" - это какую? Я покупаю по 100-150 рублей, вполне себе нормальные…
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 03, 2026 09:36:11
jcxz
linux_rulezz писал(а): Пт июл 03, 2026 09:34:36Я покупаю по 100-150 рублей
Вот именно!
О чём я и говорил.
PS: На заметку "экономистам": Дешманские ещё и гораздо быстрее выжирают батарейки. Делая "выгоду" от "экономии" ещё более сомнительной.
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 03, 2026 10:05:06
linux_rulezz
jcxz писал(а): Пт июл 03, 2026 09:36:11гораздо быстрее выжирают батарейки
Какие еще батарейки? Зачем мыше батарейки, если она от USB питается?
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 03, 2026 10:28:24
jcxz
linux_rulezz писал(а): Пт июл 03, 2026 10:05:06Какие еще батарейки? Зачем мыше батарейки, если она от USB питается?
Ужас!

Не думал что
маразм "экономия" зашла так далеко.
Может у вас они (мыши) ещё и шариковые???
Слышали когда-нить об оптических мышах?
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 03, 2026 11:56:12
linux_rulezz
"Шариковые" сейчас найти сложно. Приходится убогие "оптические" покупать…
Re: Энкодер на stm32f405 для новичка
Добавлено: Пн июл 06, 2026 23:44:01
Ифторик
Пытаюсь сейчас файлы с CD карты прочитать с помощью библиотеки fatfs через интерфейс CDIO, никак не могу понять в чем проблема, получилось только узнать размер файлов и общий объем флешки, а текст никак не хочет отображаться, я понял если была бы балиберда из разных символов - значит кодировка/распознавание символов не верное, но имена все одинаковые, почему?
Если с счетчиком(энкодером) я могу делать грязь на регистрах, то плешка слишком мудреная со своими 512 битами, не хочется залезать совсем глубоко в битовую передачу.
Код в майне (сократил, чтоб не было громоздко)
Код: Выделить всё
HAL_SD_CardInfoTypeDef CDinfo; //инициализация структуры
HAL_SD_GetCardInfo(&hsd, &CDinfo); //получаем системную информацию
snprintf(iClass, sizeof(iClass)+6, "Class-%lu", CDinfo.Class); //конвертируем CDinfo.Class в массив символов iClass[64]
str_dot_out(310, 130, iClass, strlen(iClass), 0, 1, SystemFont); //выводим на экран iClass[64]
f_mount(&SDFatFS, (TCHAR const*)SDPath, 1); //монтируем диск
List_Files(""); //получаем список файлов
функция получения списка файлов:
Спойлер
Код: Выделить всё
FRESULT List_Files(const char* path) {
FRESULT res;
DIR dir;
static FILINFO fno;
res = f_opendir(&dir, path);
int loc = 0; //приращение расположения на экране
char fileNameCDi[256]; //имя файла
char fileSizeCDi[256]; //размер файла
char errorCDi[8]; //ошибка чтения - если ноль, то ошибки нет
if (res == FR_OK)
{
while (f_readdir(&dir, &fno) == FR_OK & fno.fname[0] != 0)
{
HAL_Delay (100);
if (fno.fattrib & AM_DIR) //папка
{
snprintf(fileNameCDi, sizeof(fileNameCDi), "DIR-%hu", fno.fname); //конвертируем fno.fname в массив символов fileNameCDi
str_dot_out(10, 70+loc, fileNameCDi, strlen(fileNameCDi), 0, 0, SystemFont); //выводим на экран
}
else //файл
{
snprintf(fileSizeCDi, sizeof(fileSizeCDi), "File-%lu;_%lubyte", fno.fname, fno.fsize);
str_dot_out(10, 70+loc, fileSizeCDi, strlen(fileSizeCDi), 0, 0, SystemFont); //выводим на экран
}
loc = loc+20; //шаг расположения
}
str_dot_out(10, 70+loc, "end", 3, 0, 0, SystemFont); //список закончился, выводим на экран end
f_closedir(&dir);
}
snprintf(errorCDi, sizeof(errorCDi), "error_%lu", res);
str_dot_out(10, 50, errorCDi, sizeof(errorCDi), 0, 0, SystemFont); //выводим на экран ошибку
return res;
}
Re: Энкодер на stm32f405 для новичка
Добавлено: Вт июл 07, 2026 19:36:13
Ифторик
Я разобрался, fno.fname записывается символами по 16 бит, а для вывода на экран нужен восьмибитный char
Вместо команды snprintf я ввел так:
Код: Выделить всё
for (int i = 0; i < 32; i++)
{
fileNameCDi[i] = (char)fno.fname[i];
}
snprintf
я думал что так тоже можно записать:
типа старшие биты удалятся, младшие останутся, ну логично же.
Re: Энкодер на stm32f405 для новичка
Добавлено: Чт июл 09, 2026 11:14:19
Zapolyarny
Ифторик писал(а): Вт июл 07, 2026 19:36:13
я думал что так тоже можно записать:
типа старшие биты удалятся, младшие останутся, ну логично же.
Неявное приведение типов - плохая практика. Где-то оно отработает корректно, а где-то (и это чаще всего) доставит массу проблем. Кроме того, такая запись предполагает, что типы одинаковы, то есть, в Вашем случае стало плохо читаться, так как требуется дополнительная информация об их неравенстве. В общем, так делать нельзя.
Re: Энкодер на stm32f405 для новичка
Добавлено: Чт июл 09, 2026 13:23:57
Ифторик
Я использовал фукцию snprintf чтоб превратить обычную переменную в массив данных char для вывода на дисплей, но похоже тут опять никакой магии я не нашел, я же конечно не явно прировнял два массива, а через эту функцию.
В топку закинул и думал что оно само там разберется))
Re: Энкодер на stm32f405 для новичка
Добавлено: Чт июл 09, 2026 14:04:02
Rapra
Помогаю пользоваться ИИ-ботом, по четвергам - бесплатно
Так что Линукс Эдуардович отчасти был прав!
Re: Энкодер на stm32f405 для новичка
Добавлено: Чт июл 09, 2026 16:01:10
Zapolyarny
Rapra писал(а): Чт июл 09, 2026 14:04:02
Так что Линукс Эдуардович отчасти был прав!
В помойку Линукса Эдуардовича. Не думаю, что форумы создавались для подобного поведения.
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 10, 2026 01:26:45
jcxz
Ифторик писал(а): Вт июл 07, 2026 19:36:13Вместо команды snprintf я ввел так:
Код: Выделить всё
for (int i = 0; i < 32; i++)
{
fileNameCDi[i] = (char)fno.fname[i];
}
snprintf
Это говнокод. Так делать нельзя.
Если нужны имена файлов в однобайтовом (ASCII) режиме, то следует просто перевести FatFS в режим ASCII. Вместо Unicode. FatFS всё умеет.
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 10, 2026 09:38:32
Ифторик
Да, я понимаю, читать все символы через эту шляпу...(Я ж на одном списке файлов не остановлюсь), но просто если переткнуть настройки на ASCII не вдаваясь в подробности, то выпадает куча ошибок, пока не понял из-за чего и даже ошибки не читал, надо поковырять в эту сторону как время будет
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 10, 2026 12:03:45
linux_rulezz
Ифторик писал(а): Пт июл 10, 2026 09:38:32пока не понял из-за чего
Копипастишь, небось, в хрюникоде?
// Запретил бы нафиг все кодировки, выходящие за пределы семи бит!
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 10, 2026 12:33:19
Ифторик
Гугл неплохо справляется с написанием кода, но я стараюсь так не делать, я не ИИ тренерую, а себя же, а то что юникод я поменять не могу, это из-за того что в кубеМХ проект генерирую по модулям, потом каждый модуль отдельно вставляю себе, вот и ломаются иногда системные библиотеки, очень мерзенькие эти ошибки, по этому я их не смотрел, уже сталкивался, надо генерировать fatfs с нужными мне настройками сразу
Re: Энкодер на stm32f405 для новичка
Добавлено: Пт июл 10, 2026 15:46:20
Rapra
linux_rulezz писал(а): Пт июл 10, 2026 12:03:45
// Запретил бы нафиг все кодировки, выходящие за пределы семи бит!
i ostanemsa my bez russkih bukv, potomu chto v 128 kodov russkie bukvy ne pomeschajutsa