다음을 통해 공유


플러그 앤 플레이 지원(.NET v1.14 SDK용 POS 설명서)

.NET용 POS는 Windows Embedded 플러그 앤 플레이 기술을 완벽하게 지원합니다. 이 기능을 활용하기 위해 서비스 개체 개발자는 코드에 하나 이상의 HardwareId 특성을 추가하거나 플러그 앤 플레이 XML 구성 파일에 하드웨어 참조를 포함할 수 있습니다.

서비스 개체에 이 특성을 추가하면 애플리케이션 개발자가 서비스 개체 목록을 가져오는 데 사용할 PosExplorer 때 해당 목록의 모든 서비스 개체가 작동하는 POS 디바이스와 연결된다는 사실을 알게 됩니다. 애플리케이션은 더 높은 안정성과 사용 편의성을 통해 이 연결에서 직접 이점을 얻을 수 있습니다. 서비스 개체는 가능한 한 플러그 앤 플레이 기능을 지원하는 것이 좋습니다.

플러그 앤 플레이 동작

서비스 개체가 POS 디바이스의 하드웨어 ID와 연결되면 .NET용 POS는 Windows 플러그 앤 플레이 관리자를 사용하여 컴퓨터에 연결된 POS 디바이스를 결정합니다. 애플리케이션 또는 서비스 개체에는 추가 코드가 필요하지 않습니다.

애플리케이션이 PosExplorer.GetDevices 메서드를 호출하면 PosExplorer 는 각 플러그 앤 플레이 서비스 개체와 연결된 디바이스를 찾은 다음 Windows 플러그 앤 플레이 관리자를 쿼리하여 디바이스의 상태를 확인합니다. 디바이스를 사용할 수 없는 경우 PosExplorer.GetDevices에서 애플리케이션으로 반환되는 디바이스 목록에 추가되지 않습니다.

PosExplorer 서비스 개체 필터링

PosExplorer 는 애플리케이션이 PosExplorer.GetDevices를 호출할 때 플러그 앤 플레이 서비스 개체 목록을 효과적으로 필터링할 수 있습니다. 필터링 프로세스는 다음과 같이 작동합니다.

  1. 지정된 POS에서 .NET 디렉터리에 대한 모든 어셈블리를 검색합니다.
  2. 어셈블리가 PosAssembly 전역 특성으로 표시되지 않으면 삭제합니다.
  3. ServiceObject 특성으로 표시된 클래스를 검색합니다. 이러한 각 클래스에 대해 다음을 수행합니다.
    1. 이 클래스와 연결된 하드웨어 ID를 특성 또는 HardwareId플러그 앤 플레이 XML 구성 파일 내에서 찾습니다. 하드웨어 ID가 없으면 서비스 개체를 PosExplorer 목록에 남겨 둡니다.
    2. 하드웨어 ID가 있는 경우 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();
      }
   }
}

또한 참조하십시오

업무

Reference

개념들

기타 리소스