печать с веб-сервера на термопринтер без посредников

Я уже почти месяц занимаюсь этим вопросом. Кажется, меня толкают во все стороны. Надеюсь, кто-нибудь сможет мне помочь с ответом.

чтобы дать краткую модель того, что я ищу:

У меня есть веб-сервер, на котором есть информация, которая мне нужна для доступа к термопринтеру через Интернет для печати. Я НЕ хочу, чтобы компьютер был посредником. У меня нет проблем с программированием, необходимым для этого. Моя проблема возникла из-за того, что я нашел устройства, которые я смогу программировать. Первая проблема, с которой я столкнулся, заключалась в том, чтобы найти термопринтер чеков со встроенным веб-сервером, который я мог бы запрограммировать для опроса моего сервера для получения информации для печати. В настоящее время принтеров для этой цели нет. Я разговаривал с Zebra, Epson, Brother и т. Д. У большинства из них есть решение для печати, если оба устройства находятся в одной сети, например, принтер мобильного телефона и принтер в той же сети, к которой подключен мобильный телефон, и у большинства из них есть SDK для сделай это. Мне нужен принтер, чтобы опрашивать мой веб-сервер. Итак, я пошел искать альтернативу. Возможно, я мог бы подключить к принтеру беспроводной мини-веб-сервер USB, чтобы достичь своей конечной цели. Я думал, что это будет простая задача, но это не так. Мой вопрос к пользователям на stackoverflow.com: кто-нибудь сталкивался с подобной проблемой и знает решение? Я снова разговаривал с разными производителями, и никто из них не мог помочь. Думаю, большинство из них даже не понимают, о чем я говорю. Я надеюсь, что те, кто здесь программирует, понимают мою проблему.

Ниже приведено домашнее обходное решение того, что я пытаюсь сделать.

http://proto-pic.co.uk/internet-connected-thermal-printer-kit/

Опять же, это решение требует, чтобы я построил его с нуля. Облако Berg - еще один вариант, но они не позволяют мне управлять моим веб-сервером, и все проходит через них. Не стесняйтесь задавать вопросы, так как я не жду быстрого ответа на эту проблему. Надеюсь, есть программисты, столкнувшиеся с подобной проблемой.

Также, чтобы сослаться на тег, который я выбрал для этого вопроса, я подумал, может быть, я мог бы подключить устройство (настройка микроконтроллера веб-сервера) к термопринтеру, который, возможно, имеет JVM, на котором запущен веб-сервер, с которым я мог бы затем связываться через USB с принтером. Я знаю, что Java намного хуже, чем C для микроконтроллера, но это то, что я знаю. хотелось бы услышать любое альтернативное решение.


person Mark    schedule 05.03.2013    source источник


Ответы (4)


Я успешно создал мини-сервер websocket для связи с ZD420 - принтерами Zebra на базе LinkOS.

Для настройки принтера я написал небольшую утилиту python (проверено на Linux) https://github.com/elops/zebra-wifi-tool

Этот инструмент настроит принтер для подключения к сети Wi-Fi и через эту сеть Wi-Fi подключится к местоположению веб-ссылки. Расположение веб-ссылки - это имя Zebra для URL-адреса вашего веб-сервера. Вы можете легко настроить конфигурацию, отправлять задания на печать и многое другое через веб-сокет.

Реализация сервера websocket на Python была написана на Python 3.5 с использованием asyncio и websockets

Основная функциональность - это в основном c / p из документации здесь http://websockets.readthedocs.io/en/3.4/intro.html#both

Вам нужно 3 совместных подпрограммы:

  • 1x обработчик подключения
  • 1x производитель
  • 1x потребитель

Обработчик подключения: эта сопрограмма отвечает за прослушивание того, что сначала происходит в вашем веб-сокете, будь то получение или отправка данных. Что бы ни случилось раньше, другое отменяется и зацикливается.

Производитель: Эта совместная процедура используется для передачи данных на устройство Интернета вещей через активный веб-сокет.

Потребитель: эта подпрограмма обрабатывается данными, которые IoT-устройство отправляет через веб-сокет на сервер.

