Во-первых, понимает ли принтер кириллицу?
Если да, то наверняка он работает в кодировке CP866, т.е. любой текст, который ты отсылаешь, надо конвертировать (AnsiToOEM).
Во-вторых, шестнадцатиричных значений для принтера не бывает, бывают только числа, выраженные в какой-либо системе исчисления, например шестнадцатиричной. Т.е. чтобы отправить на принтер символ с шестнадцатиричным кодом 1E, то надо использовать такую функцию: Chr$(&h1E).
Например, установка кодовой страницы 866 (в шестнадцатиричном виде это 0x0362) будет выглядеть так:
- Код: Выделить всё
Print #1, Chr$(&h1B) & Chr$(&h52) & Chr$(&h03) & Chr$(&h62)
либо (скорее всего) так:
- Код: Выделить всё
Print #1, Chr$(&h1B) & Chr$(&h52) & "866"
.
А скорее всего, в документации принтера описано, какой кодовой странице какой
n соответствует.
Если принтер не поддерживает кириллицу, то эти шрифты необходимо в него загружать.
Т.е. надо будет определить таблицу символов:
- Код: Выделить всё
Print #1, Chr$(&h1B) & Chr$(&h1D) & "t 1"
А затем загружать сами образы символов:
- Код: Выделить всё
Const Prefix As String = Chr$(&h1B) & Chr$(&h26) & Chr$(&h31) & Chr$(&h31)
'Загрузить символ "А"
Print #1, Prefix & "А" & Chr$(&h00) & Chr$(&h00) & ... & Chr$(&h00)
...
'Загрузить символ "Я"
Print #1, Prefix & "Я" & Chr$(&h00) & Chr$(&h00) & ... & Chr$(&h00)
Каждый раз грузить фонты кодом занятие неблагодарное, советую создать внешний файл фонтов и загружать из него.
То, что идет после символов (в моем примере это Chr$(&h00) & Chr$(&h00) & ... & Chr$(&h00)) как раз и является битовой маской указанного символа; ты переопределяешь изображение указанного символа.
Lasciate ogni speranza, voi ch'entrate.