URLをクリップボードにコピーしました
シェア用URL:https://faq2.epson.jp/web/Detail.aspx?id=52706
|
最終更新日 2022/07/29 |
FAQ番号:52706 |
|
印刷失敗時の再印刷<ePOS SDK for Android>
|
|
印刷失敗時のリトライ処理を実装したいが、マニュアルに該当情報が見当たらない。
どのようにすべきか教えて欲しい。
|
|
-
-
開発キット:Epson ePOS SDK for Android の Printer クラスで使用可能な connect と sendData にて
処理失敗時に発生する例外:Epos2Exception や、sendData の処理結果を知るイベントリスナーを活用し、
印刷失敗時におけるリトライ処理を実装してください。
connect
connect の処理時にプリンターと通信ができなかった場合などでは、以下のように例外処理と
Epos2Exception クラスよりエラー内容を確認できます。
try {
printer.connect("TCP:192.168.192.168", Printer.PARAM_DEFAULT);
}
catch (Epos2Exception e) {
String return_text = "";
switch (e) {
case Epos2Exception.ERR_PARAM:
//不正なパラメーターが渡された。
return_text = "ERR_PARAM";
break;
case Epos2Exception.ERR_CONNECT:
//オープンに失敗した。
return_text = "ERR_CONNECT";
break;
case Epos2Exception.ERR_TIMEOUT:
//指定時間内にデバイスと通信できなかった。
return_text = "ERR_TIMEOUT";
break;
case Epos2Exception.ERR_ILLEGAL:
//既に通信されている状態で、再度通信開始しようとした。
return_text = "ERR_ILLEGAL";
break;
case Epos2Exception.ERR_IN_USE:
//デバイスが使用中。
return_text = "ERR_IN_USE";
break;
case Epos2Exception.ERR_NOT_FOUND:
//デバイスが見つからない。
return_text = "ERR_NOT_FOUND";
break;
case Epos2Exception.ERR_TYPE_INVALID:
//デバイスの種類が違う。
return_text = "ERR_TYPE_INVALID";
break;
default:
break;
}
// エラー処理へ
}
上記のように connect 処理失敗時に確認できたエラー内容を元に対処をおこなって頂き、その後に
再接続処理を実施する等をご検討ください。
sendData
sendData でも処理が失敗したときは上記のように Epos2Exception クラスでエラー内容の確認が
できますが、その他に「 sendData 処理が成功した後のプリンターからの応答 」も確認できます。
プリンターに対し sendData で無事にデータ送信がおこなえても、印刷ができなかった結果を
プリンターからの通知で知るためには、以下のように setReceiveEventListener を使用します。
//印刷完了イベントリスナーを登録。
printer.setReceiveEventListener(this);
<中略>
//印刷データの送信
printer.sendData(Printer.PARAM_DEFAULT);
//印刷結果(プリンターからの応答)を取得
@Override
public void onPtrReceive(final Printer printerObj, final int code,
final PrinterStatusInfo status, final String printJobId) {
runOnUiThread(new Runnable() {
@Override
public synchronized void run() {
switch (code) {
case Epos2CallbackCode.CODE_SUCCESS:
//印刷成功
break;
case Epos2CallbackCode.CODE_ERR_COVER_OPEN:
//用紙カバーオープン中
break;
case Epos2CallbackCode.CODE_ERR_EMPTY:
//用紙なし
break;
case Epos2CallbackCode.CODE_ERR_FAILURE:
//要求ドキュメントの構文に誤りがある
break;
case Epos2CallbackCode.CODE_ERR_NOT_FOUND:
//デバイス ID で指定したデバイスが存在しない
break;
default:
break;
}
}
});
}
上記のように setReceiveEventListener で印刷完了イベントリスナーを登録し、
イベント onPtrReceive によってプリンターからの返信内容をご確認ください。
エラーのとき再処理(印刷をやり直す)仕組みをお作りください。
モバイルプリンター |
TM-P20,TM-P60II,TM-P80 |
PC一体型プリンター |
TM-T70II-DT,TM-T88V-DT,TM-T70II-DT2,TM-T88VI-DT2 |
スマートレシートプリンター |
TM-T88V-i,TM-T70-i |
TMシリーズ |
TM-T70,TM-T70II,TM-T88V,TM-T88VI,TM-T90II,TM-m10,TM-m30,TM-T20,TM-T20II,TM-T20III |
|