|
-
-
イベントハンドラ内で、アプリケーションはプロパティにアクセスしたり、メソッドの呼び出しをおこなえます。
ただし、ReleaseDeviceメソッドやCloseメソッドをイベントハンドラ内から呼び出してはなりません。
正常に動作しなくなる原因となります。
OPOSはイベントを使用してOPOSコントロールでの様々な動作や変化をアプリケーションに通知します。
イベントには以下の 5つがあります。
- DataEvent:
入力デバイスからデータが送信されてきたときに通知します。
入力データがデバイスクラス固有のプロパティに格納されています。
- ErrorEvent:
イベント駆動入力中または非同期出力中にエラーが発生したときに通知します。
- StatusUpdateEvent:
デバイスの状態(ステータス)変化を通知します。
- OutputCompleteEvent:
非同期出力が正常に完了したときに通知します。
- DirectIOEvent:
このイベントは、サービス オブジェクトの提供元によって定義され、独自のものを提供します。
これらのイベント内にて、ReleaseDeviceメソッドやCloseメソッドは使用できません。
ReleaseDeviceメソッドはイベントハンドリング(イベントを通知させるスレッドを含んでいる)を閉鎖してしまい、Closeは戻る前にイベントハンドリングを閉鎖しなければならないためです。
これらの内容は「OPOS 技術協議会 仕様書」を抜粋しています。
「OPOS 技術協議会 仕様書」は こちら から参照することができます。
イベント内にて、ReleaseDevice メソッドや Close メソッドが処理として含まれていないか確認してください。
また、イベント呼び出し時にデバイスクラスを解放(ReleaseDevice / Close メソッドの実行)させる方法はありません。
次のような処理を実行することが禁止されています。
例)Visual C++
//エラーイベント処理
void CPrinterDlg::OnErrorEventPosprinter1(long ResultCode,
long ResultCodeExtended,
long ErrorLocus,
long FAR* pErrorResponse)
{
long lRet;
CString sRC;
CString sRCE;
sRC.Format("ResultCode = %ld\n", ResultCode );
sRCE.Format("ResultCodeExtended = %ld\n", ResultCodeExtended );
lRet = MessageBox(
"Printer Error.\n\n" + sRC + sRCE,
"ErrorEvent",
MB_ICONINFORMATION | MB_RETRYCANCEL );
if( lRet == IDCANCEL )
{
*pErrorResponse = OPOS_ER_CLEAR;
}
//デバイスキャンセル
m_Ptr1.SetDeviceEnabled( FALSE );
//デバイス解放の実行
m_Ptr1.ReleaseDevice();
//デバイス使用の終了
m_Ptr1.Close();
}
|
SASPORTシリーズ |
SASPORT ARCX,SASPORT Cubie,SASPORT CubieII,SASPORT CubieIII,SASPORT MR,SASPORT URBAN,SASPORT URBANII |
モバイルプリンター |
TM-P20,TM-P60II |
PC一体型プリンター |
TM-T70II-DT,TM-T88V-DT |
キャッシュドロアー |
DLA-58EDIII,DM-Z100,DM-Z400,DMA-48EDIII,DSA-35EDIII |
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 |
|