2013-03-05 22 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

相關問題