我正在尝试从 javascript 打印到 Epson TM-T88IV 打印机。
(这是一台热敏收据打印机。)
地位:
- 打印机通过以太网连接到网络。
- 我可以成功 ping 打印机。
- 我可以访问打印机 Web 配置页面。
- 我已经重置了打印机。
- 我可以使用 Epson 的 Mac OS 打印驱动程序打印到打印机。
开发环境:
- 我正在运行 Mac OS X 10.10
- 我使用 Homebrew 重新安装了 Node 和 NPM。
- 冉:酿造更新...酿造医生...酿造符号链接...
问题:
我无法弄清楚如何解决我遇到的 ECONNREFUSED 错误。
已经尝试过:
- 在 Tonicdev.com 上运行它无济于事。链接到补品笔记本。
- 我已经搜索并阅读了 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 }
更新
我检查了设备上打开/可用的端口。原来爱普生的SDK文档不正确!为 TCP/打印机请求打开的实际端口是 515,而不是 8008。真遗憾!
nc -z 192.168.77.22 1-6000
printer.init未建立连接。printer.isPrinterConnected返回false。_
我用正确的端口重新尝试了爱普生的 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();
}
}