Как круто начала развиваться тема, с 9-ти кнопок до одной сенсорной! vitus73 здорово получилось, прям очень! Вопрос, а режимов отображения только один - текстовый? Прошивку не выкладывали куда-нить? (пощупать бы глазами)))
Как круто начала развиваться тема, с 9-ти кнопок до одной сенсорной! vitus73 здорово получилось, прям очень! Вопрос, а режимов отображения только один - текстовый? Прошивку не выкладывали куда-нить? (пощупать бы глазами)))
Нет режимов несколько. Цифровой,текстовый,температура(влажность и давление), режим просмотра текста на cd карте и режим отключения вывода текста по расписанию. Что касаемо прошивки, то делалась она под определенный дисплей( в теме выкладывал фото какой). Там с ним свои заморочки, кодировку он только cp866 понимает и долго искал функцию которая кирилицу в кодировку cp866 перекодирует. В скетче весь текст который выводится на кирилице написан,а не \200\201\202. Очень помог с написанием скетча один хороший человек с форума AlexGyver с ником Клаус Опенгеймер, за что ему огромное человеческое спасибо! Я только все собрал в кучу из скетча lavr и примеров разных библиотек, ну и отсебятины не много.
долго искал функцию которая кирилицу в кодировку cp866 перекодирует. В скетче весь текст который выводится на кирилице написан,а не \200\201\202. Очень помог с написанием скетча один хороший человек с форума AlexGyver с ником Клаус Опенгеймер, за что ему огромное человеческое спасибо! Я только все собрал в кучу из скетча lavr и примеров разных библиотек, ну и отсебятины не много.
Вспомнить бы. Проблема была в том что каждая буква кириллицы занимает 2 байта, а латиница 1. Функция перекодирует кодировку UTF-8 в CP866. Сейчас я сохраняю текстовый файл в UTF-8 кодировке, а функция перекодирует в CP866 понятную для моего дисплея.(это для cd карты). В скетче это выглядит так : mySerial.print (RUS("нет WiFi зайдите на 192.168.4.1 ")); Если нужна сама функция могу выложить не жалко.
//--------------------------------- Функция перекодировки в cp866 --------------------------------------------
char* RUS(char* str){ // Определяем функцию которая преобразует код русских символов из кодировки UTF-8 в кодировку CP866
uint8_t i=0, j=0; // Определяем переменные: i - счетчик входящих символов, j - счетчик исходящих символов
while(str[i]){ // Проходим по всем символам строки str, пока не встретим символ конца строки (код 0)
if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) >= 0x90 && uint8_t(str[i+1]) <= 0xBF ){str[j] = (uint8_t) str[i+1]-0x10; i++;}else // Символы «А-Я а-п» (код UTF-8: D090-D0AF D0B0-D0BF) сохраняем в кодировке CP866: код 80-9F A0-AF (символ занимал 2 байта, а стал занимать 1 байт)
if(uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) >= 0x80 && uint8_t(str[i+1]) <= 0x8F ){str[j] = (uint8_t) str[i+1]+0x60; i++;}else // Символы «р-я» (код UTF-8: D180-D18F) сохраняем в кодировке CP866: код E0-EF (символ занимал 2 байта, а стал занимать 1 байт)
if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) == 0x81 ){str[j] = 0xF0; i++;}else // Символ «Ё» (код UTF-8: D081) сохраняем в кодировке CP866: код F0 (символ занимал 2 байта, а стал занимать 1 байт)
if(uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) == 0x91 ){str[j] = 0xF1; i++;}else // Символ «ё» (код UTF-8: D191) сохраняем в кодировке CP866: код F1 (символ занимал 2 байта, а стал занимать 1 байт)
{str[j] = (uint8_t) str[i];} j++; i++; // Остальные символы оставляем как есть, без преобразования, но их место в строке могло сдвинуться, если до них были встречены русские символы
} while(j<i){str[j]=0; j++;} return str; // Так как место занимаемое символами в строке могло уменьшиться, заполняем оставщиеся байты символами конца строки (код 0)
}
Vitus73, очень круто сделали! Вопрос, можно ли вашу прошивку со схемой реализации (подключением) реализовать на дисплеях которые у lavr, Матроскина, и mr.kasper_tyt (фото скидывал на прошлой странице) ? не могли бы поделиться схемой и прошивкой :)
Ну весь скетч это в своей основе прошивка lavr переделанная под конкретный vfd. Остальное есть на просторах нета. Вся проблемма была в кодировке,я ее выложил. Сейчас есть мысли реализовать бегущюю строку и парсить погоду с нета. Будет еще один режим.
//--------------------------------- Функция перекодировки в cp866 --------------------------------------------
char* RUS(char* str){ // Определяем функцию которая преобразует код русских символов из кодировки UTF-8 в кодировку CP866
uint8_t i=0, j=0; // Определяем переменные: i - счетчик входящих символов, j - счетчик исходящих символов
while(str[i]){ // Проходим по всем символам строки str, пока не встретим символ конца строки (код 0)
if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) >= 0x90 && uint8_t(str[i+1]) <= 0xBF ){str[j] = (uint8_t) str[i+1]-0x10; i++;}else // Символы «А-Я а-п» (код UTF-8: D090-D0AF D0B0-D0BF) сохраняем в кодировке CP866: код 80-9F A0-AF (символ занимал 2 байта, а стал занимать 1 байт)
if(uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) >= 0x80 && uint8_t(str[i+1]) <= 0x8F ){str[j] = (uint8_t) str[i+1]+0x60; i++;}else // Символы «р-я» (код UTF-8: D180-D18F) сохраняем в кодировке CP866: код E0-EF (символ занимал 2 байта, а стал занимать 1 байт)
if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) == 0x81 ){str[j] = 0xF0; i++;}else // Символ «Ё» (код UTF-8: D081) сохраняем в кодировке CP866: код F0 (символ занимал 2 байта, а стал занимать 1 байт)
if(uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) == 0x91 ){str[j] = 0xF1; i++;}else // Символ «ё» (код UTF-8: D191) сохраняем в кодировке CP866: код F1 (символ занимал 2 байта, а стал занимать 1 байт)
{str[j] = (uint8_t) str[i];} j++; i++; // Остальные символы оставляем как есть, без преобразования, но их место в строке могло сдвинуться, если до них были встречены русские символы
} while(j<i){str[j]=0; j++;} return str; // Так как место занимаемое символами в строке могло уменьшиться, заполняем оставщиеся байты символами конца строки (код 0)
}
Пользуйтесь.
А что, в кириллице других символов кроме "А-Я", "а-п", "р-я", "Ё" и "ё" нет?
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Да, кстати, хотелось бы подтверждения, что "у меня все отображает".
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Моё мнение - кому эти символы нах нужны, а обработка их только место занимает. Я за разумный компромисс. :) IMHO
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Моё мнение - кому эти символы нах нужны, а обработка их только место занимает. Я за разумный компромисс. :) IMHO
А мое мнение: если экономить, всю кириллицу - туда же. А если делать поддержку кириллицы - то как следует. Т.е. кириллица либо есть, либо ее нет, а когда, вроде, есть, но только часть - это халтура.
// print UTF8 -> CP866
static void xlatPrint(char* src)
{
while (*src) {
uint8_t c = *src++;
if (c == 0xD0) {
c = *src++;
if (c >= 0x90 && c <= 0xBF)
c -= 0x10;
else if (c == 1)
c = 0xF0;
}
else if (c == 0xD1) {
c = *src++;
if (c >= 0x80 && c <= 0x8F)
c += 0x60;
else if (c == 0x91)
c = 0xF1;
}
Printer.write(c);
}
}
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Иногда "кодировку не выбирают".)
Нет, ну если это аппаратное, тогда - да, не выбирают. Но недоумение все равно остается.
А что, в CP866 теперь вместо 223 только 32 символа?
PS. "Пользуйтесь" и "мне хватает" - это совершенно разные подходы. Второй - для исключительно внутреннего использования, а первый предполагает некоторую универсальность.
Проблема исключительно в моем представлении о прекрасном: если функция работает исключительно в конкретном проекте, то не следует ее вне этого проекта и публиковать. Вы написали "Пользуйтесь", а пользоваться ею нельзя. Дальше эта публикация, несомненно расползется, значит, в Интернете увеличится доля говнокода, ну и т.д. и т.п.
Эта функция и взята с интернета, использовали её в термопринтере. Мне она подошла,может и ещё кому нибудь пригодится. И почему ей нелзя пользоваться? Вас нервирует слово "пользуйтесь" я смотрю, так удалим не вопрос.
Проблема исключительно в моем представлении о прекрасном: если функция работает исключительно в конкретном проекте, то не следует ее вне этого проекта и публиковать. Вы написали "Пользуйтесь", а пользоваться ею нельзя. Дальше эта публикация, несомненно расползется, значит, в Интернете увеличится доля говнокода, ну и т.д. и т.п.
"Пользуйтесь" и "мне хватает" - это совершенно разные подходы. Второй - для исключительно внутреннего использования, а первый предполагает некоторую универсальность.
Универсально, но громоздко. Либо быстро, аккуратно, но под конкретную задачу. Извечная дилемма. И во всём +/-.
"Пользуйтесь" и "мне хватает" - это совершенно разные подходы. Второй - для исключительно внутреннего использования, а первый предполагает некоторую универсальность.
Универсально, но громоздко. Либо быстро, аккуратно, но под конкретную задачу. Извечная дилемма. И во всём +/-.
Ну да.
Получается примерно так:
1. Универсально.
1.1. Без кириллицы (95 символов латиницы).
1.2. С полной поддержкой кириллицы (включая белорусский, болгарский, македонский, русинский, русский, сербский, украинский, черногорский, а также казахский, киргизский, монгольский и таджикский).
2. Под конкретную задачу: если нужны только "А", "Ж", "О" и "П", то только эти четыре буквы и кодируем. Но тогда без проекта целиком это и не распространяем.
Не могу не поделиться. Не моё - мой только софт. Прислал заказчик.
Картина называется "Привет из Карелии".) Видно, что у человека руки из правильного места.)
Согласен, русифицировать там особо нечего (вариант с текстовым отображением времени, типа "без пол пятого четыре" и т.д. мне не нравится). А больше другим чем то с этим дисплеем не занимался, пока некогда да и не чем вроде.. Единственное, недавно посетила мысль, когда вставал утром на работу и спросонок ничего в темноте не разглядеть кроме светящегося экрана часов, так вот подумал что было бы не плохо видеть не только температуру внутри (комнатную) но и снаружи, уличную (или с интернета ее тянуть или с внешнего датчика какого..) но пока это только шальная идея, может разовью ее еще, или может кто меня в этом опередит..))
Как круто начала развиваться тема, с 9-ти кнопок до одной сенсорной! vitus73 здорово получилось, прям очень! Вопрос, а режимов отображения только один - текстовый? Прошивку не выкладывали куда-нить? (пощупать бы глазами)))
Как круто начала развиваться тема, с 9-ти кнопок до одной сенсорной! vitus73 здорово получилось, прям очень! Вопрос, а режимов отображения только один - текстовый? Прошивку не выкладывали куда-нить? (пощупать бы глазами)))
...
долго искал функцию которая кирилицу в кодировку cp866 перекодирует. В скетче весь текст который выводится на кирилице написан,а не \200\201\202. Очень помог с написанием скетча один хороший человек с форума AlexGyver с ником Клаус Опенгеймер, за что ему огромное человеческое спасибо! Я только все собрал в кучу из скетча lavr и примеров разных библиотек, ну и отсебятины не много.
Можно подробнее как эта функция реализована
Можно подробнее как эта функция реализована
Вспомнить бы. Проблема была в том что каждая буква кириллицы занимает 2 байта, а латиница 1. Функция перекодирует кодировку UTF-8 в CP866. Сейчас я сохраняю текстовый файл в UTF-8 кодировке, а функция перекодирует в CP866 понятную для моего дисплея.(это для cd карты). В скетче это выглядит так : mySerial.print (RUS("нет WiFi зайдите на 192.168.4.1 ")); Если нужна сама функция могу выложить не жалко.
...
В скетче это выглядит так : mySerial.print (RUS("нет WiFi зайдите на 192.168.4.1 ")); Если нужна сама функция могу выложить не жалко.
Для общего понимания, было бы не плохо. Спасибо.
Пользуйтесь.
Vitus73, очень круто сделали! Вопрос, можно ли вашу прошивку со схемой реализации (подключением) реализовать на дисплеях которые у lavr, Матроскина, и mr.kasper_tyt (фото скидывал на прошлой странице) ? не могли бы поделиться схемой и прошивкой :)
Очень здорово и хотелось бы повторить
devICEpro .Доброго время суток , прикольный градусник Прошивкой поделитесь ?
Я ведь уже выкладывал, никому не интересно было ;(
Провалялось неделю, потом я ссылку удалил.
Петрович, Ваш дисплей поддерживает загрузку пользовательских символов? А то в этом градуснике их почти 70.
Попробуйте для начала залить прошивку ходиков имени Матроскина с двумя шрифтами. Можно без датчика и RTC.
Для оценки возможностей дисплея хватит. Если получится, выложу ссылку на прошивку градусника. Удачи!
Ну весь скетч это в своей основе прошивка lavr переделанная под конкретный vfd. Остальное есть на просторах нета. Вся проблемма была в кодировке,я ее выложил. Сейчас есть мысли реализовать бегущюю строку и парсить погоду с нета. Будет еще один режим.
Я ведь уже выкладывал, никому не интересно было ;
Доброго дня. To Vitus
Могу скинуть вам исходник на esp8266 с погодой. скиньте мыло для связи
Доброго дня. To Vitus
Могу скинуть вам исходник на esp8266 с погодой. скиньте мыло для связи
Пользуйтесь.
А что, в кириллице других символов кроме "А-Я", "а-п", "р-я", "Ё" и "ё" нет?
Я какие вам ещё нужны? У меня все отображает.
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Да, кстати, хотелось бы подтверждения, что "у меня все отображает".
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Моё мнение - кому эти символы нах нужны, а обработка их только место занимает. Я за разумный компромисс. :) IMHO
Я повторяю ещё раз,мой дисплей выводит кириллицу только в кодировке 866. Выбирать тут не приходится. Какой текст вам вывести на дисплей?
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Моё мнение - кому эти символы нах нужны, а обработка их только место занимает. Я за разумный компромисс. :) IMHO
Гигантомания.)
Полный набор кириллических символов.
Доброго дня. To Vitus
Могу скинуть вам исходник на esp8266 с погодой. скиньте мыло для связи
Отправлено
[quote=devICEpro
Петрович, Ваш дисплей поддерживает загрузку пользовательских символов? А то в этом градуснике их почти 70.
Попробуйте для начала залить прошивку ходиков имени Матроскина с двумя шрифтами. Можно без датчика и RTC
[/quote]
Доброго время суток , под градусник у меня лежит дисплей один в один как у Матроскина
petrovich3377@mail.ru
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Иногда "кодировку не выбирают".)
Полный набор кириллических символов.
Temik спасибо,гляну вечером.
Ну, вообще-то 866 включает не все символы кириллицы (поэтому выбор этой кодировки вызывает недоумение), но даже в ней есть "Є", "є", "Ї", "ї", "Ў" и "ў".
Иногда "кодировку не выбирают".)
Темик, а можно и мне исходник прошивки для esp-шки? "Nastenka999111 собака mail ru"
[/quote]Нет, ну если это аппаратное, тогда - да, не выбирают. Но недоумение все равно остается.
[/quote] В чём недоумение то?
Nastenka
исходник несколько кривой. Создан в платформио. Если витус исправит то подумаем об общем доступе.
Полный набор кириллических символов.
А что, в CP866 теперь вместо 223 только 32 символа?
PS. "Пользуйтесь" и "мне хватает" - это совершенно разные подходы. Второй - для исключительно внутреннего использования, а первый предполагает некоторую универсальность.
Вот зачем мне в часах 223 символа? Функция под конкретную задачу,если вам мало,то не пользуйтесь. В чем проблема то?
Проблема исключительно в моем представлении о прекрасном: если функция работает исключительно в конкретном проекте, то не следует ее вне этого проекта и публиковать. Вы написали "Пользуйтесь", а пользоваться ею нельзя. Дальше эта публикация, несомненно расползется, значит, в Интернете увеличится доля говнокода, ну и т.д. и т.п.
Опять же, кроме моего личного чувства прекрасного, существуют и вполне объективные вещи, например, когда владельцы популярного ресторана теряют свой бизнес из за отсутствия пары символов в раскладке: https://www.politnavigator.net/odessa-fashizma-lajjt-ne-byvaet.html
Эта функция и взята с интернета, использовали её в термопринтере. Мне она подошла,может и ещё кому нибудь пригодится. И почему ей нелзя пользоваться? Вас нервирует слово "пользуйтесь" я смотрю, так удалим не вопрос.
Проблема исключительно в моем представлении о прекрасном: если функция работает исключительно в конкретном проекте, то не следует ее вне этого проекта и публиковать. Вы написали "Пользуйтесь", а пользоваться ею нельзя. Дальше эта публикация, несомненно расползется, значит, в Интернете увеличится доля говнокода, ну и т.д. и т.п.
Опять же, кроме моего личного чувства прекрасного, существуют и вполне объективные вещи, например, когда владельцы популярного ресторана теряют свой бизнес из за отсутствия пары символов в раскладке: https://www.politnavigator.net/odessa-fashizma-lajjt-ne-byvaet.html
Если кто-то выложил Безплатно и сказал берите то это значит как есть. Не нравится пройдите мимо.
Предъявлять претензии автору как минимум некорректно.
Эта функция и взята с интернета... Мне она подошла,может и ещё кому нибудь пригодится.
Это как раз то, о чем я говорил - вот так и расползается говнокод.
Если кто-то выложил Безплатно и сказал берите то это значит как есть. Не нравится пройдите мимо.
Судя по Вашей реакции, Вы совершенно не разбираетесь в программировании.
Так может, это именно Вам следовало бы "пройти мимо"?
Универсально, но громоздко. Либо быстро, аккуратно, но под конкретную задачу. Извечная дилемма. И во всём +/-.
Универсально, но громоздко. Либо быстро, аккуратно, но под конкретную задачу. Извечная дилемма. И во всём +/-.
Ну да.
Получается примерно так:
1. Универсально.
1.1. Без кириллицы (95 символов латиницы).
1.2. С полной поддержкой кириллицы (включая белорусский, болгарский, македонский, русинский, русский, сербский, украинский, черногорский, а также казахский, киргизский, монгольский и таджикский).
2. Под конкретную задачу: если нужны только "А", "Ж", "О" и "П", то только эти четыре буквы и кодируем. Но тогда без проекта целиком это и не распространяем.
Господа, здесь форум, а не базар.
Такое кому-нибудь попадалось?
Не могу не поделиться. Не моё - мой только софт. Прислал заказчик.
Картина называется "Привет из Карелии".) Видно, что у человека руки из правильного места.)
Мишка откуда? Ссылку на СТЛьку можно?
Матроскин, а не пробовал сделать часы с русской прошивкой ??
Да и вообще, ребята, у кого какие успехи?
Матроскин, а не пробовал сделать часы с русской прошивкой ??
А чё там русифицировать то? Только дни недели и экран установки времени? Зачем???
Да и вообще, ребята, у кого какие успехи?
Никаких. Только переосмысленная версия градусника появилась
Согласен, русифицировать там особо нечего (вариант с текстовым отображением времени, типа "без пол пятого четыре" и т.д. мне не нравится). А больше другим чем то с этим дисплеем не занимался, пока некогда да и не чем вроде.. Единственное, недавно посетила мысль, когда вставал утром на работу и спросонок ничего в темноте не разглядеть кроме светящегося экрана часов, так вот подумал что было бы не плохо видеть не только температуру внутри (комнатную) но и снаружи, уличную (или с интернета ее тянуть или с внешнего датчика какого..) но пока это только шальная идея, может разовью ее еще, или может кто меня в этом опередит..))