5

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

给出我正在寻找的简要模型:

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

下面是我正在尝试做的一个本土的环形交叉路口解决方案。

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

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

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

4

4 回答 4

4

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

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

我对 Zebra websocket 解决方案的体验: 背景:

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

我确实收到了 Zebra 开发人员的回复,他正在开发 .Net 解决方案,但也无法使其正常工作,并且正在等待 Zebra 的“工程师”提供更多信息,然后才能完成解决方案。他们说他们会在收到信息后将其发送出去,并希望在一周内得到它(超过一周 - 还没有运气)。

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

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

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

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

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

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

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

问题 3) 打印机安全/ssl 身份验证计划和实施不当。它涉及多个步骤 - 非常严格,并且涉及缓慢的斑马签名过程,这会产生持续的风险。风险级别:高 - 即这是我们无法使用此解决方案的原因。风险:a) 将开发限制在非常具体的服务器和技术上。b) 减缓初始发展。c) 增加初始设置/开发的时间和成本。d) 对项目造成持续的高级别风险,如下所示: ---> 公司将依赖此打印机连接解决方​​案 - 因此任何潜在的停机时间都会导致重大业务中断。--->

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

于 2015-06-11T00:56:12.947 回答
1

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

Zebra 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 型号应该足够了。

于 2013-03-06T16:17:25.377 回答
0

我已经成功创建了 mini websocket 服务器来与 ZD420 - LinkOS 驱动的 Zebra 打印机通信。

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

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

websocket 服务器的 Python 实现是用 python 3.5 编码的,使用asynciowebsockets

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

你需要 3 个协程:

  • 1x 连接处理程序
  • 1x 制作人
  • 1x 消费者

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

Producer: 该协程用于通过活动的 websocket 将数据推送到 IoT 设备。

消费者: 这个协程被馈送到物联网设备通过 websocket 发送到服务器的数据。

Websocket 握手看起来像这样 start_server = websockets.serve(handler, 'localhost', 6000, subprotocols=['v1.weblink.zebra.com'], extra_headers={'Content-Length': '0'})

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

于 2017-09-25T15:40:21.407 回答
0

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

于 2019-12-08T22:23:19.700 回答