2013-03-05 5 views
4

J'ai regardé dans cette question pendant presque un mois maintenant. Il semble que je suis poussé dans toutes les directions. J'espère que quelqu'un peut m'aider avec une réponse.impression à partir d'un serveur Web à une imprimante thermique sans intermédiaire

pour donner un bref modèle de ce que je cherche:

J'ai un serveur Web qui contient des informations que je dois arriver à une imprimante thermique à travers l'Internet à imprimer. Je ne veux pas qu'un ordinateur soit l'intermédiaire. Je n'ai aucun problème à faire la programmation nécessaire pour y arriver. Mon problème est venu de trouver les appareils que je pourrais programmer. Le premier problème que j'ai rencontré a été de trouver une imprimante de reçus thermiques dotée d'un serveur Web intégré que je pourrais programmer pour interroger mon serveur afin d'obtenir des informations à imprimer. Il n'y a pas d'imprimantes actuellement disponibles à cette fin. J'ai parlé à Zebra, Epson, Brother, etc. La plupart ont une solution pour l'impression si les deux appareils sont sur le même réseau, comme une imprimante de téléphone portable vers une imprimante sur le même réseau que le téléphone portable et la plupart ont des SDK. fais le. J'ai besoin de l'imprimante pour pouvoir interroger mon serveur web. Alors je suis allé chercher une alternative. Peut-être que je pourrais joindre un mini serveur web USB sans fil à l'imprimante pour atteindre mon objectif final. Je pensais que ce serait une tâche simple mais ce n'est pas le cas. Ma question pour les utilisateurs ici à stackoverflow.com est-ce que quelqu'un est venu à travers le même problème et connaît une solution? encore une fois j'ai parlé aux différents fabricants et aucun d'eux ne peut aider. Je pense que la plupart d'entre eux ne sont même pas capables de comprendre de quoi je parle. J'espère que ceux qui programment ici comprennent mon problème.

Voici une solution de rond-point Homegrown pour ce que je suis en train de faire.

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

à nouveau cette solution me demande ci-dessus pour le construire à partir du sol. Le cloud berg est une autre option mais ils ne me permettent pas de contrôler mon serveur web et tout passe par eux. N'hésitez pas à poser des questions car je ne m'attends pas à une réponse rapide à ce problème. J'espère qu'il y a des programmeurs qui ont rencontré un problème similaire. Pour faire référence à l'étiquette que j'ai choisie pour cette question, je pensais peut-être que je pourrais attacher un périphérique (configuration de micro-contrôleur de serveur Web) à l'imprimante thermique qui a peut-être une JVM fonctionnant sur un serveur Web USB à l'imprimante. Je sais que Java est bien pire que C pour un microcontrôleur mais c'est ce que je sais. aimerait entendre toute solution alternative.

Répondre

0

J'ai réussi à créer un mini serveur websocket pour parler avec des imprimantes Zebra ZD420 - LinkOS.

Pour configurer l'imprimante que j'ai écrit petit utilitaire python (testé sur linux) https://github.com/elops/zebra-wifi-tool

Cet outil de configuration imprimante pour se connecter au réseau wifi et via ce réseau wifi se connecter à l'emplacement WebLink. L'emplacement du lien Web est le nom Zebra de l'URL de votre serveur Websocket. Vous pouvez facilement ajuster la configuration, envoyer des travaux d'impression et bien plus encore via WebSocket.

mise en œuvre Python du serveur websocket a été codé avec Python 3.5 en utilisant asyncio et websockets

fonctionnalité de base est essentiellement c/p de docs ici http://websockets.readthedocs.io/en/3.4/intro.html#both

Vous avez besoin de 3 co-routines:

  • 1x gestionnaire de connexion
  • 1x producteur
  • 1x consommateur

gestionnaire de connexion: cette co-routine est chargé d'écouter ce qui se passe d'abord sur votre websocket, est-il des données ou recevoir des données envoyer. Celui qui arrive le premier est annulé et il boucle.

Producteur: Cette sous-routine est utilisée pour transmettre des données à un périphérique IoT via une socket Web active.

Consommateur: Cette co-routine est alimentée par le dispositif IoT de données envoyé via la socket Web au serveur.

poignée de main Websocket ressemble à ceci start_server = websockets.serve(handler, 'localhost', 6000, subprotocols=['v1.weblink.zebra.com'], extra_headers={'Content-Length': '0'})

tout fonctionne comme un charme, très fiable et hautement configurable et solution riche en fonctionnalités pour différents scénarios où vous avez besoin d'imprimer de l'application Web pour les imprimantes qui sont quelque part connectés à Internet . J'ai jumelé le scanner de code barres avec l'imprimante ZD420. Les données numérisées peuvent être facilement envoyées au serveur websocket via les mêmes imprimantes websocket pour l'impression afin que vous puissiez créer des solutions puissantes pour les environnements POS sur le web.