Рукопожатие Websocket выглядит так start_server = websockets.serve(handler, 'localhost', 6000, subprotocols=['v1.weblink.zebra.com'], extra_headers={'Content-Length': '0'})

Все работает как шарм, очень надежное, легко настраиваемое и многофункциональное решение для различных сценариев, когда вам нужно печатать из веб-приложения на принтеры, которые где-то подключены к Интернету. Я подключил сканер штрих-кода к принтеру ZD420. Отсканированные данные можно легко отправить на сервер websocket через тот же принтер websocket, который используется для печати, так что вы можете создавать мощные решения для сред POS в Интернете.

person Hrvoje Špoljar    schedule 25.09.2017

Я настоятельно рекомендую вам пересмотреть решение Zebra websocket на этом этапе.

Лучшим решением по-прежнему может быть решение для мини-веб-сервера.

Мой опыт работы с решением для веб-сайтов Zebra: Предпосылки:

Сначала я попытался создать решение node.js (в нескольких местах я читал, что любой сервер выполним). Но после нескольких неудачных попыток подключения даже после получения сертификатов, подписанных Zebra, а также после успешного завершения процесса установления связи между принтером / сервером, он по-прежнему не работал с загадочной ошибкой, которая при проверке связана с попыткой принтера проверить, что конкретный Tomcat версия / сервер уже используется !!! ???

Я получил ответ от разработчика Zebra, который разрабатывает решение .Net, но также не может заставить его работать и ожидает дополнительной информации от «инженеров» Zebra, прежде чем они смогут завершить решение. Они сказали, что отправят информацию, когда она будет у них, и надеялись получить ее в течение недели (больше недели - пока не повезло).

Итак - я решил собрать сервер Tomcat - единственный пример, который работает Zebra ... Я запустил пример сервлета, но начал получать новые проблемы с сертификатами (поскольку я сменил серверы / домены и т. Д.). Это заставило меня задуматься обо всем неуклюжий процесс - и признал нарушение 1 сделки - очень ограничительный процесс аутентификации и подписи ssl слишком рискован.

Например. Допустим, у вас более 100 клиентов, полагающихся на это решение. Если у вас ВСЕГДА есть проблемы с сертификатом (например, изменение имени домена, изменение настройки сервера или недействительность / истечение срока действия сертификата) - то ВСЕ 100+ клиентов остаются без своего принтера. Но вы не можете просто исправить это самостоятельно - для исправления / создания нового сертификата и т. Д. Процесс повторной подписи медленный и зависит от внешних ресурсов! (это ручной процесс Zebra, кстати, вы отправляете по электронной почте, а затем вам приходится ждать значительное время, прежде чем сотрудник Zebra ответит подписанным сертификатом).

Это будет означать, что все 100+ клиентов не будут пользоваться услугами принтера в течение значительного времени, но у вас НЕТ ВАРИАНТА, кроме как заставить Zebra подписать ваш сертификат. Для меня это неприемлемый риск - (решение websocket НЕ должно зависеть от сертификата, подписанного Zebra - после всего, что вы устанавливаете ВАШ (или ВАШИ клиенты) принтер, вы затем настраиваете принтер, чтобы указать ТОЧНОЕ доменное имя / адрес для него подключиться к).

С вашим мини-сервером - если у клиента есть проблема - это повлияет только на этого единственного клиента, и вы НЕ полагаетесь на внешнюю компанию, чтобы подписать сертификаты для решения проблемы.

Вот выявленные проблемы и связанные с ними риски.

ПРОБЛЕМА 1) Очень плохо реализовано - я не могу (и они также не могут) заставить его подключиться к стандартному серверу, кроме ОЧЕНЬ специфической настройки Tomcat !!! УРОВЕНЬ РИСКА: НИЗКИЙ - т. Е. Это начальные затраты и временное бремя - но после работы постоянный риск возникновения этой проблемы, вызывающей дальнейшие проблемы, минимален. РИСКИ: а) Ограничивает разработку очень специфическими серверами и технологиями. б) Увеличение времени и затрат на первоначальную разработку / тестирование.

