节点热敏打印机没有连接到爱普生T88IV打印机
我正在尝试从JavaScript打印到Epson TM-T88IV打印机。
(这是一个热敏收据打印机。)
状态:
- 打印机通过以太网连接到networking。
- 我可以成功地ping打印机。
- 我可以访问打印机Webconfiguration页面。
- 我已经重置了打印机。
- 我可以使用Epson的Mac OS打印驱动程序打印到打印机。
开发环境:
- 我运行的是Mac OS X 10.10
- 我用Homebrew重新安装了Node和NPM。
- Ran:酿造更新…酿造医生…酿造符号链接…
问题:
我无法弄清楚如何解决我遇到的ECONNREFUSED错误。
已经试过了:
- 在Tonicdev.com上运行,无法find线索。 链接到补品笔记本。
- 我已经search并阅读了Stackoverflow上的每个ECONNREFUSED问题。
-
我已经尝试将此代码放置在独立的print.js文件中,并调用:
node print.js
错误:
{ Error: connect ECONNREFUSED 192.168.77.22:8008 at Object.exports._errnoException (util.js:1012:11) at exports._exceptionWithHostPort (util.js:1035:20) at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14) code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect', address: '192.168.77.22', port: 8008 }
更新
我检查了设备上的哪些端口是开放/可用的。 事实certificate,爱普生的SDK文档是不正确的! 打开TCP /打印机请求的实际端口是515,而不是8008.很抱歉!
nc -z 192.168.77.22 1-6000
printer.init没有build立连接。 printer.isPrinterConnected返回false 。
我用正确的端口重新尝试了Epson的epos SDK。 我得到了以下错误: ERROR_TIMEOUT
。
所以,我想我可能不会正确设置TimeOut值?
节点 – 热敏打印机(代码)
var printer = require("node-thermal-printer"); printer.init({ type: 'epson', interface: '/dev/usb/lp0', ip: "192.168.77.22", port: '515' }); printer.isPrinterConnected(function(isConnected){ console.log(isConnected); }); process.on('uncaughtException', function (err) { console.log(err); }); printer.alignCenter(); printer.println("Hello world"); printer.cut(); printer.execute(function(err){ if (err) { console.error("Print failed", err); } else { console.log("Print done"); } });
爱普生SDK(代码)
var ePosDev = new epson.ePOSDevice(); function connect() { var ipAddress = '192.168.77.22'; var port = '515'; ePosDev.connect(ipAddress, port, callback_connect); } function callback_connect(resultConnect){ alert('Callback Called'); var deviceId = 'local_printer'; var options = {'crypto' : false, 'buffer' : false}; alert(resultConnect); if ((resultConnect == 'OK') || (resultConnect == 'SSL_CONNECT_OK')) { alert('Connected!'); ePosDev.createDevice(deviceID,ePosDev.DEVICE_TYPE_PRINTER,options,callback_createDevice); } else { alert('Not Connected!'); } } var printer = null; function callback_createDevice(deviceObj, errorCode){ if (deviceObj === null) { //Displays an error message if the system fails to retrieve the Printer object return; } printer = deviceObj; //Registers the print complete event printer.onreceive = function(response){ if (response.success) { //Displays the successful print message } else { //Displays error messages } }; } function createData(){ printer.addTextAlign(printer.ALIGN_CENTER); printer.addText("Hello World\n"); } function send(){ if (ePosDev.isConnected) { printer.send(); } }
当我扩大search范围时,我发现打印机正在侦听另一个端口上的命令!
nc -z 192.168.77.22 1-50000
…重新调整了以下结果:
Connection to 192.168.77.22 port 80 [tcp/http] succeeded! Connection to 192.168.77.22 port 515 [tcp/printer] succeeded! Connection to 192.168.77.22 port 9100 [tcp/hp-pdl-datastr] succeeded!
所以,我只是在代码的init部分将端口号改为9100,瞧!