2013-03-05 20 views
4

我一直在调查这个问题近一个月。看来我被推向了所有不同的方向。我希望有人能帮我解答。从网络服务器打印到没有中间媒介的热敏打印机

给的什么,我要寻找一个简单的模型:

我有了我需要通过互联网来获得一个热敏打印机进行打印的信息的网络服务器。我不想让电脑成为中介。做好必要的编程以实现这一点我没有问题。我的问题是通过寻找可以编程的设备来实现的。我遇到的第一个问题是找到一台热敏收据打印机,它具有内置的网络服务器,我可以编程来轮询我的服务器以获取要打印的信息。目前没有用于此目的的打印机。我已经与Zebra,Epson,Brother等进行了交谈。如果两台设备在同一网络上,例如移动电话打印机连接到与手机连接的同一网络上的打印机,则大多数打印机都有打印解决方案,并且大多数SDK具有做到这一点。我需要打印机才能够轮询我的网络服务器。所以我去寻找替代品。也许我可以将无线USB迷你网络服务器连接到打印机以达到我的最终目标。我认为这将是一个简单的任务,但它不是。我在这里stackoverflow.com上的用户问题有没有人来过类似的问题,并知道解决方案?我再次与不同的制造商谈过,他们都不能提供帮助。我认为他们中的大多数人甚至都无法理解我在说什么。我希望在这里编程的人能够理解我的问题。

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

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

再在上面这个解决方案要求我从地上爬起来建立它。伯格云是另一种选择,但他们不允许我控制我的Web服务器,并且所有事情都通过它们运行。请随时提出问题,因为我不希望快速回答​​这个问题。我希望有程序员遇到类似的问题。

此外,为了引用我为这个问题选择的标签,我想也许我可以将一个设备(Web服务器微控制器设置)连接到热敏打印机,该热敏打印机可能有一个运行Web服务器的JVM,然后可以通过USB到打印机。我知道Java对于单片机来说比C差得多,但我知道它。很想听听任何其他解决方案。

回答

0

我已经成功地创建了迷你websocket服务器来与ZD420 - LinkOS供电的Zebra打印机通话。

要配置的打印机,我写小蟒蛇实用程序(在Linux上测试) https://github.com/elops/zebra-wifi-tool

该工具将安装打印机连接到WiFi网络,并通过该无线网络连接到网络链接的位置。 weblink位置是您的websocket服务器的URL的Zebra名称。您可以通过websocket轻松调整配置,发送打印作业等等。

Python实现的WebSocket服务器进行编码使用asynciowebsockets

核心功能的Python 3.5基本上是从文档C/P这里 http://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环境创建强大的解决方案。

1

