|   |   | 
| 
 | Команда обрезки бумаги на чековом принтере | ☑ | ||
|---|---|---|---|---|
| 0
    
        кассир 04.03.25✎ 13:02 | 
        Есть принтер чеков MITSU RP-809. Необходимо из 1с подать команду на отрез чека. В интернете пишут что можно использовать команды ESC/POS. Приводят список команд.
 GS;V;0 ESC;i ESC;d;0 ESC;m Я попробовал эти команды но они не срабатывают. Подскажите правильно ли я их использую и если кто знает какая правильная команда на отрез и на открытие денежного ящика у принтера MITSU RP-809? Function Printer_Print(str) table = CreateObject("Таблица"); textString = str;//переменная в секции таблицы table.PutSection("data"); table.Print(0); endFunction //GS;V;0 Printer_Print(Chr(29) + Chr(86) + Chr(0)); //ESC;i Printer_Print(Chr(27) + Chr(105)); //ESC;d;0 Printer_Print(Chr(27) + Chr(100) + Chr(0)); //ESC;m Printer_Print(Chr(27) + Chr(109)); 1c 7/7 | |||
| 1
    
        Garykom гуру 04.03.25✎ 13:10 | ||||
| 2
    
        кассир 04.03.25✎ 14:00 | 
        С dll это понятно. Вопрос как пользоваться ESC/POS? Правильно ли я понимаю что можно отправить набор символов и нож должен сработать? Кто-нибудь это делал?     | |||
| 3
    
        Ёпрст гуру 04.03.25✎ 14:41 | 
        (0)
 Симв(27) + "!", не ? | |||
| 4
    
        Ёпрст гуру 04.03.25✎ 14:46 | 
        Символ(27) + Символ(105), это ежели с 1с     | |||
| 5
    
        Ёпрст гуру 04.03.25✎ 20:30 | 
        Ну или вот, готовые изделия
 https://open-budget.ru/public/297037/ | |||
| 6
    
        кассир 04.03.25✎ 14:48 | 
        //ESC;!
 Printer_Print(Chr(27) + Chr(33)); так тоже не работает... | |||
| 7
    
        кассир 04.03.25✎ 14:49 | 
        (4) не работает Символ(27) + Символ(105)     | |||
| 8
    
        Ёпрст гуру 04.03.25✎ 20:13 | 
        (7) через copy и текстовый файлик, работает с ком строки ?     | |||
| 9
    
        кассир 04.03.25✎ 14:55 | 
        (8) принтер подключен по Ethernet через copy и текстовый незнаю как проверить...     | |||
| 10
    
        lEvGl гуру 04.03.25✎ 15:04 | 
        (9) так а отправка других команд уже работает, вопрос только в команде? если нет, то по сети можно слать через winsock например, в прочем в сдк есть все, что нужно, но чуть муторнее, чем просто символы в хост отправить
 зы. хороший принтер, вернее его sdk | |||
| 11
    
        Garykom гуру 04.03.25✎ 15:10 | 
        (9) в сетевую шару тоже можно копировать     | |||
| 12
    
        lEvGl гуру 04.03.25✎ 15:13 | 
        вот описание как надо отправлять
 NET, IP Add (IPV4)[,Port] Specify the IP add and port of internet printer. If not specifying port, the default port is 9100. NET,192.168.0.36 NET,192.168.0.36,9100 соответственно сверьте ип и порт на принтере и через mswinsock.ocx попробуйте отправить. Но не факт, что будет работать, т к зависит от реализации взаимодействия, заложенной производителем. 99.5% будет работать по инструкции от производителя. (11) ну тоже вариант, но вероятность успеха еще меньше | |||
| 13
    
        кассир 04.03.25✎ 19:18 | 
        В общем с отправкой спецсимволов ничего не получилось. Буду пробовать через dll     | |||
| 14
    
        кассир 10.03.25✎ 15:17 | 
        Set-ExecutionPolicy RemoteSigned
 # IP-адрес и порт устройства $ip = "192.168.0.158" $port = 9100 # Последовательность байт (например, команда ESC/POS) $bytes = [byte[]]@(0x1D,0x56,0x01) # ESC @ (инициализация принтера) # Создание TCP-клиента $client = New-Object System.Net.Sockets.TcpClient($ip, $port) $stream = $client.GetStream() # Отправка данных $stream.Write($bytes, 0, $bytes.Length) # Закрытие соединения $stream.Close() $client.Close() вот этот код работает в Power shell. Как можно сделать это в 1с 7.7? | |||
