Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点热敏打印机未连接到Epson T88IV打印机 我正在尝试从javascript打印到Epson TM-T88IV打印机。_Node.js_Thermal Printer_Epson_Econnrefused - Fatal编程技术网

Node.js 节点热敏打印机未连接到Epson T88IV打印机 我正在尝试从javascript打印到Epson TM-T88IV打印机。

Node.js 节点热敏打印机未连接到Epson T88IV打印机 我正在尝试从javascript打印到Epson TM-T88IV打印机。,node.js,thermal-printer,epson,econnrefused,Node.js,Thermal Printer,Epson,Econnrefused,(这是一台热敏收据打印机。) 地位: 打印机通过以太网连接到网络 我可以成功地ping打印机 我可以访问打印机web配置页 我已重新设置打印机 我可以使用Epson的Mac OS打印驱动程序打印到打印机上 发展环境: 我正在运行MacOSX10.10 我使用自制软件重新安装了Node和NPM 运行:brew更新…brew医生…brew符号链接 问题: 我不知道如何解决我遇到的错误 已尝试: 在Tonicdev.com上运行了它,但找不到任何线索。给我一本笔记本 我已经搜索并阅读了有关S

(这是一台热敏收据打印机。)

地位:
  • 打印机通过以太网连接到网络
  • 我可以成功地ping打印机
  • 我可以访问打印机web配置页
  • 我已重新设置打印机
  • 我可以使用Epson的Mac OS打印驱动程序打印到打印机上
发展环境:
  • 我正在运行MacOSX10.10
  • 我使用自制软件重新安装了Node和NPM
  • 运行:brew更新…brew医生…brew符号链接
问题: 我不知道如何解决我遇到的错误

已尝试:
  • 在Tonicdev.com上运行了它,但找不到任何线索。给我一本笔记本
  • 我已经搜索并阅读了有关Stackoverflow的每一个经济问题
  • 我已尝试将此代码放在一个独立的print.js文件中,并调用:

    node print.js

错误: 更新 我检查了设备上打开/可用的端口。原来爱普生的SDK文档是不正确的!为TCP/打印机请求打开的实际端口是515,而不是8008。好悲伤

nc -z 192.168.77.22 1-6000
打印机.init未建立连接。打印机.isPrinterConnected正在返回false

我用正确的端口重新试用了爱普生的EPOSSDK。我收到以下错误:
错误\u超时

所以,我想我可能没有正确设置超时值?

节点热敏打印机(代码)
var打印机=需要(“节点热敏打印机”);
printer.init({
类型:“爱普生”,
接口:'/dev/usb/lp0',
ip:“192.168.77.22”,
端口:'515'
});
打印机.isPrinterConnected(功能(未连接){
console.log(未连接);
});
process.on('uncaughtException',函数(err){
控制台日志(err);
}); 
printer.alignCenter();
printer.println(“你好世界”);
打印机。剪切();
打印机。执行(函数(错误){
如果(错误){
控制台错误(“打印失败”,错误);
}否则{
控制台日志(“打印完成”);
}

});当我扩大搜索范围时,我发现打印机正在另一个端口上侦听命令

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,瞧

我不知道为什么我的爱普生TM-M30 POS打印机的端口从官方的“8008”改为“515”

问题在于epos-2.7.0.js已将连接端口声明为常量:

    ...
    this.IFPORT_EPOSDEVICE = 8008;
    this.IFPORT_EPOSDEVICE_S = 8043;
    ...
但真正的是515,所以你必须修改官方js:

    this.IFPORT_EPOSDEVICE = 515;
通过此更改,以下是我的代码:

var ePosDev = new epson.ePOSDevice();
var ipAddress = '192.168.150.162'; 
var port = '515';
var printer = null;
ePosDev.connect(ipAddress, port, function callback_connect(resultConnect){
  var deviceId = 'local_printer';
  var options = {'crypto' : false, 'buffer' : false};
  if ((resultConnect == 'OK') || (resultConnect == 'SSL_CONNECT_OK')) {
    //Retrieves the Printer object
    ePosDev.createDevice(
      deviceId, 
      ePosDev.DEVICE_TYPE_PRINTER, 
      options, 
      function callback_createDevice(deviceObj, errorCode){
        if (deviceObj === null) {
          return; 
        }
        printer = deviceObj;
        printer.addTextAlign(printer.ALIGN_CENTER); 
        printer.addText('My text..\n');
        printer.send();
        if (ePosDev.isConnected) {
          printer.send(); 
        }
        ePosDev.deleteDevice(printer, function callback_deleteDevice(errorCode){
          ePosDev.disconnect();
        });
      });
  }});
var ePosDev = new epson.ePOSDevice();
var ipAddress = '192.168.150.162'; 
var port = '515';
var printer = null;
ePosDev.connect(ipAddress, port, function callback_connect(resultConnect){
  var deviceId = 'local_printer';
  var options = {'crypto' : false, 'buffer' : false};
  if ((resultConnect == 'OK') || (resultConnect == 'SSL_CONNECT_OK')) {
    //Retrieves the Printer object
    ePosDev.createDevice(
      deviceId, 
      ePosDev.DEVICE_TYPE_PRINTER, 
      options, 
      function callback_createDevice(deviceObj, errorCode){
        if (deviceObj === null) {
          return; 
        }
        printer = deviceObj;
        printer.addTextAlign(printer.ALIGN_CENTER); 
        printer.addText('My text..\n');
        printer.send();
        if (ePosDev.isConnected) {
          printer.send(); 
        }
        ePosDev.deleteDevice(printer, function callback_deleteDevice(errorCode){
          ePosDev.disconnect();
        });
      });
  }});