대부분의 판매 시점 애플리케이션은 금융 거래에 금전등록기를 사용합니다. 서비스 개체 개발자는 Microsoft .NET용 POS(서비스 지점) 클래스 CashDrawerBase를 사용하여 UnifiedPOS(Unified Point Of Service) 규격 CashDrawer 서비스 개체를 쉽게 구현할 수 있습니다.
기능
모든 CashDrawer 서비스 개체는 최소한 금전등록기를 여는 기능을 지원해야 합니다. 이 작업은 서비스 개체 클래스에서 추상 메서드 CashDrawerBase.OpenDrawerImpl을 구현하여 수행됩니다.
서비스 개체는 금전등록기가 열려 있는지 여부를 확인할 수도 있습니다. 서비스 개체에 이 기능이 있는 경우 CapStatus 속성을 true로 설정해야 합니다. CapStatus가 true인 경우 애플리케이션은 DrawerOpened 속성을 사용하여 디바이스의 상태를 검사할 수 있습니다. CapStatus가 설정되지 않은 경우 DrawerOpened는 항상 false로 설정되고 true로 설정하려고 하면 예외가 생성됩니다.
CapStatus가 true로 설정된 경우 서비스 개체는 DrawerOpened 속성을 업데이트해야 합니다. 이 작업은 서비스 개체의 OpenDrawerImpl 메서드 구현에서 수행해야 합니다. 디바이스의 상태를 모니터링하는 백그라운드 스레드가 DrawerOpened 속성을 설정할 수도 있습니다.
CashDrawer 이벤트
서비스 개체가 CapStatus 속성을 true로 설정한 경우 CashDrawerBasic.DrawerOpened는 애플리케이션에 StatusUpdateEvent를 보냅니다.
금전등록기 디바이스 및 서비스 개체 구현에 따라 서비스 개체는 하드웨어의 상태를 모니터링하고 변경 내용을 비동기적으로 보고하기 위해 별도의 스레드가 필요할 수 있습니다. 예를 들어 운영자가 금전등록기를 수동으로 열 수 있고 애플리케이션이 알림을 받아야 하는 경우 이 작업이 필요합니다.
CashDrawer 서비스 개체는 애플리케이션에 DirectIOEvent를 보낼 수도 있습니다. DirectIOEvent는 서비스 개체 구현과 관련된 애플리케이션에 데이터를 보내는 데 사용되므로 일부 애플리케이션과 호환되지 않을 수 있습니다. 자세한 내용은 디바이스 입력 및 이벤트를 참조하세요.
디바이스 공유
금전등록기는 공유 가능한 디바이스입니다. 여러 애플리케이션이 모든 속성 및 메서드를 열고, 활성화하고, 액세스할 수 있습니다. 그러나 한 애플리케이션이 디바이스를 클레임한 후에는 해당 애플리케이션만 CashDrawerBase.OpenDrawer 또는 CashDrawerBase.WaitForDrawerClose를 호출할 수 있습니다. 다른 애플리케이션이 이러한 메서드를 호출하려고 하면 ErrorCode.Claimed가 있는 PosException이 throw됩니다.
둘 이상의 애플리케이션이 디바이스를 열고 활성화한 경우 각 애플리케이션은 서비스 개체에서 보낸 모든 이벤트를 수신합니다.
이 기능을 지원하는 데 필요한 코드는 .NET용 POS CashDrawerBase 클래스에서 구현됩니다.
여러 금전등록기
컴퓨터에 두 개 이상의 금전등록기를 연결하고 동일한 하드웨어 포트를 사용할 수 있습니다. 이러한 상황에서 CashDrawer 서비스 개체는 연결되지 않은 금전등록기를 알 수 있습니다. 서비스 개체가 연결된 금전등록기 디바이스를 구분할 수 있는 경우 CapStatusMultiDrawerDetect 속성을 true로 설정해야 합니다. 이 속성의 값은 DrawerOpened 속성 및 WaitForDrawerClose 메서드의 동작에 영향을 미칩니다.
CapStatusMultiDrawerDetect가 false로 설정된 경우 DrawerOpened 값이 true이면 하나 이상의 금전등록기가 열려 있음을 나타냅니다. 애플리케이션은 특정 금전등록기가 열려 있는지 여부를 확인할 수 없습니다.
CapStatusMultiDrawerDetect가 false로 설정된 경우 WaitForDrawerClose 메서드는 열려 있는 금전등록기가 모두 닫히기를 기다린 후 애플리케이션으로 돌아갑니다.
참고 항목
.NET