|   |   | 
| 
 | v7: Подключение термопринтера MITSU RP-809 к 1с 7.7 | ☑ | ||
|---|---|---|---|---|
| 0
    
        кассир 09.03.23✎ 15:13 | 
        Добрый день. Скажите кто-нибудь подключал принтер чеков MITSU RP-809  к 1с 7/7? 
 Есть драйвера и описание принтера https://vial.by/torgovoe-oborudovanie/chekovye-printery/chekovyj-printer-mitsu-rp-809 В описании нашел файл ESC_SDK.dll понимаю что через него нужно подключаться с принтеру. Но зарегистрировать эту библиотеку не получается не через regsvr32, не через regasme.exe. В 1с 7.7 я понимаю нужно ее подключить эту библиотеку и создать объект через который можно отравлять Пишу код: // connect to print file = IBDir()+"ESC_SDK.dll"; message(file); if FS.ExistFile(file) = 0 then message("don't exit file " + file); else message("file exist " + file); endif; if ЗагрузитьВнешнююКомпоненту(file) = 0 then message("don't load dll"); return 0; else message("load dll"); endif; Результат: file exist C:\Base\!Last\ESC_SDK.dll Ошибка при создании объекта из компоненты C:\Base\!Last\ESC_SDK.dll (отсутствует CLSID) don't load dll Подскажите идеи как к ниму можно полючиться? Есть ли другие способы. Там универсальные dll для печати информации на термопринтер? | |||
| 1
    
        Builder 09.03.23✎ 15:57 | 
        (0) Подключить как обычный принтер и печатать не вариант?     | |||
| 2
    
        кассир 09.03.23✎ 16:13 | 
        Не понятно как печатать Qr коды если он подключен как обычный принтер. И настройки его производить...     | |||
| 3
    
        кассир 09.03.23✎ 16:17 | 
        запустил пример на C# который там приложен в SDK он работает, но как в 1с 7.7 это перенести. В C# написано
 я понимаю что они сразу директивой [DllImport(DLLDIR, CharSet = charSet)] подключают и грузят d:\\ESC_SDK.dll как тоже самое сделать в 1с 7.7? public class DllAPI { public const string DLLDIR = "d:\\ESC_SDK.dll"; public const CharSet charSet = CharSet.Unicode; [DllImport(DLLDIR, CharSet = charSet)] public static extern int FormatError(int error_no, int langid, byte[] buf, int pos, int bufSize); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrinterCreator(ref IntPtr printer, string model); [DllImport(DLLDIR)] public static extern int PrinterDestroy(IntPtr printer); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PortOpen(IntPtr printer, string portSetting); [DllImport(DLLDIR)] public static extern int PortClose(IntPtr printer); [DllImport(DLLDIR)] public static extern int PrinterInitialize(IntPtr printer); [DllImport(DLLDIR)] public static extern int FeedLine(IntPtr printer, int nFeed); [DllImport(DLLDIR)] public static extern int SetAlign(IntPtr printer, int align); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrintText(IntPtr printer, byte[] text, int alignment, int attribute, int textSize); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrintText(IntPtr printer, string text, int alignment, int attribute, int textSize); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrintBarCode(IntPtr printer, int bcType, string bcData, int width, int height, int alignment, int hriPosition); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrintSymbol(IntPtr printer, int type, string bcData, int errLevel, int width, int height, int alignment); [DllImport(DLLDIR, CharSet = charSet)] public static extern int DefineDownloadedImage(IntPtr printer, string imagePath, byte kc1, byte kc2); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrintDownloadedImage(IntPtr printer, byte kc1, byte kc2); [DllImport(DLLDIR, CharSet = charSet)] public static extern int DefineBufferedImage(IntPtr printer, string imagePath); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrintBufferedImage(IntPtr printer); [DllImport(DLLDIR, CharSet = charSet)] public static extern int DefineNVImage(IntPtr printer, string imagePath, byte kc1, byte kc2); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrintNVImage(IntPtr printer, byte kc1, byte kc2); [DllImport(DLLDIR, CharSet = charSet)] public static extern int PrintImage(IntPtr printer, string filePath, int scaleMode); [DllImport(DLLDIR)] public static extern int CutPaper(IntPtr printer, int cutMode, int distance); [DllImport(DLLDIR)] public static extern int OpenCashDrawer(IntPtr printer, int pinMode, int onTime, int offTime); [DllImport(DLLDIR)] public static extern int SelectStandardMode(IntPtr printer); [DllImport(DLLDIR)] public static extern int SetTextLineSpace(IntPtr printer, int lineSpace); [DllImport(DLLDIR)] public static extern int SetTextFont(IntPtr printer, int font); [DllImport(DLLDIR)] public static extern int SetAbsolutePrintPosition(IntPtr printer, int position); [DllImport(DLLDIR)] public static extern int SelectPageMode(IntPtr printer); [DllImport(DLLDIR)] public static extern int SetPrintAreaInPageMode(IntPtr printer, int horizontal , int vertical, int width, int height); [DllImport(DLLDIR)] public static extern int CancelPrintDataInPageMode(IntPtr printer); [DllImport(DLLDIR)] public static extern int SelectPrintDirectionInPageMode(IntPtr printer, int direction); [DllImport(DLLDIR)] public static extern int SetAbsoluteVerticalPrintPositionInPageMode(IntPtr printer, int position); [DllImport(DLLDIR)] public static extern int PrintAndReturnStandardMode(IntPtr printer); [DllImport(DLLDIR)] public static extern int PrintDataInPageMode(IntPtr printer); [DllImport(DLLDIR)] public static extern int GetPrinterState(IntPtr printer, ref uint printerState); [DllImport(DLLDIR)] public static extern int DirectIO(IntPtr printer, byte[] writeData, int writenum, byte[] readData, int readNum, ref int readedNum); [DllImport(DLLDIR)] public static extern int WriteData(IntPtr printer, string writeData, int writeNum); [DllImport(DLLDIR)] public static extern int GetFirmwareVersion(IntPtr printer, int[] version, int versionLen); [DllImport(DLLDIR)] public static extern int PositionNextLabel(IntPtr printer); [DllImport(DLLDIR)] public static extern int SetCodePage(IntPtr printer, int codePage, int Type); public string FormatError(int error_no) { int langid = 0; byte[] temp = new byte[512]; FormatError(error_no, langid, temp, 0, 512); return System.Text.Encoding.Default.GetString(temp,0,512); } } } | |||
