javascript から Epson TM-T88IV プリンターに印刷しようとしています。
(サーマルレシートプリンターです。)
状態:
- プリンターはイーサネット経由でネットワークに接続されています。
- プリンターに正常にpingできます。
- プリンターの Web 構成ページにアクセスできます。
- プリンターをリセットしました。
- エプソンの Mac OS プリント ドライバを使用してプリンタに印刷できます。
開発環境:
- Mac OS X 10.10 を実行しています
- Homebrew を使用して Node と NPM を再インストールしました。
- Ran: brew update...brew doctor...brew symlink...
問題:
発生している ECONNREFUSED エラーを解決する方法がわかりません。
すでに試した:
- Tonicdev.com で実行しても、手がかりは得られませんでした。Tonic Notebook へのリンク。
- 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/Printer リクエスト用に開いている実際のポートは 8008 ではなく 515 です。
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();
}
}