从Web服务器打印到热敏打印机,无需任何中介



我已经研究这个问题将近一个月了。我似乎被推向了各个不同的方向。我希望有人能帮我回答。

给出一个我正在寻找的简单模型:

我有一个网络服务器,里面有我需要通过互联网到达热敏打印机打印的信息。我不想让电脑充当中介。我做必要的编程来实现这一点没有问题。我的问题来自于找到能够编程的设备。我遇到的第一个问题是找到一台热敏收据打印机,它有一个内置的网络服务器,我可以对其进行编程,以轮询我的服务器,获取要打印的信息。目前没有可用于此目的的打印机。我已经和Zebra、Epson、Brother等进行了交谈。如果两个设备都在同一个网络上,比如手机打印机到手机连接的同一网络上的打印机,大多数都有打印解决方案,而且大多数都有SDK。我需要打印机能够轮询我的Web服务器。所以我去寻找另一种选择。也许我可以在打印机上连接一个无线USB迷你网络服务器来达到我的最终目标。我原以为这是一项简单的任务,但事实并非如此。我向stackoverflow.com的用户提出的问题是,有人遇到过类似的问题并知道解决方案吗?我再次与不同的制造商进行了交谈,但他们都无法提供帮助。我想他们中的大多数人甚至无法理解我在说什么。我希望那些在这里编程的人能理解我的问题。

下面是我尝试做的一个国产迂回解决方案。

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

同样,上面的这个解决方案需要我从头开始构建。berg云是另一种选择,但它们不允许我控制我的网络服务器,一切都通过它们运行。请随意提问,因为我不希望这个问题能得到快速的答案。我希望有程序员遇到过类似的问题。

为了参考我为这个问题选择的标签,我想也许我可以将一个设备(Web服务器微控制器设置)连接到热敏打印机上,该打印机可能有一个运行Web服务器的JVM,然后我可以通过USB与打印机通信。我知道Java对于微控制器来说比C糟糕得多,但这就是我所知道的。希望听到任何其他解决方案。

我强烈建议您在这一点上重新考虑Zebra-websocket解决方案。

最好的解决方案仍然可能是迷你网络服务器解决方案。

我使用Zebra websocket解决方案的经验:背景:

我最初尝试创建一个node.js解决方案(我在几个地方读到任何服务器都是可行的)。但是,在几次失败的连接尝试之后,即使在获得Zebra签名的证书之后,打印机/服务器也通过了成功的握手过程,但它仍然失败了,并出现了一个神秘的错误,当调查时,这个错误与打印机试图验证是否使用了特定的Tomcat版本/服务器有关!!!???

我确实收到了一位Zebra开发人员的回复,他正在开发.Net解决方案,但也无法使其正常工作,正在等待Zebra"工程师"的进一步信息,然后才能完成解决方案。他们说,他们会在收到信息后发送,并希望在一周内(一周多——还没有运气)收到。

所以,我决定组装一个Tomcat服务器,这是Zebra工作的唯一例子。。。我运行了示例servlet,但开始出现新的证书问题(因为我更改了服务器/域等)这让我思考了整个笨拙的过程,并认识到了1交易破坏者——非常严格的ssl身份验证和签名过程风险太大了。

例如,假设您有100多个客户依赖此解决方案。如果你的证书有问题(例如域名更改、服务器设置更改或证书无效/过期),那么所有100多名客户都没有打印机。但你不能只自己修复它——修复/生成新证书等重新签名过程很慢,而且依赖于外部资源!(顺便说一句,这是一个手动的斑马流程——你通过电子邮件发送,然后在斑马员工用签名证书回复之前,你要等待相当长的时间)。

这意味着所有100多名客户在相当长的一段时间内都没有打印机服务,但您别无选择,只能让Zebra在您的证书上签名。对我来说,这是一个不可接受的风险-(websocket解决方案不应依赖于Zebra签名的证书-在安装完您(或您的客户端)的打印机后,您可以配置打印机,为其指定一个要连接的准确域名/地址)。

使用迷你服务器解决方案,如果客户有问题,它只会影响单个客户,并且您不依赖外部公司签署证书来解决问题。

以下是已识别的问题及其相关风险。

问题1)实现非常糟糕-我不能(他们也不能)让它连接到标准服务器,而不是非常特定的Tomcat设置!!!风险等级:低-即初始成本和时间负担-但一旦工作,该问题导致进一步问题的持续风险就很小。风险:a) 将开发限制在非常特定的服务器和技术上。b) 增加了初始开发/测试的时间和成本。

