![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
PriZraK |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 22.10.2006 Репутация: нет Всего: нет |
Здравствуйте.
Чековый термопринтер CustomVKP-80II. Необходимо из дельфийского приложений производить печать чеков. Был найден мануал по данному девайсу – http://www.custom.biz/downloads/depliants/...80II_Rev105.pdf из которого удалось подчерпнуть информацию о ESC/POS командах. В качестве примера, приведён следующая запись:
Попытки воплотить эту запись в рабочий код дельфи приложения не увенчалась успехом:
Принтер печатает: Тестовую страницу (по кнопке на самом принтере) печатает отлично: До этого не доводилось работать из дельфи не с обычными принтерами не принтерами поддерживающие команды ESC/POS, да и с самими командами ESC/POS – скорее всего, либо необходимо верно инициализировать принтер перед печатью, либо отправлять по иному. Стоит сказать, что при попытке печатать тестовую страницу из виндовса, вылезает кусок бумаги с метр длины с такими же кракозяблами. |
||||
|
|||||
_Dimon_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: нет Всего: 1 |
Не должно так быть. Из под винды должно нормально печатать. Копай в сторону драйвера принтера. Посмотри что есть в свойствах принтера-Дополнительно-Обработчик печати. З.Ы. У меня есть большой опыт работы с термопринтерами Zebra. Но в своей программе я не использовал ESC/POS команды, всегда обходился стандартными методами печати. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Возьми дельфи < 2009
или используй другие способы печати в порт. Судя по картинке, ты гонишь в порт юникод текст. А тебе нужно слать набор байт. |
|||
|
||||
CROTishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 192 Регистрация: 30.7.2009 Репутация: 1 Всего: 2 |
так пробовал?
|
|||
|
||||
RinOSpro |
|
|||
Unregistered |
В системе для COM1 установи BaudRate, Parity, FlowControl и т.д., значения, которые должны быть написаны в мануале, или на сайте производителя.
И на всякий случай, через программу Aspycom посмотри что ты передаешь в com порт. Это сообщение отредактировал(а) RinOSpro - 29.11.2010, 14:46 |
|||
|
||||
PriZraK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 22.10.2006 Репутация: нет Всего: нет |
Попробовал подключить термопринтер через порт USB, установил драйвер VKP80_win.exe, затем поставил VKP80II_Opos.exe для тестирования принтера, в частности хотел проверить работу с POS-командами.
После этих манипуляций, принтер начал печатать как тестовую страницу Windows, так и нормально отвечать на POS команды и выполнять их. Проблема в том, что необходимо заставить его работать по COM порту. Предварительно удалив принтер из системы, проделал все те же действия, что и при установке с USB разве что выбрал,работу с COM портом, выставил скоростью 19200 bps и назначил управление потоком Xon / Xoff – все эти данные взяли конфигурации принтера (удерживая кнопку LF, включить принтер, отпустить кнопку, когда принтер начнет печать). Вот кстати она: ![]() Но после этих действий, я не смог нормально распечатать ни тестовую страницу (метры чека с абракадаброй), ни поработать с POS командами через утилиту VKP80II_Opos.exe. В качестве эксперимента проделывал всё тоже самое на ином компьютере – те же проблемы. |
|||
|
||||
Xenag |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 51 Регистрация: 6.3.2010 Репутация: нет Всего: нет |
Версию дельфи огласи, пожалуйста...
Хотя и так понятно, что она 2009 или выше. 1. Перестань гнать через WriteLn. WriteLn уже нарушает твой протокол. 2. Используй стримы или WinAPI для печати в порт. 3. Используй 8-битную ANSI кодировку принудительно. Твой принтер с юникодом не дружит. |
|||
|
||||
PriZraK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 22.10.2006 Репутация: нет Всего: нет |
Получилось. Ещё раз сделал PrintSetup (удерживая кнопку LF, включить принтер, отпустить кнопку, когда принтер начнет печать), оказывается скорость стояла 57600 bps, ведать в прошлый раз не корректно вышел из этого режима. Настроил порт в виндовсе, а так же в VKP80II_Opos.exe – принтер начал работать нормально. Пол дела сделано.
Покопавшись с WinAPI, как посоветовал Xenag, получилось выводить на принтер заданный текст.
Это сообщение отредактировал(а) PriZraK - 2.12.2010, 10:31 |
|||
|
||||
PriZraK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 22.10.2006 Репутация: нет Всего: нет |
Для того чтобы заставить печатать данный термопринтер русские буквы, необходимо перепрошить его кириллизованной прошивкой. На данный момент последняя версия 4.06, а новые версии можно искать в данной теме.
В поисках решения печати уже на кириллизованной прошивке, нашёл «OpenSource драйвер терминального принтера Custom VKP80 для Windows и Linux», для меня он стал ориентиром в написании процедуры на дельфи:
Хочу попросить у сообщества данного форума, помочь упростить данную процедуру, так как она слишком громоздка. Исходя из описания к прошивке, в неё добавлена кодовая страница PC866, предполагаю, что кроме букв, можно печатать и иные символы: №, «, » – вот только какой у них байт-код? Это сообщение отредактировал(а) PriZraK - 6.12.2010, 18:07 |
|||
|
||||
Denjs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 3.3.2008 Репутация: нет Всего: нет |
Смотрите ещё проект OTPD - открытые кроссплатформенные драйвера принтеров чеков. http://developer.berlios.de/projects/otpd/ Там найдите модуль принтера Posiflex PP5200, найдите в модуле обработку печати текста. Все команды с комментариями подробно описаны что и зачем делаается (включая маты на особенностиреализации esc|pos у посифлексов)))) http://developer.berlios.de/project/showfi...p?group_id=9484 Если в общем - то вы должны сначала указать притеру кодировку, а потом слать ему данные в заданной кодировке. Но cp1251 большинством принтеров не поддерживается, потому используйте ibm866. И смотрите документацию на ваш принтер - код русской страницы в разных принтерах отличается друг от друга. Если что не понятно - спрашивайте - как автор проекта я вам что-нибудь подскажу. Это сообщение отредактировал(а) Denjs - 3.1.2011, 20:23 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |