共用方式為


CashDrawer 實作 (POS for .NET v1.14 SDK 文件)

大部分的銷售點應用程式使用收銀機進行金融交易。 服務物件開發人員可以使用 Microsoft Point of Service for .NET (POS for .NET) 類別 CashDrawerBase,輕鬆實作符合 Unified Point of Service (UnifiedPOS) 規範的 CashDrawer 服務物件。

Capabilities

所有 CashDrawer 服務物件至少須具備開啟收銀機的能力。 達成此目的的方法是在您的服務物件類別中,實作抽象方法 CashDrawerBase.OpenDrawerImpl

此服務物件也可判斷收銀機是否開啟。 若服務物件具備此能力,應將 CapStatus 屬性設定為 true。 若 CapStatustrue,應用程式就能使用 DrawerOpened 屬性檢查裝置的狀態。 若 CapStatus,則 DrawerOpened 一律會設定為 false,而且任何將其設定為 true 的嘗試,都會產生例外狀況。

CapStatus 設定為 true,則服務物件也必須更新 DrawerOpened 屬性。 您應在服務物件的 OpenDrawerImpl 方法實作中執行此動作。 監視裝置狀態的背景執行緒,也能設定 DrawerOpened 屬性。

CashDrawer 事件

若服務物件的 CapStatus 屬性已設定 為 true, 則 CashDrawerBasic.DrawerOpened 會傳送 StatusUpdateEvent 給應用程式。

根據收銀機裝置和服務物件實作的不同,服務物件可能需要個別的執行緒來監視硬體的狀態,並以非同步方式回報任何變更。 例如,若操作員可以手動開啟收銀機,而且必須通知應用程式,就必須如此設計。

CashDrawer 服務物件也可能會傳送 DirectIOEvent 給應用程式。 DirectIOEvent 可用於傳送資給服務物件實作特有的應用程式,因此可能和一些應用程式不相容。 如需詳細資訊,請參閱裝置輸入與事件

裝置共用

收銀機是可以共用的裝置。 多個應用程式將能開啟、啟用及存取其所有屬性和方法。 然而一旦應用程式宣告了某部裝置,便只有該應用程式才能呼叫 CashDrawerBase.OpenDrawerCashDrawerBase.WaitForDrawerClose。 若其他應用程式嘗試呼叫這些方法,將會擲回包含 ErrorCode.ClaimedPosException

如有多個開啟中的應用程式啟用了裝置,則每個應用程式都會收到服務物件傳送的所有事件。

支援此功能所需的程式碼會在 POS for .NET CashDrawerBase 類別中進行實作。

多台收銀機

同一部電腦可能會連結多台收銀機,並使用相同的硬體連接埠。 在此情況下,CashDrawer 服務物件可能會知道其未特別連線的收銀機。 若服務物件可以區分其連線的收銀機裝置,便應將 CapStatusMultiDrawerDetect 屬性設定為 true。 此屬性的值會影響 DrawerOpened 屬性和 WaitForDrawerClose 方法的行為。

CapStatusMultiDrawerDetect 設定為 false,則 DrawerOpened true 值便表示至少有一台收銀機已開啟。 此應用程式無法判斷特定的收銀機是否開啟。

CapStatusMultiDrawerDetect 設定為 false,則方法 WaitForDrawerClose 會等候所有開啟中的收銀機關閉,才會返回應用程式。

另請參閱