| 4
    
        uno-group 09.03.23✎ 16:21 | 
        (2) както так https://skill-blog.ru/no-rubrick/qr-kod-na-v-1s-7-7/     | |||
| 5
    
        кассир 09.03.23✎ 16:28 | 
        а программно точно никак к нему нельзя подключиться?     | |||
| 6
    
        uno-group 09.03.23✎ 16:34 | 
        Можно наверное, но оно тебе надо? Завтра вин 10 поменяют на вин 11 и оно слетит. Было у меня программное подключение на вин 7 с переездом на вин 10 загнулось. ладно тогда принтеры были медленными и это хоть какой то выигрыш давало, а сейчас зачем.     | |||
| 7
    
        uno-group 09.03.23✎ 16:35 | 
        опять же принтер накрылся купили новый и опять колдуй, нафик это никому не надо.     | |||
| 8
    
        Злопчинский 09.03.23✎ 16:42 | 
        Поставить как виндявый принтер (скорее всекго так можно) и печатать как на виндявый принтер.
 Опять же это принтер чеков - то есть просто печатная машинка, без фискализации? или это все-таки фискальный аппарат? . а дальше - берешь типовую 77 ТИС берешь обработку обслуживания для 77 какого-нить фискальника Штрих/Атол - и по образу и подобию айстрячишь обработку обслуживания для своего дивайса. Конечно, надо иметь описание методов, доступных через длл/драйвер - иначе тяжело будет разбираться. | |||
| 9
    
        кассир 09.03.23✎ 16:47 | 
        Он печатает но ширина строки 10 символов. Я вставил бумагу шириной 80 мм. Но печатается 10мм. Это просто печатная машинка. Только я печатаю на ней информацию. Фискальной памяти там нет.     | |||
| 10
    
        uno-group 09.03.23✎ 16:50 | 
        в параметрах принтера правильный размер бумаги задал     | |||
| 11
    
        кассир 09.03.23✎ 17:22 | 
        да если задать бумагу из 1с печатает.     | |||
| 12
    
        Злопчинский 09.03.23✎ 17:34 | 
        (11) печатает ЧТО? 
 печатает всехорошо или печтаета "10мм" ? | |||
| 13
    
        кассир 10.03.23✎ 08:30 | 
        Получается по ширине я выставил 80мм, но не понятно какую длину нужно указать? И как получается включить отрез бумаги?     | |||
| 14
    
        Builder 10.03.23✎ 09:20 | 
        (13) Это все в драйвере настраивается, ищи форматы бумаги, разделители, отрезку.     | |||
