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

製品別
質問別

URLをクリップボードにコピーしました
シェア用URL:https://faq2.epson.jp/web/Detail.aspx?id=31163
  FAQ番号:31163
OLE版と .NET版のエラー取得の違いについて<EPSON OPOS ADK シリーズ>
EPSON OPOS ADK ドライバー OCX対応版と.NET対応版では、エラー(例外)の取得に互換性はありますか?
 
 

EPSON OPOS ADK ドライバー OCX対応版では、ResultCode、ResultCodeExtended プロパティを使用して直前に実行されたメソッドか変更した書込み可能プロパティのステータス(結果)を取得することができました。
しかし.NET対応版では、この直前の実行結果を取得するためのプロパティはありません。

OCX対応版で使用されていた ResultCode、ResultCodeExtended プロパティと同様の動作をおこなう場合、.NET対応版では以下のようなプログラムコードになります。

 

Visual Basic 6.0(OCX対応版)

  '---------------------省略---------------------
  With OPOSPOSPrinter1
      .PrintNormal PTR_S_RECEIPT, "Hello OPOS!"
      If .ResultCode <> OPOS_SUCCESS Then
          pMSG = GetErrorMsg()
          MsgBox pMSG, vbExclamation
      End If
  End With
  '---------------------省略---------------------
  Function GetErrorMsg() As String
      Dim BF As String
      'イベント情報ごとにメッセージを作成する
      Select Case OPOSPOSPrinter1.ResultCodeExtended
      Case OPOS_EPTR_COVER_OPEN
          BF = "Printer cover is open."
      Case OPOS_EPTR_JRN_EMPTY
          BF = "No jurnal paper."
      Case OPOS_EPTR_REC_EMPTY
          BF = "No receipt paper."
      Case OPOS_EPTR_SLP_EMPTY
          BF = "No slip form."
      End Select
      GetErrorMsg = BF
  End Function
 

Visual Basic 2005(.NET対応版)

  '---------------------省略---------------------
  Try
   m_Printer.PrintNormal(PrinterStation.Receipt, "Hello OPOS!")
  Catch ex As PosControlException
      If ex.ErrorCode <> ErrorCode.Success Then
          Dim strMessage As String
          strMessage = GetErrorCode(ex)
          MessageBox.Show(strMessage, "Error")
      End If
  End Try
  '---------------------省略---------------------
  Private Function GetErrorCode(ByVal ex As PosControlException) As String
      Dim strErrorCodeEx As String = ""
      Select Case ex.ErrorCodeExtended
          Case PosPrinter.ExtendedErrorCoverOpen
                strErrorCodeEx = ex.Message
          Case PosPrinter.ExtendedErrorJournalEmpty
                strErrorCodeEx = ex.Message
          Case PosPrinter.ExtendedErrorReceiptEmpty
                strErrorCodeEx = ex.Message
          Case PosPrinter.ExtendedErrorSlipEmpty
                strErrorCodeEx = ex.Message
      End Select
      GetErrorCode = strErrorCodeEx
  End Function
 

.NET対応版は、Microsoft POS for .NET(.NET Framework)を基本として動作しています。
.NET Framework では、エラーが発生すると、システムまたは現在実行中のアプリケーションは、そのエラー(例外)に関する情報をスローします。(エラーの報告)
(問題が発生したコード領域から)スローされた例外は、アプリケーションが例外を処理するか、またはプログラムが終了するまで保持されます。

.NET Framework による開発では、あるブロックのアプリケーション コードの実行中に発生する例外を処理する場合は、そのコードを try ステートメントの内部に入れる必要があります。

  • .NET Framework では、例外は Exception クラスの継承オブジェクトです。
  • POSControlException などのクラス
    - 例外によって POS アプリケーションにエラー状態を伝達するために使用されます。
  • PosControlException などは、名前空間Microsoft.PointOfServiceで定義されています。

Microsoft POS for .NET の処理は同期と非同期の2つのタイプがあり、上記コードによるエラーの取得は主に同期処理のときに使用できます。

非同期処理を行っている最中にエラーが発生した場合、ErrorEventが通知され、イベントハンドラから処理の再試行を行うか、またはそれをクリアすることができます。
ErrorEventによって通知された例外の取得/処理を行うには、アプリケーションの開始時(またはフォームのロード時など)にErrorEventHandlerの追加とアプリケーションの終了時(フォームのクローズ時など)にErrorEventHandlerの削除を行う必要があります。

ErrorEventが通知された際の例外処理の方法については、弊社ドライバー:EPSON OPOS ADK for .NET に附属しているサンプルプログラム[Step 10]を参考にしてください。

SASPORTシリーズ SASPORT ARCX,SASPORT Cubie,SASPORT CubieII,SASPORT CubieIII,SASPORT MR,SASPORT URBAN,SASPORT URBANII
カスタマーディスプレイ DM-D110,DM-D120 (ARCX専用),DM-D210,DM-D500
モバイルプリンター TM-P20,TM-P60II
PC一体型プリンター TM-T70II-DT,TM-T88V-DT
キャッシュドロアー DLA-58EDIII,DM-Z100,DM-Z400,DMA-48EDIII,DSA-35EDIII
TMシリーズ TM-H5000II,TM-H6000II,TM-H6000III,TM-H6000IV,TM-L90 オートカッターモデル,TM-L90 ピーラーモデル,TM-T20,TM-T20II,TM-T70,TM-T70II,TM-T88III,TM-T88IIIX (ARCX搭載),TM-T88IV,TM-T88V,TM-T90,TM-T90II,TM-U220A,TM-U220B,TM-U220D,TM-U675,TM-U950
FAQ改善アンケート

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

 

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