共用方式為


裝置輸出模型 (POS for .NET v1.14 SDK 文件)

統一服務點 (UnifiedPOS) 輸出模型包含兩種輸出類型:同步與非同步。 POS 裝置類型可能支援一或兩種類型,或兩種類型都不支援。

同步輸出

當應用程式利用裝置類型相關的同步方法來寫入輸出時,寫入作業會在呼叫方法的執行緒上執行。 服務物件需等到寫入作業完成或失敗才會傳回。

利用同步輸出很簡單,但如果無法相對快速地完成輸出,可能會影響應用程式效能。 服務物件開發人員應將此狀況納入考量。

非同步輸出

部分 POS 裝置類型支援非同步輸出。 在非同步輸出模型中,應用程式會呼叫服務物件,要求將資料輸出至裝置, 不過,不同於同步模型,服務物件絕不能等待寫入作業完成,而需盡快將控制權傳回應用程式。 當服務物件收到應用程式的要求時,應執行下列動作:

  • 如果實體裝置無法接收資料,服務物件應在記憶體中對裝置進行緩衝處理,直到裝置就緒為止。
  • OutputId 屬性設為此要求的識別碼,在未來傳送至應用程式的事件中使用。
  • 結果會盡快傳回。

屆時,服務物件必須等候裝置完成要求。 一般而言,此動作會透過受控於服務物件 (可監視硬體) 的獨立執行緒完成。 在要求順利完成之後,OutputCompleteEvent 事件 (當中的 OutputEventArgs.OutputId 設為先前指定的識別碼) 會排入傳遞至應用程式的佇列。

服務物件受控佇列

POS for .NET 的 類別庫提供非同步輸出支援,對於幾乎所有的服務物件案例來說已足夠。

不過,在部分情況下,服務物件開發人員可能需實作他們自己的非同步輸出處理方法。 主要案例是針對支援硬體列印佇列裝置提供支援。 在這個情況下,服務物件會將 UseExternalPrintQueue 設為 true,覆寫 PreQueuePrintData 方法,並實作他們自己的佇列機制。

UseExternalPrintQueue 設為 trueBase 類別就不會再將列印要求新增至其內部的非同步佇列,因此服務物件開發人員可以他們需要的任何方式將資料排入佇列。 這個作業通常是透過裝置的硬體列印佇列功能完成。 Base 類別仍會預先驗證相同的列印要求,但不會進行任何額外處理。

在這些情況下,服務物件會負責下列事項:

  • 實作自己的佇列邏輯。
  • 針對成功的作業傳送 StatusUpdateEvents
  • 針對失敗的非同步作業傳送 ErrorEvents,並處理重試作業。
  • 更新狀態屬性。
  • UnifiedPOS 規格所定義的其他所有非同步作業。

另請參閱

工作

其他資源