이전 항목에서는 플러그 앤 플레이 지원을 통해 기본 서비스 개체 템플릿을 만드는 방법을 설명했습니다. 이 섹션에서는 다음과 같은 새로운 기능을 사용하여 제한된 샘플을 만드는 방법을 추가합니다.
- 샘플이 성공적으로 컴파일되도록 필요한 추상 메서드가 구현됩니다.
- 서비스 개체는 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 값은 일반적으로 지역화된 문자열 리소스 파일에서 읽습니다.
참고 항목
작업
개념
기타 리소스
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET