|
Печать ШК на матричный принтер | ☑ | ||
---|---|---|---|---|
0
kupec
27.03.13
✎
08:35
|
Добрый день, есть принтер(EPSON LX300) понимающий ESC команды, есть набор команд в двоичном коде (как пример) для печати ШК
1B 28 42 13 00 ; Barcode command and data length 00 ; Barcode type k = EAN-13 02 ; Module width m = 2 dots / 180 inch 00 ; Space adjustment value s = +0 dots / 360 inch 7D 00 ; Bar length v1, v2 = 125 / 180 inch 00 ; Control flags c 30 31 32 33 34 35 36 ; Barcode Data 37 38 39 30 31 32 я как понимаю файл такого содержания нужно оправить в порт принтера но предварительно указать что данный текст является набором ESC команд, кто нибудь сталкивался с печатью таким образом, помогите. |
|||
1
mishaPH
27.03.13
✎
08:36
|
ну вы извращенцы. ШК на матричном
|
|||
2
ParaWiz
27.03.13
✎
08:37
|
ох ебт, а не проще картинку печатать ? емнип хреновенько но картинки LX-300 печатал :) ... единственное что, сомневаюсь что сканер все равно их прочитает ... лень смотреть 9-ти или 24х иголочный он был
|
|||
3
kupec
27.03.13
✎
08:37
|
(1) согласен...но НАДО !!!
|
|||
4
kupec
27.03.13
✎
08:38
|
(2) в документации к принтеру написано что он предназначен для печати на нем ШК и в качестве примера то что в (0)
|
|||
5
mishaPH
27.03.13
✎
08:39
|
(0) погугли как послать ескейп комманду в порт принтера
|
|||
6
mishaPH
27.03.13
✎
08:39
|
там помоему какие-то спец символы как в ердакторе текстовом лексикон надо поставить
|
|||
7
mikecool
27.03.13
✎
08:39
|
||||
8
kupec
27.03.13
✎
08:45
|
(2) ТАК ГОРАЗДО ДОЛЬШЕ
|
|||
9
ParaWiz
27.03.13
✎
08:45
|
(4) жестоко, принтеров таких в своем хозяйстве имел конечно несколько штук ... лет 10-12 назад, но вот документацию к ним даже не видел, не то что не читал :)
|
|||
10
ParaWiz
27.03.13
✎
08:46
|
(8) не спорю, дольше, но кстати поделись секретом, зачем это нужно ? :)
|
|||
11
kupec
27.03.13
✎
08:47
|
(10) накладные печатаются на матричный принтер, начальству хочется чтобы на каждой накладной был ШК для того чтоб её быстро и легко можно было найти в журнале....что то в таком роде, ну и соответственно если все получится то по данному поводу будут другие пожелания
|
|||
12
kupec
27.03.13
✎
08:48
|
хоть бы элементарный пример файла содержащий ESC последовательность....не могу найти (((
|
|||
13
ParaWiz
27.03.13
✎
08:49
|
(11) Ну вообще Esc последовательности насколько я помню как-то так из 1с будет выглядеть ""+Симв(27)+"команда"
|
|||
14
ParaWiz
27.03.13
✎
08:50
|
причем я б даже так сказал ""+Симв(27)+Симв(однобайтовый код команды в десятичной системе счисления)
|
|||
15
kupec
27.03.13
✎
08:57
|
я например знаю что
Симв(15) переключение в узкий режим симв(18) широкий режим симв(45) печать подчеркнутым шрифтом.... а как все это связать с двоичным кодом ???? меня не хватает ))) |
|||
16
mikecool
27.03.13
✎
08:59
|
(15) запиши эту последовательность в текстовый файл и распечатай его на принтер
|
|||
17
ParaWiz
27.03.13
✎
09:02
|
(16) оптимально кстати :)
copy файлик_последовательности prn |
|||
18
mikecool
27.03.13
✎
09:04
|
(17) ага, расчетные листки печатал так на рулоне - лепота
в 1 проход на 9-игольном, быстро, дешего, главное - рассмотреть результат можно было )) |
|||
19
ParaWiz
27.03.13
✎
09:14
|
(15) в твоем примере в (0) коды не двоичные :) а шестнадцатеричные, перевод hex -> dec умеет например штатный виндовый калькулятор, когда его делаешь в виде кажется Alt+3, у меня называется Ver - Programador ... то есть наверно Вид - Программист :)
|
|||
20
Mikeware
27.03.13
✎
09:16
|
хы. не знал!
|
|||
21
kupec
27.03.13
✎
09:18
|
(19) спасиб, сейчас попробую
|
|||
22
Mikeware
27.03.13
✎
09:23
|
(19) ну это уж вообще позорище - калькулятором переводить...
|
|||
23
ParaWiz
27.03.13
✎
09:25
|
(22) Самое простое что есть под рукой у каждого, и не надо думать вообще :)
|
|||
24
kupec
27.03.13
✎
09:27
|
Текст=СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(Симв(27)+Симв(66)+Симв(19)+Симв(0)); Текст.ДобавитьСтроку(Симв(0)); Текст.ДобавитьСтроку(Симв(2)); Текст.ДобавитьСтроку(Симв(0)); Текст.ДобавитьСтроку(Симв(125)+Симв(0)); Текст.ДобавитьСтроку(Симв(0)); Текст.ДобавитьСтроку(Симв(48)+Симв(49)+Симв(50)+Симв(51)+Симв(52)+Симв(53)+Симв(54)+Симв(55)+Симв(56)+Симв(48)+Симв(49)+Симв(50)); Текст.Записать("C:\123.txt"); ФС.КопироватьФайл("C:\123.txt","\\sclad\epson\",1); вот что посылаю в принтер в итоге выходит на печать 012345678012 |
|||
25
Mikeware
27.03.13
✎
09:32
|
(23) а, ну "если не думать"... :-)
хотя это бывает полезно... --------- "Штирлиц подумал... ему понравилось! "А не подумать ли еще?" - подумал Штирлиц" © |
|||
26
Mikeware
27.03.13
✎
09:32
|
(24) ну а теперь переведи принтер в режим дампа, и посмотри, что ты _реально_ выводишь...
|
|||
27
Соло
27.03.13
✎
09:33
|
(24) Да, трудновато с переводом hex -> dec
27+40+66+19 или с внимательностью |
|||
28
Соло
27.03.13
✎
09:36
|
ну и читать нужно не пример, а описание команды, там всё буквально разжёвано, какой символ за что отвечает
|
|||
29
kupec
27.03.13
✎
11:26
|
В руководстве по Epson указано
ESC ( B nL nH k m s v1 v2 c BarCodeData описание параметров n=(n1 + (256 * n2)) k=5 (Code39) m= Ширина модуля (2,3,4,5) s=Величина пробела (-3<=s<=3) v1,v2 = Длинна штриха v1 + v2 * 256 вот что написано в руководстве..а примера никакого как в этом разобраться??? может сталкивался кто? |
|||
30
vitek89
27.03.13
✎
11:36
|
может, надо еще КодоваяСтраница(1), досовскую кодировку то бишь?
|
|||
31
kupec
27.03.13
✎
11:47
|
(30) тоже на это грешил...но добавив ничего в итоге не получилось
|
|||
32
vitek89
27.03.13
✎
12:01
|
может, я чего-то не понимаю, но вроде символ ESC должен быть перед каждой форматирующей командой, то есть в начале каждой строки, кроме строки с данными штрихкода. вообще, фиг его знает
|
|||
33
Mikeware
27.03.13
✎
12:05
|
пляттьь.....
(24) где в (0) сказано, что нужно добавлять CRLF ???? а Упомянутое в (24) ДобавитьСтроку() как раз их и добавляет.... Я ж тебе в (26) сказал - включи принтер в режиме дампа (включать, удерживая какую-то из кнопок, смотри мануал), и смотри, что ты реально выплевываешь на принтер. |
|||
34
ParaWiz
27.03.13
✎
12:11
|
Попробуй такое ему скормить
строчка=""+Симв(27)+Симв(40)+Симв(66)+Симв(18)+Симв(0)+Симв(0)+"msvvc412345678901" примерно так ... теоретически распечатает 13 значный код 4123456789018 ... последняя цифра 8 она контрольная, распечатается сама |
|||
35
ProxyInspector
27.03.13
✎
12:28
|
С 1с77 есть какая то тонкость типа Симв(0) - служебный символ и штатным способом его в adqk не добавишь. Требуется не совсем штатный способ.
Но мы уже лет 10 печатаем штрих коды на матричном принтере, при этом сканеры их даже считывают. Используем: "BinFiles.dll") |
|||
36
kupec
27.03.13
✎
12:31
|
(35) а можно поподробней
|
|||
37
ParaWiz
27.03.13
✎
12:34
|
(36) как я понимаю http://infostart.ru/public/127873/ тут все довольно подробно
|
|||
38
ProxyInspector
27.03.13
✎
12:34
|
Ищешь Внешнюю компоненту Binfile.dll позволяет писать двоичные данные в файл. Создаешь файл для печати с управляющими символами. Потом копируешь файл на принтер. Печатает быстро и качественно. Управляющие символы см. инструкцию к принтеру.
У нас примерно так: // Получает управляющую последовательность для печати на матричном принтере // печатаем штрих код CODE128А Функция ДобавитьШтихКодПечать(Файл,ШтрихКод) Экспорт ДлинаШтрихКода=СтрДлина(ШтрихКод); ДлинаБлокаДанных=7+ДлинаШтрихКода; Файл.WriteHex("1B2842"); // Печать штрих кода Файл.WriteBin(ДлинаБлокаДанных,2); // Длина данных о штрих коде 2 байта Файл.WriteHex("06"); // CODE128 Файл.WriteHex("01"); // толщина штриха 1 точка Файл.WriteHex("00"); // величина регулировки пробела Файл.WriteHex("3300"); // длина штриха n2+n1/180 дюйм (n2+n1/72 дюйм) примерно 17 мм Файл.WriteHex("03"); // флаг управления: бит1 - добавлять контрольную цифру, бит2 - не печатать данные штрих кода Файл.WriteHex("41"); // Тип А CODE128 Файл.Write(ШтрихКод); // Данные штрих кода Возврат Файл; КонецФункции |
|||
39
kupec
27.03.13
✎
13:10
|
???? ??????????????????????????("C:\BinFiles.dll") = 0 ?????
????????("?????? ???????? ??????? ??????????","!!!"); ??????? ?????????; ????????=6914204339665; ???? = ?????????????("AddIn.BinFile"); ??????????????=????????(????????); ????????????????=7+??????????????; ????.Create("C:\1.txt"); ????.WriteHex("1B2842"); // ?????? ????? ???? ????.WriteBin(????????????????,2); // ????? ?????? ? ????? ???? 2 ????? ????.WriteHex("06"); // CODE128 ????.WriteHex("01"); // ??????? ?????? 1 ????? ????.WriteHex("00"); // ???????? ??????????? ??????? ????.WriteHex("3300"); // ????? ?????? n2+n1/180 ???? (n2+n1/72 ????) ???????? 17 ?? ????.WriteHex("03"); // ???? ??????????: ???1 - ????????? ??????????? ?????, ???2 - ?? ???????? ?????? ????? ???? ????.WriteHex("41"); // ??? ? CODE128 ????.Write(????????); // ?????? ????? ???? |
|||
40
kupec
27.03.13
✎
13:14
|
ОЙ
|
|||
41
Соло
27.03.13
✎
13:22
|
(29) Я понимаю, когда это непонятно для бухгалтера или секретаря-мкшинистки, но программист должен это легко понять.
Когда-нибудь вообще с ESC последовательностями работал? Ещё есть ESC2 (расширенный набор) и ESC-P для лазерных принтеров. Все данные команды пишутся последовательно без каких-либо пробелов и переводов строк, тупо по порядку, побайтно. Описание каждого байта по очереди тебе дано. Что ещё не понятно? Тупо возьми любой hex-редактор и руками пробуй вбить нужные данные. Логика не сложная, поймёшь быстро, главное бей данные с запасом (т.е. текст после команды) |
|||
42
ParaWiz
27.03.13
✎
13:27
|
+(41) скачай hiew, сделай пока ручками тестовый файлик, скопируй его на prn или lpt1 ... если принтер сетевой то попробуй заюзать ченить типа net use lpt1: \\server\sharedprinter
|
|||
43
Bugmenot
27.03.13
✎
13:29
|
(0) - а слабо напечатать 2D штрихкод на пишущей машинке Любава ?
|
|||
44
kupec
27.03.13
✎
13:30
|
(43) а слабо что-нибудь в тему сказать?
|
|||
45
Mikeware
27.03.13
✎
13:30
|
(43) а вы ноктюрн сыграть смогли бы на флейте водосточных труб?© :-)
|
|||
46
ParaWiz
27.03.13
✎
13:31
|
(43) Все зависит от суммы оплаты ... так то все возможно ... правда для чтения такого штрихкода ты не найдешь сканера штрихкода такого ... сильно большой потребуется сканер ... но это не моя проблема уже будет :)
|
|||
47
Mikeware
27.03.13
✎
13:31
|
(41) ты на г.р. посмотри....
|
|||
48
ParaWiz
27.03.13
✎
13:32
|
за оплату (46) * 5, я сделаю уже читабельный обычными сканерами штрихкод с помощью небольшой доработку любавы :)
|
|||
49
ParaWiz
27.03.13
✎
13:32
|
(47) черт :(
|
|||
50
trad
27.03.13
✎
13:36
|
1.
Текст=СоздатьОбъект("Текст"); Текст.ДобавитьСтроку(Симв(0)); в одинесовский текст не вставить символ с кодом 0 строку даже с таким символом не получить Без специализированных ВК либо без специально заготовленного файла не обойтись 2. Принтер должен быть 300+ а не 300. Ровно трехсотый не умеет печатать ШК, только с плюсом. |
|||
51
trad
27.03.13
✎
13:49
|
для печати ШК ean13 я отправлял такой файл http://rusfolder.com/35690283 в принтер командой copy имяФайла lpt1
затем файл непосредственно с символьным кодом и прочим текстом |
|||
52
kupec
27.03.13
✎
14:10
|
(51) а ШК в файле забит или ???
|
|||
53
Smallrat
27.03.13
✎
14:13
|
А может кто-нибудь подсказать - как можно отправить ESC последовательность на сетевой принтер ?
А то есть у меня такой: Штрих-600, разработчики меня с примером обломали ( |
|||
54
ParaWiz
27.03.13
✎
14:30
|
(52) ты читать умеешь ? тебе же написали, отправляешь файл на принтер, потом отправляешь строчку с циферками штрихкода и потом что еще тебе там нужно
(53) попробуй (42) ... |
|||
55
ParaWiz
27.03.13
✎
14:33
|
+(54) то бишь
запускай командную строку там подключай принтер на постоянку - net use lpt1: \\имя_сервера\имя_шары_принтера /persistent:yes и потом собссно copy файл_для_распечатки lpt1 например так ... |
|||
56
Smallrat
27.03.13
✎
15:14
|
(55) дык - нету сервера, есть просто принтер, который воткнут в сеть и имеет ip.
Утилита от принтера как-то умеет отправлять esc последовательности на ip-шник. |
|||
57
ParaWiz
27.03.13
✎
15:17
|
(56) тем проще, как я понимаю он является сетевым принтером, устанавливаешь его как локальный c tcp-ip портом и печатаешь спокойно в этот порт
|
|||
58
Serginio1
27.03.13
✎
15:29
|
Можешь кстати печатать и в двичные данные
http://www.miniprinter.com/new/english/customer/customer_2.php?sno=30&group=basic&code=B7&category=&fp_name=&pn=&sn=&sn2=&abmode=view&no=1140&bsort=&bfsort= |
|||
59
Serginio1
27.03.13
✎
15:38
|
Вообще посмотри есть ли к нему приложения, которые позволяют редактировать этикету. Обычно они сохраняют файл готовый к печати. Его можешь и модифицировать
|
|||
60
kupec
27.03.13
✎
15:53
|
как вернуть принтер на свое место, сбросить так сказать, после (51) при посылке данных пытается из них штрихкод нарисовать
|
|||
61
Smallrat
27.03.13
✎
16:16
|
(57) а что писать в команде copy ? Порт будет называться как в свойствах порта ?
типа copy файл_для_распечатки lpt1 SHTRIH-600 http://savepic.org/3047154.png |
|||
62
trad
27.03.13
✎
16:55
|
(60)
1. отправить ему таки после файла 12 цифр 2. отправить команду 27 64 (десятичные) 3. выкл/вкл |
|||
63
ParaWiz
28.03.13
✎
06:07
|
(62) под рукой ни одного принтера, по памяти не помню ... но попробуй вот так copy файл_для_распечатки SHTRIH-600
|
|||
64
ParaWiz
28.03.13
✎
06:10
|
+(63) но насколько я помню, у него есть еще нормальное имя устройства, у порта ... чет типа ip001 или lpt15 например ... еще как вариант, поставить его по умолчанию и copy файл prn
|
|||
65
Smallrat
28.03.13
✎
08:53
|
(63) Буду пробовать. Спасибо за помошь :)
|
|||
66
Bugmenot
28.03.13
✎
12:46
|
настоящие посоны печатают штрихкоды на матричных принтерах так:
copy con prn |
|||
67
ParaWiz
28.03.13
✎
13:13
|
(66) Держи пять :) вполне могу :) Alt+циферками код символа никто не отменял :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |