Опять про принтер и VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Опять про принтер и VB

Сообщение GRS » 28.10.2004 (Чт) 20:03

:roll: Я, короче, уже запарился...

При печати напрямую в порт, принтер русский не понимает. Как быть?
Раскопал кое-что в документации, помогите разобраться, пожалуйста:

Control codes*********Hexadecimal codes***********Function
___________________________________________________________
<ESC>"R"n*************1B 52 n************Select international
****************************************character set
___________________________________________________________
<ESC><GS>t n*********1B 1D t n********Select character table
___________________________________________________________
<ESC>"&""1""1" n ********1B 26 31 31 n**********Define download
m1 m2...m48 *********** m1 m2...m48********** character


Пробывал писать:
Код: Выделить всё
Print #1, Chr$(27)&"&"&"1"&"1"&"а"&"б"....&"я"

ничего... что делаю не так?
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 29.10.2004 (Пт) 6:59

Парни, я вот еще чего не понимаю: как, посылать принтеру шестнадцатиричные значения? Если в кавычках - он их принимает за текст. Тогда как?
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 29.10.2004 (Пт) 8:56

Ты строки печатаешь в ASCii или сразу в UNICODE?)))))
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 29.10.2004 (Пт) 11:17

Наверное в ASCII, вот как делаю:

Print #1, "Test Print MESSAGE"

и в ответ принтер печатает именно эту строку, только вот если я отправлю по-русски, то получаю "кардабалябру". Как быть? Причем здесь Unicode? Растолкуйте! :shock:
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 29.10.2004 (Пт) 11:29

Помогите разобраться и напечатать РУССКИЕ СИМВОЛЫ!!! :cry: :cry: :cry: :!: :!: :!:
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.10.2004 (Пт) 12:44

Во-первых, понимает ли принтер кириллицу?
Если да, то наверняка он работает в кодировке 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.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron