замена символов в выводе на их "правильные" адреса в самопальном шрифте
- Войдите на сайт для отправки комментариев
здравствуйте. в общем, хочу русифицировать свой принтер (128х64, Marlin)
вот сюда...
http://arduino.ru/forum/programmirovanie/kak-vyvesti-russkie-bukvy-na-lcd-st7920
...меня не посылать, я прямиком от туда.
в общем. модернизировал я 2 шрифта (6х9 и 6х10), что были в принтере. сделал проверку на вывод (вывел все символы) - отображается корректно.
теперь задача - заменить всю кириллицу на их новые адреса в кодировке. в LiquidCrystalRus.cpp не полез. не осилю. решил дополнить файлик language_ru.h "дефайнами" (ну, яжпрограммист, не зря курс учился в вузе в Visual studio на C++ что-то калякать). получилость вот это непотребство:
/** * Russian * * LCD Menu Messages * Please note these are limited to 17 characters! * */ #define А A #define Б \xBF #define В B #define Г \xC0 #define Д \xC1 #define Е E #define Ё \xCB #define Ж \xC2 #define З \xC3 #define И \xC4 #define Й \xC5 #define К K #define Л \xC6 #define М M #define Н H #define О O #define П \xC7 #define Р P #define С C #define Т T #define У \xC8 #define Ф \xC9 #define Х X #define Ц \xCA #define Ч \xCC #define Ш \xCD #define Щ \xCE #define Ъ \xCF #define Ы \xD0 #define Ь \xD1 #define Э \xD2 #define Ю \xD3 #define Я \xD4 #define а a #define б \xD5 #define в \xD6 #define г \xD9 #define д \xDA #define е e #define ё \xEB #define ж \xDB #define з \xDC #define и \xDD #define й \xDE #define к \xDF #define л \xE0 #define м \xE1 #define н \xE2 #define о o #define п \xE3 #define р p #define с c #define т \xE4 #define у y #define ф \xE5 #define х x #define ц \xE6 #define ч \xE7 #define ш \xE8 #define щ \xE9 #define ъ \xEA #define ы \xEC #define ь \xED #define э \xEE #define ю \xF1 #define я \xF2 #ifndef LANGUAGE_RU_H #define LANGUAGE_RU_H #define LANGUAGE_RU #define WELCOME_MSG MACHINE_NAME "Готов." #define MSG_SD_INSERTED "Карта вставлена" #define MSG_SD_REMOVED "Карта извлечена" #define MSG_MAIN "Меню \003" #define MSG_AUTOSTART "Автостарт" #define MSG_DISABLE_STEPPERS "Выкл. двигатели" #define MSG_AUTO_HOME "Парковка" ... и так далее
(кириллицу, похожую на латиницу, я латиницей же и заменил)
в общем, соль: компилятор ругается НА КАЖДЫЙ мой #дефайн:
Arduino: 1.6.5 (Windows 8.1), Плата"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"
In file included from language.h:156:0,
from cardreader.cpp:6:
language_ru.h:11: error: macro names must be identifiers
#define Рђ A
^
language_ru.h:12: error: macro names must be identifiers
#define Р‘ \xBF
^
language_ru.h:13: error: macro names must be identifiers
#define Р’ B
^
language_ru.h:14: error: macro names must be identifiers
#define Р“ \xC0
^
language_ru.h:15: error: macro names must be identifiers
#define Р” \xC1
^
language_ru.h:16: error: macro names must be identifiers
#define Р• E
^
language_ru.h:17: error: macro names must be identifiers
#define РЃ \xCB
^
language_ru.h:18: error: macro names must be identifiers
#define Р– \xC2
^
language_ru.h:19: error: macro names must be identifiers
#define Р— \xC3
^
language_ru.h:20: error: macro names must be identifiers
#define Р? \xC4
^
language_ru.h:21: error: macro names must be identifiers
#define Р™ \xC5
^
language_ru.h:22: error: macro names must be identifiers
#define Рљ K
^
language_ru.h:23: error: macro names must be identifiers
#define Р› \xC6
^
language_ru.h:24: error: macro names must be identifiers
#define Рњ M
^
language_ru.h:25: error: macro names must be identifiers
#define Рќ H
^
language_ru.h:26: error: macro names must be identifiers
#define Рћ O
^
language_ru.h:27: error: macro names must be identifiers
#define Рџ \xC7
^
language_ru.h:28: error: macro names must be identifiers
#define Р P
^
language_ru.h:29: error: macro names must be identifiers
#define РЎ C
^
language_ru.h:30: error: macro names must be identifiers
#define Рў T
^
language_ru.h:31: error: macro names must be identifiers
#define РЈ \xC8
^
language_ru.h:32: error: macro names must be identifiers
#define Р¤ \xC9
^
language_ru.h:33: error: macro names must be identifiers
#define РҐ X
^
language_ru.h:34: error: macro names must be identifiers
#define Р¦ \xCA
^
language_ru.h:35: error: macro names must be identifiers
#define Р§ \xCC
^
language_ru.h:36: error: macro names must be identifiers
#define РЁ \xCD
^
language_ru.h:37: error: macro names must be identifiers
#define Р© \xCE
^
language_ru.h:38: error: macro names must be identifiers
#define РЄ \xCF
^
language_ru.h:39: error: macro names must be identifiers
#define Р« \xD0
^
language_ru.h:40: error: macro names must be identifiers
#define Р¬ \xD1
^
language_ru.h:41: error: macro names must be identifiers
#define Р \xD2
^
language_ru.h:42: error: macro names must be identifiers
#define Р® \xD3
^
language_ru.h:43: error: macro names must be identifiers
#define РЇ \xD4
^
language_ru.h:45: error: macro names must be identifiers
#define Р° a
^
language_ru.h:46: error: macro names must be identifiers
#define Р± \xD5
^
language_ru.h:47: error: macro names must be identifiers
#define РІ \xD6
^
language_ru.h:48: error: macro names must be identifiers
#define Рі \xD9
^
language_ru.h:49: error: macro names must be identifiers
#define Рґ \xDA
^
language_ru.h:50: error: macro names must be identifiers
#define Рµ e
^
language_ru.h:51: error: macro names must be identifiers
#define С‘ \xEB
^
language_ru.h:52: error: macro names must be identifiers
#define Р¶ \xDB
^
language_ru.h:53: error: macro names must be identifiers
#define Р· \xDC
^
language_ru.h:54: error: macro names must be identifiers
#define Рё \xDD
^
language_ru.h:55: error: macro names must be identifiers
#define Р№ \xDE
^
language_ru.h:56: error: macro names must be identifiers
#define Рє \xDF
^
language_ru.h:57: error: macro names must be identifiers
#define Р» \xE0
^
language_ru.h:58: error: macro names must be identifiers
#define Рј \xE1
^
language_ru.h:59: error: macro names must be identifiers
#define РЅ \xE2
^
language_ru.h:60: error: macro names must be identifiers
#define Рѕ o
^
language_ru.h:61: error: macro names must be identifiers
#define Рї \xE3
^
language_ru.h:62: error: macro names must be identifiers
#define СЂ p
^
language_ru.h:63: error: macro names must be identifiers
#define СЃ c
^
language_ru.h:64: error: macro names must be identifiers
#define С‚ \xE4
^
language_ru.h:65: error: macro names must be identifiers
#define Сѓ y
^
language_ru.h:66: error: macro names must be identifiers
#define С„ \xE5
^
language_ru.h:67: error: macro names must be identifiers
#define С… x
^
language_ru.h:68: error: macro names must be identifiers
#define С† \xE6
^
language_ru.h:69: error: macro names must be identifiers
#define С‡ \xE7
^
language_ru.h:70: error: macro names must be identifiers
#define С€ \xE8
^
language_ru.h:71: error: macro names must be identifiers
#define С‰ \xE9
^
language_ru.h:72: error: macro names must be identifiers
#define СЉ \xEA
^
language_ru.h:73: error: macro names must be identifiers
#define С‹ \xEC
^
language_ru.h:74: error: macro names must be identifiers
#define СЊ \xED
^
language_ru.h:75: error: macro names must be identifiers
#define СЌ \xEE
^
language_ru.h:76: error: macro names must be identifiers
#define СЋ \xF1
^
language_ru.h:77: error: macro names must be identifiers
#define СЏ \xF2
^
macro names must be identifiers
Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
я явно что-то делаю не так.... помогите пожалуйста...
если кому вдруг понадобятся "годные" шрифты для Marlin (Марлиновские символы в конце не задеты, латиница стоит вместо всяких À,Á,Â,Ã,... и т.п.), то вот: тыкнуть ссылку на гугл-диск
вот, кстати, моя кодировка:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
| 0 | ||||||||||||||||
| 1 | ||||||||||||||||
| 2 | ! | “ | # | $ | % | & | ‘ | ( | ) | * | + | , | - | . | / | |
| 3 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 4 | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 5 | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
| 6 | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
| 7 | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | |
| 8 | ||||||||||||||||
| 9 | ||||||||||||||||
| A | ¡ | ¢ | £ | ¤ | ¥ | ¦ | § | ¨ | © | ª | « | ¬ | | ® | ¯ | |
| B | ° | ± | ² | ³ | ´ | µ | ¶ | · | ¸ | ¹ | º | » | ¼ | ½ | ¾ | Б |
| C | Г | Д | Ж | З | И | Й | Л | П | У | Ф | Ц | Ë | Ч | Ш | Щ | Ъ |
| D | Ы | Ь | Э | Ю | Я | б | в | × | Ø | г | д | ж | з | и | й | к |
| E | л | м | н | п | т | ф | ц | ч | ш | щ | ъ | ë | ы | ь | э | ï |
| F | ð | ю | я | ó | ô | õ | ö | ÷ | ø | ù | ú | û | ü | ý | þ | ÿ |
Проблема даже не в том, что Вы что-то не то делаете, а в том, что неясно что же именно Вы хотели сделать. Если Вы хотите, чтобы при выводе заменялись символы, так при чём здесь define?
Надо лезть в language_ru.h и осиливать. Тем более, что Вы
ж программист, не зря курс учился в вузе в Visual studio на C++ что-то калякать
неясно что же именно Вы хотели сделать. Если Вы хотите, чтобы при выводе заменялись символы, так при чём здесь define?
теперь задача - заменить всю кириллицу на их новые адреса в кодировке.
надеюсь, я не сильно смахиваю на пижона.
вроде все написал.. что в лангвич_ру.аш лезть? там кроме перевода ничего нет. или вы мне предлагаете вручную все заменить? не, я конечно могу это сделать. я надеялся услышать исправление моей ошибки, или альтернативный путь без замены каждого символа во всем переводе вручную.
я надеялся услышать исправление моей ошибки
Дефинам не нравятся русские буквы.
я надеялся услышать исправление моей ошибки, или альтернативный путь без замены каждого символа во всем переводе вручную.
Не услышите потому что дело в не в ошибке, а подходе. Ну, допустим, что define съест русские буквы и всё у Вас скомпилируется. И что? Что это Вам даст? Как Вы собираетесь решать проблему?
Я Вам писал (правда имя файла не то указал случайно), что Вам надо не костыли городить, а лезть в библиотеку и осиливать. Тем более, что там осиливать-то особо нечего. Если Вы действительно программитс, конечно.
а лезть в библиотеку и осиливать.
не понял этого "осиливать"... а так у меня все получилось тупой ручной заменой (поиск-замена):
вот как-то так..)
Дефинам не нравятся русские буквы.
Вот жешь сволочи...( абидно
не понял этого "осиливать"... а так у меня все получилось тупой ручной заменой (поиск-замена):
Как видите, всё осилилось. С Победой Вас!
LiquidCrystalRus.cpp
аааа, а я думал в лангуич_ру.аш) я недопонял совсем оказывается) осилилось, но не так совсем) в кристал я не лез... там незнакомые операторы и я тупо не понимаю, что там происходит((( вдруг кто в курсе...