| 15
    
        кассир 10.03.25✎ 15:20 | 
        вот эта рабочая последовательность но если ее отравить через печать на принтер не срабатывает 0x1D 0x56 0x01     | |||
| 16
    
        arsik гуру 10.03.25✎ 15:30 | 
        А почему печать через таблицу делаешь? Попробуй через текст. Может так отрезчик сработает.     | |||
| 17
    
        кассир 10.03.25✎ 15:40 | 
        у меня 1с 7.7. печать я нашел только у таблицы. Как на печать текста сделать из 1с 7.7?     | |||
| 18
    
        arsik гуру 10.03.25✎ 15:44 | 
        (17) Сорян. Действительно нет такого.
 Ну попробуй вариант из командной строки отправить текстовый файл с символами отрезки. Но тут нужно смотреть наверно кодировку файлов. Ну можно с разными попробовать. | |||
| 19
    
        MWWRuza гуру 10.03.25✎ 15:51 | 
        Я вот так, правда на Зебру, посылаю:
 ФС.КопироватьФайл(ВремФайл,СокрЛП(Принтер) + "\" + РабочаяДата() + ".txt",1); Если ФС.СуществуетФайл(ВремФайл) = 1 Тогда ФС.УдалитьФайл(ВремФайл); // Закомментировал для отладки КонецЕсли; Где "ВремФайл" - текстовик с командами, "Принтер" - сетевой путь к расшаренному принтеру, как он в системе виден. | |||
| 20
    
        кассир 10.03.25✎ 16:28 | 
        (19) Да работает этот вариант. Неожиданно)))     | |||
| 21
    
        кассир 10.03.25✎ 16:30 | 
        но получается нужно иметь расшареный принтер чеков и знать имя компа где он подключен.
 А как можно послать через winsock? | |||
| 22
    
        arsik гуру 10.03.25✎ 16:57 | 
        Вот что бы так не насиловать себя я советую покупать устройства с езернетом.     | |||
| 23
    
        uno-group 10.03.25✎ 16:58 | 
        В дровах принтера нет галочки обрезать после вывода задания на печать? Вообще без отправки чего либо у меня режет. но принтер другой     | |||
| 24
    
        кассир 10.03.25✎ 17:10 | 
        (22) Так устройство с ethernet
 (23) Галочка есть обрезать всегда. И если включить всегда резежет, НО нужно сделать чтобы отрезало по условию. | |||
| 25
    
        uno-group 10.03.25✎ 17:19 | 
        Она обычно в реестре храниться можно реест по условию дергать перед печатью     | |||
| 26
    
        MWWRuza гуру 10.03.25✎ 18:29 | 
        (24) Так устройство с ethernet
 Ну, так IP его известен? Ну, и замените "Принтер" на "\\192.168.бла.бла" По идее, должно сработать. | |||
| 27
    
        кассир 28.03.25✎ 14:24 | 
        Вот рабочий код:
 // ОТПРАВИТЬ ИМПУЛЬС НА ПРИНТЕР. ПРИНТЕР ДОЛЖЕН БЫТЬ РАСШАРЕН ПО СЕТИ Function Printer_SendImpulse(file,impulse) file = UserDir() + "MITSU\Data\" + file; text = CreateObject("Text"); text.CodePage(0); text.AddLine(impulse); text.Write(file); //global это обычный список значений FS.FileCopy(file,TrimAll("\\"+global.Get("computerName")+"\MITSU") + "\" + CurDate() + ".txt",1); endFunction // ОТКРЫТЬ ДЕНЕЖНЫЙ ЯЩИК Function Printer_OpenCashDrawer() if global.Get("AutoOpenCashDrawer") = 1 then return 0; endif; Printer_SendImpulse("DrawerPin2.txt",Chr(27)+Chr(112)+Chr(48)+Chr(57)+Chr(57)); Printer_SendImpulse("DrawerPin5.txt",Chr(27)+Chr(112)+Chr(49)+Chr(57)+Chr(57)); return 1; endFunction // ОТРЕЗАТЬ БУМАГУ Function Printer_CutPaper() Printer_SendImpulse("CutPaper.txt",Chr(29)+Chr(86)+Chr(49)); endFunction | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |