|
-
-
TMプリンターには、プリンター内部に用紙が無い、用紙残量が少ない状態などを判別する機構が搭載されています。
ここではサーマルプリンターの用紙エンド検出(用紙有無判別)、用紙ニアエンド検出(用紙残量判別)を例に説明いたします。
ハードウェアの仕様上、TM-T20, TM-T20II は用紙エンドを検出できますが、用紙ニアエンドは検出できません。
TMプリンターにて、用紙エンド検出または、用紙ニアエンド検出が判別されたとき、プリンターは状態の変化(ステータス)を通知します。
EPSON OPOS ADK でこのステータスを取得する方法は、以下のとおりです。
- EPSON OPOS ADK OLE版
- EPSON OPOS ADK .NET版
用紙切れ状態の取得方法 |
1. |
プリンターの用紙切れ状態を知るには、メソッド実行時に発生するエラーを取得するか、StatusUpdateEvent によって自動的に通知されるステータスを取得します。
メソッド実行時に発生するエラーを取得する方法は、ResultCode / ResultCodeExtended の値を取得することです。
PrintNormal メソッド 実行時に用紙が無いためにエラーが発生し、そのエラーを取得する例です。
例)Visual C++ で行う場合
// レシート用紙切れ時の ResultCodeExtended の値
// ResultCodeExtended = OPOS_EPTR_REC_EMPTY
//
// ジャーナルの場合:
// ResultCodeExtended = OPOS_EPTR_JRN_EMPTY
//
// スリップの場合:
// ResultCodeExtended = OPOS_EPTR_SLP_EMPTY
//
// ResultCode の値は OPOS_E_EXTENDED になります。
void CPrinterDlg::OnBtnOut1()
{
// Test printing
m_Ptr1.PrintNormal( PTR_S_RECEIPT, "Hello, World.\n");
if( m_Ptr1.GetResultCode() != OPOS_SUCCESS ) {
sRC.Format("%ld", m_Ptr1.GetResultCode());
sRCE.Format("%ld", m_Ptr1.GetResultCodeExtended());
MessageBox(
"Cannot use a POS Printer\nResultCode = " + sRC
+ "\nResultCodeExtended = " + sRCE );
return;
}
}
|
また、プリンターから自動的に通知されるステータスを取得するには、StatusUpdateEvent で次のようなイベント処理をつくります。
StatusUpdateEvent は、プリンターの状態が変化したときにイベント処理として実行されます。
例)Visual C++ で行う場合
void CPrinterDlg::OnStatusUpdateEventPosprinter1(long Data)
{
//イベント別にメッセージを表示する例
switch( Data )
{
// プリンターカバーが開いた状態
case PTR_SUE_COVER_OPEN:
// メッセージ表示処理~省略
break;
// レシート用紙なしの状態
case PTR_SUE_REC_EMPTY:
// メッセージ表示処理~省略
break;
// レシート用紙あり、ただし残量が少ない状態
case PTR_SUE_REC_NEAREMPTY:
// メッセージ表示処理~省略
break;
// プリンターカバーが閉じた状態
case PTR_SUE_COVER_OK:
// レシート用紙ありの状態
case PTR_SUE_REC_PAPEROK:
}
}
|
|
2. |
プリンターの用紙切れ状態を知るには、メソッド実行時に発生するエラーを取得するか、StatusUpdateEvent によって自動的に通知されるステータスを取得します。
メソッド実行時に発生するエラーを取得する方法は、ErrorCode / ErrorCodeExtended の値を取得することです。
PrintNormal メソッド 実行時に用紙が無いためにエラーが発生し、そのエラーを取得する例です。
例)Visual C# で行う場合
// レシート用紙切れ時の ErrorCodeExtended の値
// ErrorCodeExtended = EPTR_REC_EMPTY
//
// ジャーナルの場合:
// ErrorCodeExtended = EPTR_JRN_EMPTY
//
// スリップの場合:
// ErrorCodeExtended = EPTR_SLP_EMPTY
//
// ErrorCode の値は Extended になります。
private void btnPrint_Click(object sender, System.EventArgs e)
{
// Test printing
try
{
//文字列を印刷する為にPrintNormalメソッドを使用
//[\n]は標準改行コードです。
m_Printer.PrintNormal(
PrinterStation.Receipt,
"Hello OPOS for .Net \n");
}
catch (PosControlException ex)
{
MessageBox.Show("ErrorCode = " + ex.ErrorCode.ToString() +
"\nErrorCodeExtended =" + ex.ErrorCodeExtended.ToString() +
"\n" + ex.Message, "Printer_Sample",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
|
また、プリンターから自動的に通知されるステータスを取得するには、StatusUpdateEvent で次のようなイベント処理をつくります。
StatusUpdateEvent は、プリンターの状態が変化したときにイベント処理として実行されます。
例)Visual C++ で行う場合
/// StatusUpdateEventハンドラを通知します。
///
protected void OnStatusUpdateEvent(object source, StatusUpdateEventArgs e)
{
//プリンタの状態が変化した時、イベントが発生
switch(e.Status)
{
//プリンタのカバーが開いています。
case PosPrinter.StatusCoverOpen:
// メッセージ表示処理~省略
break;
//レシート用紙がありません。
case PosPrinter.StatusReceiptEmpty:
// メッセージ表示処理~省略
break;
//プリンタのカバーが閉じています。
case PosPrinter.StatusCoverOK:
// メッセージ表示処理~省略
break;
//レシート用紙がセットされています。
case PosPrinter.StatusReceiptPaperOK:
// レシート用紙あり、ただし残量が少ない状態
case PosPrinter.StatusReceiptNearEmpty:
// メッセージ表示処理~省略
break;
}
}
|
|
エラーコード や ステータス の詳細につきましては、OPOS技術協議会から配布されています「OPOS 技術協議会 仕様書」を参照してください。
「OPOS 技術協議会 仕様書」は こちら から参照することができます。
モバイルプリンター |
TM-P20,TM-P60II |
TMシリーズ |
TM-C100,TM-H5000II,TM-H6000II,TM-H6000III,TM-H6000IV,TM-J2000,TM-J2100,TM-L60II,TM-L90 オートカッターモデル,TM-L90 ピーラーモデル,TM-T20,TM-T20II,TM-T70,TM-T70II,TM-T88III,TM-T88IIIX (ARCX搭載),TM-T88IV,TM-T88V,TM-T90,TM-T90 KP,TM-T90II,TM-U220A,TM-U220B,TM-U220D,TM-U295,TM-U375,TM-U590,TM-U675,TM-U950 |
|