共用方式為


隨插即用支援 (POS for .NET v1.14 SDK 文件)

POS for .NET 完全支援 Windows Embedded 隨插即用 技術。 為了利用這項功能,物件服務開發人員可以直接將一或多個 HardwareId 屬性新增至其程式碼,或在隨插即用 XML 設定檔中包含硬體參考。

將這個屬性新增至服務物件,可協助應用程式開發人員,他們現在會知道當他們用 PosExplorer 來取得服務物件清單時,該清單中的任何服務物件都會與正常運作的 POS 裝置相關聯。 應用程式可透過更高的可靠性和使用便利性從此關聯獲益。 建議盡可能支援服務物件隨插即用功能。

隨插即用行為

一旦服務物件與 POS 裝置的硬體識別碼相關聯,POS for .NET 會使用 Windows 隨插即用管理員來判斷哪些 POS 裝置連線到電腦。 應用程式或服務物件不需要任何其他程式碼。

當應用程式叫用 PosExplorer.GetDevices 方法時,PosExplorer 會尋找與每個隨插即用服務物件相關聯的裝置,然後查詢 Windows 隨插即用管理員來判斷裝置的狀態。 如果裝置無法使用,將不會新增至從 PosExplorer.GetDevices 傳回至應用程式的裝置清單。

PosExplorer 服務物件篩選

PosExplorer 能夠在應用程式呼叫 PosExplorer.GetDevices 時有效地篩選隨插即用服務物件清單。 篩選流程的運作方式如下︰

  1. 在指定 POS for .NET 中搜尋目錄的所有組件。
  2. 如果組件未以 PosAssembly 全域屬性標示,則會捨棄。
  3. 搜尋標示 ServiceObject 屬性的類別。 針對每一項該類別:
    1. 尋找與此類別相關聯的硬體識別碼,做為 HardwareId 屬性,或在隨插即用 XML 設定檔內尋找。 如果沒有硬體識別碼,請將服務物件保留在 PosExplorer 清單中。
    2. 如果有硬體識別碼,則會查詢 Windows 以擷取裝置的狀態。 如果裝置已連結至電腦,請保留在 PosExplorer 清單中。
    3. 如果裝置未連結至電腦,請從 PosExplorer 清單中移除。

範例

下列程式碼範例示範處理隨插即用事件的簡單方法。 PosExplorer 所產生的資訊可用來具現化正確的裝置,在此案例中為磁條讀取器 (MSR)。

// Connect the Plug and Play events to detect the removal or
// connection of a new device.
   explorer.DeviceAddedEvent += new
         DeviceChangedEventHandler(explorer_DeviceAddedEvent);
   explorer.DeviceRemovedEvent += new
         DeviceChangedEventHandler(explorer_DeviceRemovedEvent);

// This event handler extends Plug and Play functionality to the MSR
// device type. A message is printed to the console if the connection
// is successful.
void explorer_DeviceAddedEvent(object sender, DeviceChangedEventArgs e)
{

   // Checks if the newly added device is an MSR.
   if (e.Device.Type == DeviceType.Msr)
   {

      // Checks if an MSR instance has already been created and,
      // if not,creates one. If a new MSR instance is created, its
      // name is recorded in a string and written to the console.
      // Once the printing is finished, the MSR is closed.
      if (msr == null)
      {
         CreateMsr(e.Device);
         strMsrConfig = e.Device.ServiceObjectName;
         Console.WriteLine(strMsrConfig);
         // It is important that applications close all open
         // Service Objects before terminating.
         msr.Close();
      }
   }
}

另請參閱

工作

參考

概念

其他資源