ПРОБЛЕМА 2) Плохо документировано - я обнаружил (и Zebra проверила) несколько ошибок в документации - документация также разбросана с важной информацией, брошенной в трудно найти файл readme.txt отдельно от остальной документации. УРОВЕНЬ РИСКА: НИЗКИЙ - то есть это начальные затраты и временное бремя - но после работы постоянный риск возникновения этой проблемы, вызывающей дальнейшие проблемы, минимален. РИСКИ: а) Замедляет начальное развитие. б) Увеличение времени и затрат на первоначальную настройку / разработку.

ПРОБЛЕМА 3) Безопасность принтера / проверка подлинности ssl плохо спланированы и реализованы. Он включает в себя несколько шагов - чрезвычайно ограничен и включает в себя медленный процесс подписи зебры, который создает постоянный риск. УРОВЕНЬ РИСКА: ВЫСОКИЙ - т.е. по этой причине мы не можем работать с этим решением. РИСКИ: а) Ограничивает разработку очень специфическими серверами и технологиями. б) Замедляет начальное развитие. c) Увеличение времени и затрат на первоначальную настройку / разработку. г) Создает постоянный ВЫСОКИЙ УРОВЕНЬ риска для проекта, а именно: ---> Идея состоит в том, что компания будет полагаться на это решение для подключения принтера - поэтому любое возможное время простоя приведет к СЕРЬЕЗНОМУ СЛУЧАЮ БИЗНЕСА. ---> ЛЮБОЙ из следующих сценариев будет означать, что ВСЕ клиенты, полагающиеся на это решение websocket, будут без услуг принтера в течение нескольких дней, пока будут организованы новые подписанные Zebra сертификаты: ---> 1) Срок действия сертификата истекает, 2) Сертификат недействителен, 3 ) Сервер перемещен, 4) Детали домена изменены, 5) Настройка сервера Tomcat изменена (из-за способа, которым принтер проверяет определенные настройки Tomcat / сервера) ---> Кроме того, вышеупомянутые 5 сценариев известны только на основе моего тестирования, поэтому далеко - могут быть другие возможные ограничения, которые могут означать сбои сертификатов, с которыми я еще не сталкивался.

Резюме: Проблема 3 IMO представляет собой неприемлемый риск, и должны произойти следующие 2 вещи, прежде чем я повторно рассмотрю веб-узлы Zebra. 1) Им нужна надлежащая документация о том, как веб-сокеты подключаются к серверу, поскольку он скрыт, и даже сотрудники Zebra в настоящее время находятся в неведении. 2) Им необходимо снять некоторые ограничения аутентификации, чтобы вы могли решить любую проблему без трудоемкого взаимодействия с Zebra.

person Aaron    schedule 11.06.2015
comment
Я купил принтер Linkos ZD-420, и в течение недели мне удалось настроить сервер PoC websocket на Python, к которому принтер подключается, и после подключения сервер отодвигает задание печати в ZPL. Документация помогла, это было не все, на что я надеялся, но я считаю, что как только я устраню это и опубликую код на github, создавать решения с помощью Zebras будет намного проще. - person Hrvoje Špoljar; 31.05.2016

Zebra предлагает принтеры, которые могут обмениваться данными через веб-сокеты. Если ваш веб-сервер общедоступен (то есть доступен в Интернете), вы можете открыть соединение через веб-сокет между принтером и сервером и просто отправлять данные, когда появляется новая информация для обслуживания. Хотя это звучит так, как будто вам нужно, чтобы принтер начал разговор, возможно, наличие постоянно открытого веб-соединения поможет вам удовлетворить ваши потребности. Это устраняет необходимость в каких-либо промежуточных компьютерах, и вместо этого принтеры напрямую общаются с сервером.

Принтеры Zebra Websocket: http://www.zebra.com/us/en/products-services/software/link-os/cloud-connect.html.

Zebra (Java) SDK: http://www.zebra.com/us/en/products-services/software/link-os/link-os-sdk.html

Если вам нужен термопринтер чеков, который поддерживает это, модели iMZ должно быть достаточно.