| 15
    
        uno-group 10.03.23✎ 09:20 | 
        В настройках драйвера принтера обрезка включается. если этикетка пишешь ее длину, если бесконечный рулон так и выбираешь. он после последней строки выводит какой то промежуток и останавливается или обрезаешь.     | |||
| 16
    
        ЯнСмит 10.03.23✎ 10:35 | 
        я бы посмотрел в сторону универсального драйвера для принтеров этикеток от Seagull
 https://www.seagullscientific.com/support/downloads/drivers/ выручал не один раз с разной экзотикой | |||
| 17
    
        кассир 10.03.23✎ 11:47 | 
        а в принтерах может быть такое что нужно передавать "спец символ" в тексте чтобы "отрезчик" срабатывал?     | |||
| 18
    
        кассир 10.03.23✎ 12:39 | 
        из 1с печатает хорошо
 вот код простой Function PrintText(TextString) table = CreateObject("Table"); table.SourceTable("cheque"); table.PutSection("data"); table.ReadOnly(0); table.Options(0,0,0,0); table.PageSetup(1,100,,0,0,0,0,0,0,1,1,"MITSU"); table.Print(0); EndFunction в табличной части просто одна секция со строкой. Отрезчик не пойму как работает. Если делаю тест он работает, если "self test" через утилиту тоже работает. Галочка AutoCutter=Enable, но при отправке текста из 1с, текст печатается, но отрезчик не работает. | |||
| 19
    
        кассир 10.03.23✎ 13:49 | 
        https://qna.habr.com/q/888679
 вот здесь получается есть описание этой же проблемы. Только не понятно что это за последовательность символов. Как ее передать на принтер? GS;V;0 ESC;i ESC;d;0 ESC;m | |||
| 20
    
        кассир 10.03.23✎ 14:25 | 
        все отрезчик заработал. Проблема была в выборе драйвера. Нужен HPRT TP809 в нем есть настройка где включается отрезчик.     | |||
| 21
    
        Arbuz 10.03.23✎ 14:26 | 
        (5) Если действительно хочется работать с его SDK дллкой напрямую, то надо копать в сторону DynamicWrapperX (dynwrapx.dll), т.к. принтерная  библиотека это просто набор экспортируемых функций. В принципе ничего сложного, но возможно дополнительно придётся обернуть в vbs, хотя я смотрю там есть ANSI'шная версия библиотеки.     | |||
| 22
    
        кассир 10.03.23✎ 14:28 | 
        я и подумал, что нужно наверное свою dll написать для 1с, а внутрь вложить их ESC_SDK.dll на основании примера на C#     | |||
| 23
    
        uno-group 10.03.23✎ 14:54 | 
        (19) ту нужно смотреть как он у тебя подключен если по ком то просто шлешь их ком порт той же vk_rs232.dll. Если по юсб то отправляешь файл с ними на юсб. если по сети то телнетом в сеть шлешь. куча лишнего никому не нужного гимороя. А там окажется, что винда порт заняла монопольно и или вообще не дает в него ничего напрямую отправлять или нужно юзеру права до админа поднимать. со своей длл на новых ОС та же самая фигня может быть что без админских прав у юзера винда не даст ничего переслать на принтер     | |||
| 24
    
        Злопчинский 10.03.23✎ 15:12 | 
        (22) тут найди Сергиус - он теюе все что надо на раз обернет для вызова в 1С..     | |||
| 25
    
        uno-group 10.03.23✎ 15:18 | 
        (24) я так понял с установкой правильного драйвера вопросы ушли. Кроме ускорения вывода работа напрямую ему мало что даст. Если критично, что метр чека печатается 5 секунд, а не 3 то можно заморочится иначе зачем?     | |||
| 26
    
        кассир 10.03.23✎ 15:30 | 
        да с правильным драйвером печатает и отрезат. Счас еще вывод  QR кода проверю.     | |||
| 27
    
        кассир 10.03.23✎ 16:40 | 
        А есть пример чтобы QR не на форму выводился, а сразу на печать?     | |||
| 28
    
        кассир 10.03.23✎ 17:37 | 
        Все QR тоже печатается. Оставлю тогда печать через windows принтер.     | |||
| 29
    
        Злопчинский 10.03.23✎ 22:03 | 
        (28) Победа разума над бездушной техникой     | |||
| 30
    
        Сергиус 11.03.23✎ 03:03 | 
        (24)Путаете меня с Serginio1 :)     | |||
| 31
    
        Злопчинский 11.03.23✎ 09:03 | 
        (30) да, тупняк     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |