| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Печать чеков |
| Автор: PriZraK 27.11.2010, 18:31 | ||||
| Здравствуйте. Чековый термопринтер http://www.custom-printer.ru/ru/CustomVKP-80II/. Необходимо из дельфийского приложений производить печать чеков. Был найден мануал по данному девайсу – http://www.custom.biz/downloads/depliants/DOME-VKP80II_Rev105.pdf из которого удалось подчерпнуть информацию о ESC/POS командах. В качестве примера, приведён следующая запись:
Попытки воплотить эту запись в рабочий код дельфи приложения не увенчалась успехом:
Принтер печатает: Тестовую страницу (по кнопке на самом принтере) печатает отлично: До этого не доводилось работать из дельфи не с обычными принтерами не принтерами поддерживающие команды ESC/POS, да и с самими командами ESC/POS – скорее всего, либо необходимо верно инициализировать принтер перед печатью, либо отправлять по иному. Стоит сказать, что при попытке печатать тестовую страницу из виндовса, вылезает кусок бумаги с метр длины с такими же кракозяблами. |
| Автор: Snowy 29.11.2010, 12:55 |
| Возьми дельфи < 2009 или используй другие способы печати в порт. Судя по картинке, ты гонишь в порт юникод текст. А тебе нужно слать набор байт. |
| Автор: CROTishka 29.11.2010, 13:22 | ||
так пробовал?
|
| Автор: RinOSpro 29.11.2010, 14:34 |
| В системе для COM1 установи BaudRate, Parity, FlowControl и т.д., значения, которые должны быть написаны в мануале, или на сайте производителя. И на всякий случай, через программу Aspycom посмотри что ты передаешь в com порт. |
| Автор: PriZraK 30.11.2010, 21:01 |
| Попробовал подключить термопринтер через порт USB, установил драйвер http://www.custom.it/downloads/drivers/VKP80_win.exe, затем поставил http://www.custom.it/downloads/drivers/VKP80II_Opos.exe для тестирования принтера, в частности хотел проверить работу с POS-командами. После этих манипуляций, принтер начал печатать как тестовую страницу Windows, так и нормально отвечать на POS команды и выполнять их. Проблема в том, что необходимо заставить его работать по COM порту. Предварительно удалив принтер из системы, проделал все те же действия, что и при установке с USB разве что выбрал,работу с COM портом, выставил скоростью 19200 bps и назначил управление потоком Xon / Xoff – все эти данные взяли конфигурации принтера (удерживая кнопку LF, включить принтер, отпустить кнопку, когда принтер начнет печать). Вот кстати она: ![]() Но после этих действий, я не смог нормально распечатать ни тестовую страницу (метры чека с абракадаброй), ни поработать с POS командами через утилиту VKP80II_Opos.exe. В качестве эксперимента проделывал всё тоже самое на ином компьютере – те же проблемы. |
| Автор: Xenag 30.11.2010, 23:07 |
| Версию дельфи огласи, пожалуйста... Хотя и так понятно, что она 2009 или выше. 1. Перестань гнать через WriteLn. WriteLn уже нарушает твой протокол. 2. Используй стримы или WinAPI для печати в порт. 3. Используй 8-битную ANSI кодировку принудительно. Твой принтер с юникодом не дружит. |
| Автор: PriZraK 2.12.2010, 07:54 | ||
| Получилось. Ещё раз сделал PrintSetup (удерживая кнопку LF, включить принтер, отпустить кнопку, когда принтер начнет печать), оказывается скорость стояла 57600 bps, ведать в прошлый раз не корректно вышел из этого режима. Настроил порт в виндовсе, а так же в http://www.custom.it/downloads/drivers/VKP80II_Opos.exe – принтер начал работать нормально. Пол дела сделано. Покопавшись с WinAPI, как посоветовал Xenag, получилось выводить на принтер заданный текст.
|
| Автор: PriZraK 4.12.2010, 07:12 | ||
| Для того чтобы заставить печатать данный термопринтер русские буквы, необходимо перепрошить его кириллизованной прошивкой. На данный момент последняя версия http://ftp.ladon.ru/DC_SW_FW/CUSTOM/VKP80II_fw-4-06-rus.zip, а новые версии можно искать в http://kiosks.ru/YAF/Default.aspx?g=posts&m=257552. В поисках решения печати уже на кириллизованной прошивке, нашёл «http://www.vb-net.ru/Custom_VKP80/index.htm», для меня он стал ориентиром в написании процедуры на дельфи:
Хочу попросить у сообщества данного форума, помочь упростить данную процедуру, так как она слишком громоздка. Исходя из описания к прошивке, в неё добавлена кодовая страница PC866, предполагаю, что кроме букв, можно печатать и иные символы: №, «, » – вот только какой у них байт-код? |
| Автор: Denjs 3.1.2011, 20:14 | ||
Смотрите ещё проект OTPD - открытые кроссплатформенные драйвера принтеров чеков. http://developer.berlios.de/projects/otpd/ Там найдите модуль принтера Posiflex PP5200, найдите в модуле обработку печати текста. Все команды с комментариями подробно описаны что и зачем делаается (включая маты на особенностиреализации esc|pos у посифлексов)))) http://developer.berlios.de/project/showfiles.php?group_id=9484 Если в общем - то вы должны сначала указать притеру кодировку, а потом слать ему данные в заданной кодировке. Но cp1251 большинством принтеров не поддерживается, потому используйте ibm866. И смотрите документацию на ваш принтер - код русской страницы в разных принтерах отличается друг от друга. Если что не понятно - спрашивайте - как автор проекта я вам что-нибудь подскажу. |