다음을 통해 공유


서비스 개체 샘플 만들기(.NET용 POS v1.14 SDK 설명서)

이전 항목에서는 플러그 앤 플레이 지원을 통해 기본 서비스 개체 템플릿을 만드는 방법을 설명했습니다. 이 섹션에서는 다음과 같은 새로운 기능을 사용하여 제한된 샘플을 만드는 방법을 추가합니다.

  • 샘플이 성공적으로 컴파일되도록 필요한 추상 메서드가 구현됩니다.
  • 서비스 개체는 PosExplorer를 사용하는 애플리케이션(예: SDK에 포함된 .NET용 POS 테스트 애플리케이션)에서 인식됩니다.
  • 애플리케이션은 이제 서비스 개체 또는 액세스 속성에서 메서드를 호출할 수 있지만 유용한 결과는 반환되지 않습니다.

요구 사항

이 샘플을 컴파일하려면 프로젝트에 올바른 참조 및 전역 특성이 있어야 합니다.

using System;
using Microsoft.PointOfService;
using Microsoft.PointOfService.BaseServiceObjects;

namespace Samples.ServiceObjects.MSR
{
    [HardwareId(@"HID\Vid_05e0&Pid_038a", @"HID\Vid_05e0&Pid_038a")]

    [ServiceObject(DeviceType.Msr,
        "SampleMsr",
        "Sample Msr Service Object",
        1,
        9)]
    public class SampleMsr : MsrBase
    {
        //  String returned from CheckHealth
        private string MyHealthText;

        public SampleMsr()
        {
            // Initialize device capability properties.
            Properties.CapIso = true;
            Properties.CapTransmitSentinels = true;
            Properties.DeviceDescription = "Sample MSR";

            // Initialize other class variables.
            MyHealthText = "";
        }

        ~SampleMsr()
        {
            Dispose(false);
        }

        // Release any resources managed by this object.
        protected override void Dispose(bool disposing)
        {
            try
            {
                // Your code here.
            }
            finally
            {
                // Must call base class Dispose.
                base.Dispose(disposing);
            }
        }

        #region PosCommon overrides
        // Returns the result of the last call to CheckHealth().
        public override string CheckHealthText
        {
            get
            {
                // MsrBasic.VerifyState(mustBeClaimed,
                // mustBeEnabled). This may throw an exception.
                VerifyState(false, false);

                return MyHealthText;
            }
        }

        public override string CheckHealth(
                    HealthCheckLevel level)
        {
            // Verify that device is open, claimed, and enabled.
            VerifyState(true, true);

            // Your code here:
            // check the health of the device and return a
            // descriptive string.

            // Cache result in the CheckHealthText property.
            MyHealthText = "Ok";
            return MyHealthText;
        }

        public override DirectIOData DirectIO(
                        int command,
                        int data,
                        object obj)
        {
            // Verify that device is open.
            VerifyState(false, false);

            return new DirectIOData(data, obj);
        }
        #endregion // PosCommon overrides

        #region MsrBasic Overrides
        protected override MsrFieldData ParseMsrFieldData(
                        byte[] track1Data,
                        byte[] track2Data,
                        byte[] track3Data,
                        byte[] track4Data,
                        CardType cardType)
        {
            // Your code here:
            // Implement this method to parse track data
            // into fields which will be returned as
            // properties to the application
            // (for example, FirstName,
            // AccountNumber, etc.)
            return new MsrFieldData();
        }

        protected override MsrTrackData ParseMsrTrackData(
                        byte[] track1Data,
                        byte[] track2Data,
                        byte[] track3Data,
                        byte[] track4Data,
                        CardType cardType)
        {

            // Your code here:
            // Implement this method to convert raw track data.
            return new MsrTrackData();
        }
        #endregion
    }
}

이 샘플을 간소화하기 위해 코드는 전역화 기능을 구현하지 않습니다. 예를 들어 Properties.DeviceDescription 값은 일반적으로 지역화된 문자열 리소스 파일에서 읽습니다.

참고 항목

작업

개념

기타 리소스