Zebra确实提供可以通过websockets进行通信的打印机。如果您的Web服务器是公开可用的(即可在'Internet上获得),则可以在打印机和服务器之间打开一个Web套接字连接,并在每次有新信息提供时简单地发送数据。虽然听起来您需要打印机启动对话,但也许有一个不断打开的WebSocket连接将帮助您实现您的需求。这消除了对任何中间计算机的需求,并且打印机直接与服务器通话。

斑马的WebSocket打印机:http://www.zebra.com/us/en/products-services/software/link-os/cloud-connect.html

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

如果需要支持此功能的热敏收据打印机,该机型IMZ应该是足够了。

+0

贾森!你是男人!我用斑马线在电话上花了2个小时,他们不知道我在说什么。我没有任何解决方案可以让我从没有PC的A点到B点获取信息。我想我会尽快购买其中的一种。你知道任何有关websockets的文档吗?从我简短的搜索中我发现它还没有被标准化。我想在我的服务器端使用PHP。看起来我会在LinkOS上编写应用程序,通过websocket与我的服务器进行通信。你可以提供的任何附加信息显然是非常有价值的。 – Mark 2013-03-06 22:32:05

+0

我相信Websockets被认为包含在HTML5的保护伞下。使用Zebra打印机,所有websocket连接都通过TLS进行保护,因此希望能够减轻您的安全隐患。因为Zebra SDK会将所有WebSocket设置从您身上抽象出来,所以Websocket教程并不是您必需的。您只需将打印机配置为指向您的Web应用程序(使用Zebra SDK)。 SDK是用Java编写的,我不知道如何将它与PHP集成。我只用了Apache Tomcat和一个Java Web应用程序。 – 2013-03-07 01:21:54

+0

要清楚 - Zebra打印机提供了许多技术,包括为出站通信编程打印机本身(请向经销商了解ZBI)。我不知道ZBI是否可以通过websockets进行通信。如果ZBI不支持websocket通信,那么您的打印机将实际上是一个“奴隶”打印机,它只会按照所告知的进行操作。它将无法向服务器询问任何内容;相反,服务器必须强制信息下达到打印机。使用websockets,这是微不足道的。但是,如果没有ZBI,打印机不能被“编程”来询问数据。 – 2013-03-07 01:27:37

3

我强烈建议您在此时重新考虑Zebra websocket解决方案。

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

我与斑马的WebSocket解决方案的经验: 背景:

我最初尝试创建一个Node.js的解决方案(我在几个地方的任何服务器是可行读过)。 但是,即使在获得Zebra签署的证书后(即打印机/服务器经历了成功的握手过程),连接尝试失败后,它仍然失败并出现一个模糊的错误,当检查与打印机试图验证特定Tomcat版本/服务器正在使用!!!

我确实得到了Zebra开发人员的答复,他正在开发.Net解决方案,但也无法使其正常工作,并且在他们完成解决方案之前等待来自Zebra'工程师'的进一步信息。他们表示,他们会在发送信息时发送信息,并希望在一周内得到信息(超过一周 - 没有运气)。

所以 - 我决定组装一个Tomcat服务器 - Zebra正在工作的唯一例子...我得到了servlet运行的示例,但开始出现新的证书问题(因为我更改了服务器/域等) 我想到了整个笨重的过程 - 并认识到1交易断路器 - 非常严格的ssl身份验证和签名过程风险太大。

E.g.假设您有100多个客户依靠此解决方案。 如果您遇到证书问题(例如,域名更改,服务器设置更改或证书失效/失效) - 则所有100+客户都没有打印机。 但是你不能自己修复它 - 修复/生成一个新的证书等重新签名过程是缓慢的,并依赖于外部资源! (这是一个手动的Zebra过程btw - 您通过电子邮件发送,然后在Zebra员工用签名证书进行响应之前,您将等待相当长的时间)。

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

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

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

问题1)执行得很差 - 我不能(也不能)让它连接到一个非常特定的Tomcat设置以外的标准服务器! 风险水平:低 - 即这是一个初始成本和时间负担 - 但一旦处理这个问题导致进一步问题的风险最小。 风险: a)将开发限制在非常具体的服务器和技术上。 b)增加初始开发/测试的时间和成本。

问题2)记录不完整 - 我已经确认(和斑马已经验证过)文档中的几个错误 - 文档中也散布着重要的信息,很难找到与文档其余部分分开的readme.txt文件。 风险水平:低 - 即这是一个初始成本和时间负担 - 但一旦处理这个问题导致进一步问题的风险最小。 风险: a)减缓最初的发展。 b)增加初始设置/开发的时间和成本。

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

总结: IMO问题3带来了不可接受的风险,在重新考虑Zebra websockets之前需要做以下两件事情。 1)他们需要正确的文档说明WebSockets如何连接到服务器,因为它是隐藏的,甚至斑马的员工目前都处于黑暗中。 2)他们需要删除一些身份验证限制 - 以便您可以解决任何问题而不需要耗时的Zebra交互。

+0

我已经购买了ZD-420 linkos打印机,并且在一周内设法在Python中设置了一个PoC websocket服务器,该打印机连接到服务器并且一旦连接服务器就会在ZPL中推回打印作业。文档有所帮助,但并不是我所希望的,但我相信,一旦我解决了这个问题,并向github发布代码,使用斑马创建解决方案将变得更容易。 – 2016-05-31 08:50:02

相关问题