person jason.zissman    schedule 06.03.2013
comment
Джейсон !!! ты мужчина! Я провел 2 часа по телефону с зеброй, они понятия не имели, о чем я говорю. У меня нет проблем с каким-либо решением, которое позволяет мне получать информацию из точки А в точку Б без компьютера. Я думаю, что куплю один из них как можно скорее. Вы знаете какую-либо документацию по веб-сокетам. из моих кратких поисков я вижу, что он еще не стандартизирован. Я хотел бы использовать PHP на своем сервере. Похоже, я бы запрограммировал приложение на LinkOS для связи с моим сервером через веб-сокет. Любая дополнительная информация, которую вы могли бы предоставить, безусловно, чрезвычайно ценна. - person Mark; 07.03.2013
comment
Я считаю, что веб-сокеты входят в состав HTML5. С принтерами Zebra все подключения к веб-сокетам защищены с помощью TLS, поэтому мы надеемся, что это снимет любые проблемы с безопасностью с вашей стороны. Честно говоря, учебные пособия по веб-сокету вам не нужны, поскольку Zebra SDK абстрагирует от вас всю настройку веб-сокетов. Вам просто нужно настроить принтер так, чтобы он указывал на ваше веб-приложение (которое использует Zebra SDK). SDK написан на Java, и я не знаю, как его интегрировать с PHP. Я сам использовал SDK только с Apache Tomcat и веб-приложением Java. - person jason.zissman; 07.03.2013
comment
Чтобы было ясно - принтер Zebra предлагает множество технологий, в том числе возможность программировать сам принтер для исходящей связи (спросите своего торгового посредника о ZBI). Я не знаю, может ли ZBI общаться через веб-сокеты. В случае, если ZBI не поддерживает связь через веб-сокеты, ваш принтер будет фактически «подчиненным» принтером, который будет выполнять только то, что ему говорят. Он не сможет ни о чем просить сервер; скорее, серверу придется принудительно передавать информацию на принтер. С веб-сокетами это тривиально. Но без ZBI принтер не может быть «запрограммирован» на запрос данных. - person jason.zissman; 07.03.2013
comment
Я разговаривал с торговыми посредниками, которые не понимают, о чем я говорю. Я спросил о подключении к облаку Link-OS, и никто не может дать мне никакой информации об этом. Я скачал SDK и вижу методы. Понятия не имею, как это реализовать. Похоже, он вышел в январе этого года. Зебра сказала, что мне перезвонит человек с менее техническими проблемами, но я все еще жду. Никаких инструкций по настройке нет. У вас есть информация? Я планирую заказать принтер в эти выходные, чтобы поэкспериментировать с ним, но понятия не имею, с чего начать. Я могу быть очень изобретательным, если начну. - person Mark; 10.03.2013
comment
Поскольку это отклоняется от исходного вопроса и требует обширного ответа (по крайней мере, не подходит для комментариев Stackoverflow), я рекомендую вам отправить электронное письмо [email protected] с просьбой о некоторых рекомендациях. Они будут рады помочь. - person jason.zissman; 10.03.2013
comment
@Mark, ищем похожее решение. Не могли бы вы дать какой-либо совет о том, как настроить принтер Link-OS Zebra для подключения к серверу PHP через веб-сокет? - person Raphael Rafatpanah; 04.08.2015
comment
@Mark, вам удалось заставить эту настройку работать? Планирую купить 2 принтера, но меня беспокоит надежность работы веб-ссылок. Не могли бы вы прокомментировать свой опыт настройки веб-ссылок. Спасибо! - person Hrvoje Špoljar; 19.05.2016
comment
Мне не удалось заставить это работать. Однако в основном это произошло из-за того, что я начал новую работу, которая очень сильно меня занимала. Я также только что закончил колледж в то время, поэтому я не могу сказать, что это было что-то кроме проблемы с собой. С тех пор я ушел, потому что прошло слишком много времени, и я нашел новые интересные проекты. - person Mark; 07.08.2016

Попробуйте использовать принтер SATO (см. SATO America или SATO Europe), который поддерживает печать с поддержкой приложений (AEP). Здесь вы можете настроить веб-сокет с облаком или сервером. Принтер также поддерживает запросы https и опрос ftp. Например, вы можете запускать задания на печать с подключенного сканера или клавиатуры, подключенной к принтеру через его хост-порты USB. Отлично работает! И нет необходимости во втором облаке, как в ранее описанных случаях.

person Grask    schedule 08.12.2019