2013-03-05 6 views
4

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

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

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

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

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

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

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

ответ

0

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

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

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

реализация Python на WebSocket сервер был закодирован с Python 3.5, используя asyncio и websockets

Основные функциональные возможности в основном с/р от докторов здесь http://websockets.readthedocs.io/en/3.4/intro.html#both

Вам нужно 3 сопрограммам:

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

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

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

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

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

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

1

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

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

+0

Jason !!! ты мужчина! Я провел 2 часа по телефону с зеброй, и они не поняли, о чем я говорю. У меня нет проблем с решением, которое позволяет мне получать информацию от точки A до точки B без ПК. Я думаю, что буду покупать один из них как можно скорее. Знаете ли вы о какой-либо документации на веб-сайтах. из моих кратких запросов я вижу, что он еще не стандартизирован. Я хотел бы использовать PHP на моем сервере. Похоже, я бы запрограммировал приложение на LinkOS для связи с моим сервером через websocket. Любая дополнительная информация, которую вы могли бы предоставить, очевидно, чрезвычайно ценна. – Mark

+0

Я считаю, что веб-сайты считаются включенными под зонтиком HTML5. С принтерами Zebra все соединения с веб-разъемами надежно защищены через TLS, что облегчает любые проблемы безопасности на вашем конце. Учебники Websocket честно не нужны для вас, так как Zebra SDK абстрагирует все настройки websocket от вас. Вам просто нужно настроить принтер, чтобы указать на ваше веб-приложение (которое использует Zebra SDK). SDK написан на Java, и я не знаю, как интегрировать его с PHP. Я только использовал SDK самостоятельно с Apache Tomcat и веб-приложением Java. –

+0

Чтобы быть понятным - принтер Zebra предлагает множество технологий, в том числе возможность запрограммировать сам принтер для исходящей связи (спросите своего реселлера о ZBI). Я не знаю, может ли ZBI связываться через websockets. В случае, если ZBI не поддерживает связь с websocket, ваш принтер будет фактически «подчиненным» принтером, который только делает то, что ему говорят. Он ничего не сможет спросить у сервера; скорее, серверу придется принудительно передать информацию на принтер. С websockets это тривиально. Но без ZBI принтер не может быть запрограммирован на запрос данных. –

3

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

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

Мой опыт с раствором WebSocket Зебра: фона:

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

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

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

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

Это будет означать, что все клиенты более 100 клиентов без значительного времени не пользуются услугами принтера, но у вас нет NO OPTION, но для того, чтобы Zebra подписал ваш сертификат. Для меня это неприемлемый риск - (решение websocket НЕ должно быть связано с сертификатом, подписанным Zebra - после того, как вы устанавливаете принтер YOUR (или ваш клиент), вы затем настраиваете принтер, чтобы указать EXACT имя/адрес домена для него подключиться к).

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

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

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

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

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

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

+0

Я купил принтер привязки ZD-420 и в течение недели мне удалось настроить сервер веб-сервера PoC на Python, к которому подключается принтер, и один раз подключенный сервер отбрасывает задание печати в ZPL. Документация помогла, это было не все, на что я надеялся, но я верю, что, когда я уберу это и выпущу код для github, будет намного проще создавать решения с Zebras. –