Перейти к содержанию
    

Чековый принтер MPRINT G58

Привет.

Так и не понял в какой раздел писать решил сюда.

В общем проблема, чековый принтер MPRINT G58 не хочет печатать кириллицу, латиницу печатает.

Подключил принтер к микроконтроллеру stm32f4. Настроил UART, сделал преобразователь URAT->RS232. Отправляю ABCDEFabcdef все работает печатает норм. Ну думаю сейчас Русский язык заработает и ваще круто.Но нет пишет всякие непонятные символы вместо букв.

Может кто решал данную проблему может подсказать какая кодировка, и можно ли исправить на cp1251?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

. . .

Может кто решал данную проблему может подсказать какая кодировка, и можно ли исправить на cp1251?

С принетрами дела не имел. Но выводом аналогичен выводу на симв. LCD.

1. Не факт, что в принтере прошита кирилица. И если прошита, то раскладка соотв-ет Cp1251 или 866.

Кирилические символы могут быть раскиданы по другим кодам. (для обеспечения большей универсальности)

Соответственно печатать кирилицей можно, пропуская выводимую инф. через перекодировочную таблицу (256 байт)

2. Кодовая таблица может включаться или дип-свитчиком, или подачей упр. команд ESC.

3. Чтоб проверить - зашлите последовательно коды от 0 до 255 в принтер (управляющие символы 0x0D 0x0A 0x07 0x1C итд не выдавать)

4. Наличие или отсутствие возможности установки кодовой таблицы проверяется по док-ии на Ваш девайс (в сборе)

или по наименованиям микросхом его контроллера.

 

(?) доступна ли док. на девайс ?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну вы бы больше рассказали публике, что там за протокол Datamax epl2 ESC-POS SLCS ?

далее, можете сниффером посмотреть обмен и увидеть что за команды идут с компового драйвера

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем полазив по просторам интернета нашел документ с командами к принтеру меркурий - 119. Попробовал пару простых команд протяжка бумаги и т.д. Понял, что команды подходят к g58. После начал работать с кодировками.

В доки есть:

[Наименование] Выбрать таблицу кодов символа

[Формат] ASCII ESC t n

Шестнадцатериный 1B 74 n

Десятичный 27 116 n

[Диапазон]

[По умолчанию] n = 0

[Принтеры, не выполняющие эту команду] Нет

[Описание] Выбирает страницу n из таблицы кодов символа как далее:

 

n Таблица кодов символа

0 Страница 0 [PC437 (США, Стандарт. Европ)]

21 Кириллица II (866)

44 Кириллица I (855)

50 Windows Греческий (Win-1253)

52 Windows Кириллица (Win-1251)

 

[Примечание] ■ Буквенно-цифровые символы (20H (десятич. 32) до 7FH (десятич.127)) одинаковые для каждой страницы. Расширенные символы (80H (десятич.128) до FFH (десятич.255)) разные для каждой страницы.

[Изменения в зависимости от модели] Нет

 

Отправил команду 1b 74 52 принтер съел.

После посмотрел таблицу Win-1251. Русскому символу 'А' соответствует код c0. Отправил его, а получил 'А' с тильдой.

В доки есть еще команда: Выбрать международный набор символов но трогать не стал.

 

doc_program_g58.doc

Изменено пользователем Alex_Golubev

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Краткий исторический экскурс.

Есть спецификация от Epson на ESC-команды (внучка спецификации на матричные принтеры из прошлого века).

Там базовый набор - промотать бумагу, установить выравнивание влево-вправо, подчёркивание-италик и т.д.

Большинство вендоров этот набор поддерживает, плюс имеет свой собственный набор команд работы с графикой, мильёном разных штрих-кодов и проч.

Стандартной команды "выбрать кодовую страницу" не существует; более того, возможно, в Вашем случае не существует и самой 1251-й страницы, а можно пользоваться только user-defined шрифтами, которые надо отдельно загрузить в eeprom.

Команды загрузки шрифтов у каждого бренда (да что уж там, у каждой линейки) будут свои, ни с чем не совместимые.

 

Сниффить родной драйвер можно, но с большой вероятностью он переводит принтер в графический режим и дальше гонит туда растеризованную картинку. Писишному программисту так удобнее :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да вроде догнал как печатать русские буквы. По крайней мере печатаю. Выманил Доку у тех. поддержки, но походу в ней не все команды.

Не могу понять как подчеркнуть. В доки написано:

[Name] Turn underline mode on/off

[Format] ASCII ESC − n

Hex 1B 2D n

Decimal 27 45 n

[Range] 0 ≤ n ≤ 2, 48 ≤ n ≤ 50

[Default] n = 0

[Description] • Turns underline mode on or off.

стр.17.

Это получается, что число n дробное?

TP801_TP805_TP806__Programming_Manual_Rev1.6.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это получается, что для совместимости (с чем, я никогда не задумывался) команды

0x1B 0x2D 0x01

и

0x1B 0x2D 0x31

абсолютно идентичны. Там много таких.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...