ロゴ:EPSON
ロゴ:よくあるご質問(FAQ)

製品別
質問別
エプソンパートナーポータル

URLをクリップボードにコピーしました
シェア用URL:https://faq2.epson.jp/web/Detail.aspx?id=36106
  FAQ番号:36106
EPSON OPOS ADK でプリンターの電源状態を知る方法
プリンター本体の電源オン/オフ状態を調べることは可能でしょうか?
 
 

プリンターの電源状態を知るためには、OPOS API のPowerNotify プロパティを使用し、ステータス情報取得イベント StatusUpdateEvent でプリンターの状態を取得できます。

目次

EPSON OPOS ADK OLE 版

EPSON OPOS ADK OLE 版では、PowerNotify プロパティに値 OPOS_PN_ENABLED を渡した後、DeviceEnabled を FALSE から TRUE に変更することで電源状態の監視が開始されます。
プリンターの電源が切断、またはオフライン状態のとき StatusUpdateEvent が発生し OPOS_SUE_POWER_OFF_OFFLINE を得ることができます。

イベント:StatusUpdateEvent やプロパティ:PowerNotify の詳細は OPOS 技術協議会発行の仕様書をご確認ください。

Visual Basic 6.0 の例

Private Sub Form_Load()
'DeviceEnabled の前に PowerNotify に値を渡す

  With OPOSPOSPrinter1

    .Open "Unit1"
    .PowerNotify = OPOS_PN_ENABLED
    .ClaimDevice 1000
    .DeviceEnabled = True

  End With

End Sub

Private Sub OPOSPOSPrinter1_StatusUpdateEvent(ByVal Data As Long)
'プリンターの状態に変化がある時、このイベントが発生する

    Select Case Data
    Case PTR_SUE_COVER_OPEN         'プリンターカバーが開いている
        '処理

    Case PTR_SUE_REC_EMPTY          '用紙が無い
        '処理

    Case PTR_SUE_COVER_OK           'プリンターカバーが閉じた
        '処理

    Case PTR_SUE_REC_PAPEROK        '用紙が有る
        '処理

    Case PTR_SUE_REC_NEAREMPTY      '用紙が有る ( ニアエンド、用紙残量:小 )
        '処理

    Case OPOS_SUE_POWER_ONLINE      '通電されて使用可能な状態
        '処理

    Case OPOS_SUE_POWER_OFFLINE     '通電しているが使用できない ( オフライン ) 状態
        '処理

    Case OPOS_SUE_POWER_OFF         '電源が投入されていないか、接続されていない
        '処理

    Case OPOS_SUE_POWER_OFF_OFFLINE '電源が投入されていないか、オフラインの状態
        '処理

    End Select

End Sub

Private Sub Form_Unload(Cancel As Integer)
    
  With OPOSPOSPrinter1

    .DeviceEnabled = False
    .ReleaseDevice
    .Close

  End With
    
End Sub

注意

電源 ON 通知機能、および電源 OFF 通知機能の有無は機種によって異なります。

  • (例)
  • TM-T90II は
    電源 ON 通知機能: あり
    電源 OFF 通知機能: あり
  • TM-T70II は
    電源 ON 通知機能: あり
    電源 OFF 通知機能: なし

機能の有無については EPSON OPOS ADK OLE 版に付属する機種別マニュアルをご確認ください。

EPSON OPOS ADK for .NET 版

EPSON OPOS ADK OLE 版と同様に、PowerNotify プロパティを使用することで StatusUpdateEvent にプリンターの電源状態が通知されます。

 

  • StatusUpdateEvent や PowerNotify の詳細は OPOS 技術協議会発行の仕様書をご確認ください。
  • EPSON OPOS ADK for .NET も同様に、機種によって電源 ON/OFF 通知機能の有無があります。
    機能の有無については EPSON OPOS ADK for .NET 版に付属する機種別マニュアルをご確認ください。

Visual C# の例

using Microsoft.PointOfService;

public class frm : System.Windows.Forms.Form
{

  PosPrinter m_Printer = null;

  /// StatusUpdateEvent ハンドラを追加
  protected void AddStatusUpdateEvent(object eventSource)
  {
    EventInfo statusUpdateEvent = eventSource.GetType().GetEvent( "StatusUpdateEvent");
    if(statusUpdateEvent != null)
    {
      statusUpdateEvent.AddEventHandler(eventSource,
                        new StatusUpdateEventHandler(OnStatusUpdateEvent));
    }
  }

  /// StatusUpdateEvent ハンドラを削除
  protected void RemoveStatusUpdateEvent(object eventSource)
  {
    EventInfo statusUpdateEvent = eventSource.GetType().GetEvent( "StatusUpdateEvent");
    if(statusUpdateEvent != null)
    {
      statusUpdateEvent.RemoveEventHandler( eventSource,
                        new StatusUpdateEventHandler(OnStatusUpdateEvent));
    }
  }

  private void frm_Load(object sender, EventArgs e)
  {

    string strLogicalName = "PosPrinter";

    PosExplorer posExplorer = new PosExplorer();
    DeviceInfo deviceInfo = null;

    deviceInfo = posExplorer.GetDevice(DeviceType.PosPrinter,strLogicalName);
    m_Printer =(PosPrinter)posExplorer.CreateInstance(deviceInfo);

    //StatusUpdateEvent ハンドラを追加
    AddStatusUpdateEvent(m_Printer);

    m_Printer.Open();
    m_Printer.Claim(1000);

    //電源監視をサポートしていれば、電源通知機能を有効にする
    if(m_Printer.CapPowerReporting != PowerReporting.None)
    {
      m_Display.PowerNotify = PowerNotification.Enabled;
    }

    m_Printer.DeviceEnabled = true;

  }

  private void frm_Closing(object sender, CancelEventArgs e)
  {

    //StatusUpdateEvent ハンドラを削除
    RemoveStatusUpdateEvent(m_Printer);

    m_Printer.DeviceEnabled = false;
    m_Printer.Release();
    m_Printer.Close();

  }

  /// StatusUpdateEvent ハンドラを通知
  protected void OnStatusUpdateEvent(object source, StatusUpdateEventArgs e)
  {
    //プリンターの状態に変化がある時、このイベントが発生する
    switch(e.Status)
    {
      // 通電されて使用可能な状態
      case PosCommon.StatusPowerOnline:
           // 処理
           break;

      // 通電しているが使用できない ( オフライン ) 状態
      case PosCommon.StatusPowerOffline:
           // 処理
           break;

      // 電源が投入されていないか、接続されていない
      case PosCommon.StatusPowerOff:
           // 処理
           break;

      // 電源が投入されていないか、オフラインの状態
      case PosCommon.StatusPowerOffOffline:
           // 処理
           break;

      default:
           break;
    }

  }

}

モバイルプリンター TM-P20,TM-P60II
PC一体型プリンター TM-T70II-DT,TM-T88V-DT
TMシリーズ TM-H5000II,TM-H6000II,TM-H6000III,TM-H6000IV,TM-J2000,TM-J2100,TM-L60II,TM-L90 オートカッターモデル,TM-L90 ピーラーモデル,TM-T20,TM-T20II,TM-T285,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,TM-m10,TM-m30
FAQ改善アンケート

このページの評価をお聞かせください。〇✖をお選びください。

 

■役に立った
■役に立たなかった