我面临着一个问题,我找不到克服它的方法。如果我通过XMLHttpRequest()发送ZPL命令来打印标签,如下所示:
var request = new XMLHttpRequest();
var method = "POST";
var async = true;
var zpl = "^XA...^XZ";
var urlForPrint = "http://192.168.0.242/printer/pstprnt";
var urlForHi = "http://192.168.0.242:9100";
request.onload = function () {
var status = request.status; // HTTP response status, e.g., 200 for "200 OK"
var data = request.responseText; // Returned data, e.g., an HTML document.
}
request.open(method, urlForPrint, async);
request.overrideMimeType('text/plain; charset=unicode');
request.send(zpl);
一切正常(打印标签)。但在尝试打印任何内容之前,我需要发送命令~HI,根据文档,该命令应该返回一个包含许多属性的字符串,与此IP上的打印机相关。
问题:我无法收到此字符串。
var requestForPrinter = new XMLHttpRequest();
requestForPrinter.onerror = function (e) {
//...
}
requestForPrinter.onload = function (e) {
// I suppose that response message should arrive here, as a parameter of e
//...
}
requestForPrinter.open(method, urlForHi, async);
requestForPrinter.send("~HI");
如果我使用PuTTY,打印机将返回消息并显示在PuTTY控制台中。 经过大量的研究,我意识到PuTTY通过TCP / IP与打印机通信,而我正试图通过HTTP与它通信。所以我现在已经清楚了解问题是什么。但是如何解决呢? 我的一位同事建议创建一个套接字。所以我尝试WebSocket,TCPSocket,socket.IO但没有成功。此外,它们似乎不受所有流行浏览器的支持,我无法通过浏览器控制台中出现的错误来测试它们。试图修复它们没有运气。 任何帮助将不胜感激!谢谢!
编辑:我找到了this。所以我的第二个问题是:我刚刚开始学习node.js并找出它的功能。我在某处读到,它是一个服务器端的js库。我可以只在客户端使用它吗?我的意思是,他们必须能够在局域网中使用打印机打印标签,并且即使互联网连接中断也能够工作(在开始时,当它将一些数据加载到服务器中时,只询问服务器一次数据) jqGrid的)。因此,与服务器通信不是一种选择。