问题2)文档不完善-我已经发现(Zebra已经验证)了文档中的几个错误-文档中的重要信息也分散在一个很难找到的readme.txt文件中,该文件与其他文档分开。风险等级:低-即初始成本和时间负担-但一旦工作,该问题导致进一步问题的持续风险就很小。风险:a) 减缓初始开发。b) 增加了初始设置/开发的时间和成本。

问题3)打印机安全性/ssl身份验证计划和实施不力。它涉及多个步骤,限制性极强,涉及缓慢的斑马线签字过程,这会造成持续的风险。风险等级:高-即这是我们无法使用此解决方案的原因。风险:a) 将开发限制在非常特定的服务器和技术上。b) 减缓初始开发。c) 增加了初始设置/开发的时间和成本。d) 对项目造成持续的高风险,如下所示:--->其想法是,公司将依赖此打印机连接解决方案,因此任何潜在的停机时间都会导致重大业务中断。--->以下任何一种情况都意味着,在组织新的Zebra签名证书时,所有依赖此websocket解决方案的客户将在几天内没有打印机服务:--->1)证书过期,2)证书无效,3)服务器被移动,4)域详细信息更改,5)Tomcat服务器设置被修改(由于打印机验证某些Tomcat/服务器设置的方式)--->此外,以上5种情况仅根据我目前的测试而知——可能还有其他可能的限制,这可能意味着我还没有遇到证书失败。

摘要:IMO问题3带来了不可接受的风险,在我重新考虑Zebra websockets之前,需要发生以下两件事。1) 他们需要适当的文档来说明websocket是如何连接到服务器的,因为服务器是隐藏的,甚至Zebra的员工目前也蒙在鼓里。2) 他们需要删除一些身份验证限制,这样您就可以在没有耗时的Zebra交互的情况下解决任何问题。

我已经成功创建了迷你websocket服务器,可以与ZD420-LinkOS驱动的Zebra打印机进行对话。

为了配置打印机,我编写了一个小型python实用程序(在linux上测试)https://github.com/elops/zebra-wifi-tool

该工具将设置打印机连接到wifi网络,并通过该wifi网络连接到网络链接位置。weblinklocation是websocket服务器URL的斑马名。您可以通过websocket轻松调整配置、发送打印作业等。

使用asynciowebsockets用Python 3.5编写了websocket服务器的Python实现

核心功能基本上是来自此处文档的c/phttp://websockets.readthedocs.io/en/3.4/intro.html#both

你需要3个协同例程:

  • 1x连接处理程序
  • 1x生产商
  • 1x消费者

连接处理程序:这个协同例程负责监听你的websocket上首先发生的事情,是数据接收还是数据发送。无论哪一个先发生,另一个都会被取消并循环。

生产者:此协同例程用于通过活动websocket将数据推送到物联网设备。

消费者:该协同例程由物联网设备通过websocket发送到服务器的数据提供。

Websocket握手如下 start_server = websockets.serve(handler, 'localhost', 6000, subprotocols=['v1.weblink.zebra.com'], extra_headers={'Content-Length': '0'})

整件事都很有魅力,非常可靠,高度可配置,功能丰富的解决方案,适用于各种需要从web应用程序打印到连接到互联网的打印机的场景。我已将条形码扫描仪与ZD420打印机配对。扫描的数据可以通过用于打印的相同websocket打印机轻松发送到websocket服务器,因此您可以为网络上的POS环境创建强大的解决方案。

Zebra确实提供了可以通过websocket进行通信的打印机。如果您的网络服务器是公开的(即在"互联网"上可用),您可以打开打印机和服务器之间的网络套接字连接,只要有新的信息可供使用,就可以简单地发送数据。虽然听起来你需要打印机来启动对话,但拥有一个不断打开的websocket连接可能会帮助你满足你的需求。这就消除了对任何中间计算机的需求,而打印机则直接与服务器通信。

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型号就足够了。

尝试使用支持应用程序启用打印(AEP)的SATO打印机(请参阅SATO美国或SATO欧洲)。在这里,您可以使用Cloud或服务器设置websocket。打印机还允许https请求以及ftp轮询。例如,您可以从连接的扫描仪或通过USB主机端口连接到打印机的键盘触发打印作业。它工作得很好!并且不需要像前面描述的情况那样使用第二个Cloud。

相关内容

  • 没有找到相关文章

最新更新