1

Zebra propose des imprimantes pouvant communiquer sur des Websockets. Si votre serveur Web est accessible au public (c'est-à-dire disponible sur Internet), vous pouvez ouvrir une connexion de socket Web entre l'imprimante et le serveur et simplement envoyer les données chaque fois qu'il y a de nouvelles informations à diffuser. Bien qu'il semble que vous ayez besoin de l'imprimante pour initier la conversation, peut-être avoir une connexion websocket constamment ouverte vous aidera à accomplir vos besoins. Cela supprime le besoin d'ordinateurs intermédiaires et les imprimantes parlent directement au serveur.

imprimantes 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

Si vous avez besoin d'une imprimante thermique qui prend en charge la réception cela, le modèle IMZ devrait être suffisant.

+0

Jason !!! tu es l'homme! J'ai passé 2 heures au téléphone avec zèbre, ils n'avaient aucune idée de ce dont je parlais. Je n'ai aucun problème avec une solution qui me permet d'obtenir des informations du point A au point B sans PC. Je pense que je vais acheter un de ces ASAP. Connaissez-vous de la documentation sur les Websockets. de mes brèves recherches je vois qu'il n'a pas encore été normalisé. Je voudrais utiliser PHP sur mon serveur. Il semble que je programmerais l'application sur LinkOS pour communiquer avec mon serveur via la socket Web. Toute information supplémentaire que vous pourriez fournir est évidemment extrêmement précieuse. – Mark

+0

Je crois que les websockets sont considérées comme incluses sous le parapluie HTML5. Avec les imprimantes Zebra, toutes les connexions websocket sont sécurisées via TLS, donc nous espérons que cela soulagera les problèmes de sécurité de votre côté. Les didacticiels Websocket ne sont pas vraiment nécessaires pour vous puisque le SDK Zebra résume toute l'installation Websocket loin de vous. Vous devez simplement configurer votre imprimante pour qu'elle pointe vers votre application Web (qui utilise le SDK Zebra). Le SDK est écrit en Java, et je ne saurais pas comment l'intégrer avec PHP. Je n'ai utilisé le SDK qu'avec Apache Tomcat et une application Web Java. –

+0

Pour être clair - l'imprimante Zebra offre beaucoup de technologie, y compris la possibilité de programmer l'imprimante elle-même pour la communication sortante (demandez à votre revendeur à propos de ZBI). Je ne sais pas si ZBI peut communiquer sur des websockets. Dans le cas où ZBI ne supporte pas la communication websocket, votre imprimante sera effectivement une imprimante «esclave» qui ne fait que ce qui est dit. Il ne pourra pas demander au serveur quoi que ce soit; plutôt, le serveur devra forcer l'information vers le bas à l'imprimeur. Avec les websockets, c'est trivial. Mais, sans ZBI, l'imprimante ne peut pas être «programmée» pour demander des données. –

3

Je vous suggère fortement de reconsidérer la solution de la rotule Zebra à ce stade.

La meilleure solution pourrait toujours être la solution du mini serveur Web.

Mon expérience avec une solution websocket Zebra: Contexte:

J'ai d'abord essayé de créer une solution Node.js (j'avais lu à plusieurs endroits que tout serveur est faisable). Mais après quelques échecs de tentatives de connexion, même après avoir obtenu les certificats signés Zebra - et l'imprimante/serveur passant par un processus de prise de contact réussi - il échouait toujours avec une erreur cryptique, que lorsque l'on regarde est lié à l'imprimante essayant de vérifier Tomcat version/serveur est utilisé !!! ???

J'ai reçu une réponse d'un développeur Zebra qui est en train de développer une solution .Net mais qui ne parvient pas à la faire fonctionner et attend d'autres informations de la part des ingénieurs de Zebra avant de pouvoir compléter la solution. Ils ont dit qu'ils enverraient l'information quand ils l'avaient et espéraient l'obtenir dans une semaine (plus d'une semaine - pas de chance pour le moment). Donc, j'ai décidé de mettre en place un serveur Tomcat - le seul exemple de travail de Zebra ... J'ai exécuté l'exemple de servlet mais j'ai commencé à avoir de nouveaux problèmes de cert (comme j'avais changé de serveurs/domaines, etc.) Je pensais à tout le processus maladroit - et reconnaissait le briseur de 1 deal - le processus d'authentification et de signature SSL très restrictif est trop risqué.

E.g. Disons que vous avez plus de 100 clients qui comptent sur cette solution. Si vous avez JAMAIS des problèmes avec le cert (par exemple, changement de nom de domaine, changement de configuration du serveur ou invalidation/expiration de cert) - alors TOUS les 100+ clients n'ont pas leur imprimante. Mais vous ne pouvez pas le réparer vous-même - Pour réparer/générer un nouveau certificat, etc., le processus de re-signature est lent et dépend de ressources externes! (Ceci est un processus manuel Zebra btw - vous envoyez via un email et vous êtes ensuite laissé attendre un temps considérable avant qu'un employé de Zebra répond avec un cert signé). Cela signifie que les 100+ clients n'utilisent pas les services de l'imprimante depuis longtemps, mais que vous n'avez AUCUNE OPTION mais que votre certificat doit être signé par Zebra. Pour moi, il s'agit d'un risque inacceptable - (la solution websocket ne doit PAS être dépendante d'un certificat signé Zebra - une fois que vous installez VOTRE (ou vos clients) imprimante, configurez l'imprimante pour spécifier un nom de domaine/adresse EXACT pour qu'elle se connecter à). Avec votre solution de mini-serveur - si un client a un problème - cela n'affectera que ce seul client et vous ne comptez PAS sur une entreprise externe pour signer des certificats pour résoudre le problème.

Voici les problèmes identifiés et les risques associés.

PROBLÈME 1) Très mal implémenté - Je ne peux pas (et ils ne peuvent pas non plus) l'obtenir pour se connecter à un serveur standard autre qu'une configuration Tomcat très spécifique !!! NIVEAU DE RISQUE: FAIBLE - c'est-à-dire qu'il s'agit d'un coût et d'une charge de temps initiaux - mais une fois que vous travaillez, le risque continu de causer ce problème est minime. RISQUES: a) Restreint le développement à des serveurs et des technologies très spécifiques. b) Augmentation du temps et des coûts pour le développement/test initial.

PROBLÈME 2) Mal documenté - J'ai identifié (et Zebra a vérifié) plusieurs erreurs dans la documentation - la documentation est également dispersée avec des informations importantes jetées dans un fichier readme.txt difficile à trouver séparé du reste de la documentation. NIVEAU DE RISQUE: FAIBLE - c'est-à-dire qu'il s'agit d'un coût et d'une charge de temps initiaux - mais une fois que vous travaillez, le risque continu de causer ce problème est minime. RISQUES: a) Ralentit le développement initial. b) Augmentation du temps et des coûts pour la configuration/développement initial.PROBLÈME 3) La sécurité de l'imprimante/l'authentification SSL sont mal planifiées et mises en œuvre. Il implique plusieurs étapes - est extrêmement restrictif et implique un processus lent de signature zébrée qui crée un risque continu. NIVEAU DE RISQUE: ÉLEVÉ - c.-à-d. C'est la raison pour laquelle nous ne pouvons pas utiliser cette solution. RISQUES: a) Restreint le développement à des serveurs et des technologies très spécifiques. b) Ralentit le développement initial. c) Augmentation du temps et des coûts pour la configuration/développement initial. d) Crée un risque élevé de niveau élevé pour le projet comme suit: ---> L'idée est qu'une entreprise se fierait à cette solution de connexion d'imprimante - par conséquent, tout arrêt de travail potentiel causerait une DISRUPTION MAJEURE DE L'ENTREPRISE. ---> N'IMPORTE QUEL des scénarios suivants signifierait que TOUS les clients utilisant cette solution websocket seraient sans services d'imprimante pendant plusieurs jours alors que de nouveaux certificats signés Zebra sont organisés: ---> 1) Cert expire, 2) Cert est invalidé , 3) Le serveur est déplacé, 4) les détails du domaine changent, 5) La configuration du serveur Tomcat est modifiée (en raison de la façon dont l'imprimante vérifie certains paramètres Tomcat/serveur) ---> De plus, les 5 scénarios ci-dessus sont connus mes tests jusqu'ici - il pourrait y avoir d'autres restrictions possibles qui pourraient signifier des échecs de cert que je n'ai pas encore rencontrés.

Résumé: IMO Problème 3 pose un risque inacceptable et les 2 choses suivantes doivent se produire avant de reconsidérer les Webbockets Zebra. 1) Ils ont besoin d'une documentation appropriée sur la façon dont les Websockets se connectent à un serveur tel qu'il est caché et même les employés de Zebra sont actuellement dans le noir. 2) Ils ont besoin de supprimer certaines des restrictions d'authentification - de sorte que vous pouvez résoudre n'importe quel problème sans une interaction Zebra longue.

+0

J'ai acheté l'imprimante Linkos ZD-420 et en une semaine, j'ai réussi à installer un serveur de socket Web PoC en Python auquel l'imprimante se connecte et une fois le serveur connecté repousse un travail d'impression en ZPL. La documentation a aidé, ce n'était pas tout ce que j'espérais, mais je crois qu'une fois que je ferai le nécessaire et que je publierai du code sur github, il sera beaucoup plus facile de créer des solutions avec Zebras. –

Questions connexes