Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Třída LineDisplayBase je poměrně dynamická abstrakce ve srovnání s jinými třídami Service Object Base – mezi aplikací a fyzickým zařízením je potřeba málo kódu. LineDisplay Objekt služby jednoduše potřebuje inzerovat funkce, které fyzické zařízení podporuje, a upravit jeho výstup podle vlastností zobrazení, které aplikace nastavila.
Objekt služby LineDisplay může také monitorovat výkon zařízení a hlásit změny stavu nebo jiné změny stavu zpět do aplikace pomocí StatusUpdateEvent. To lze provést pomocí metod fronty nebo například pomocí funkcí generování sestav výkonu v PosCommon. Monitorování zařízení tímto způsobem obvykle vyžaduje spuštění nového vlákna, které bude čekat na hardwarové události a zařadí odpovídající StavUpdateEvent do fronty. Objekt služby LineDisplay může také odesílat directIOEvents do aplikace.
Implementace třídy a atributů LineDisplay
Přidejte direktivy using pro obory názvů Microsoft.PointOfService a Microsoft.PointOfService.BaseServiceObject .
Přidejte globální atribut PosAssemblyAttribute , aby nástroj PosExplorer ho rozpoznal jako sestavení Microsoft Point of Service for .NET (POS pro .NET).
Vytvořte novou třídu, která je odvozena z LineDisplayBase.
Přidejte atribut ServiceObjectAttribute na úrovni třídy do nové třídy, aby ho PosExplorer rozpoznal jako objekt služby.
Implementace abstraktních členů LineDisplayBase
Všechny objekty služby LineDisplay musí podporovat alespoň jeden režim obrazovky. Chcete-li aplikaci poskytnout specifika o podporovaných režimech obrazovky, implementujte abstraktní vlastnost LineDisplayScreenModes.
Minimálně všechny objekty služby LineDisplay musí implementovat DisplayData(Cell[]) , aby zobrazovaly znaky na výstupním zařízení.
Další možnosti
Nastavte vlastnosti schopností v objektu služby a inzerujte podporu funkcí vašeho zařízení. Tato ukázka ukazuje, jak implementovat funkci blink LineDisplay .
Implementace funkce blikáku
V konstruktoru CapBlink nastavte vlastnost buď DisplayBlink.All , nebo DisplayBlink.Each označující, který blikající režim, který tento objekt služby podporuje.
Nastavte CapBlink vlastnost true označující, že blink rychlost může být nastavena aplikací voláním BlinkRate.
Při implementaci DisplayData vezměte v úvahu tato a další nastavení.
Příklad
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.PointOfService;
using Microsoft.PointOfService.BaseServiceObjects;
[assembly: PosAssembly("Service Object Contractors, Inc.")]
namespace SOSample.LineDisplay
{
[ServiceObject(
DeviceType.LineDisplay,
"SampleLineDisplay",
"Sample LineDisplay Service Object",
1,
9)]
public class SampleLineDisplay : LineDisplayBase
{
SampleLineDisplay()
{
// The CapBlink property is initially set to
// DisplayBlink.None in LineDisplayBase. This property
// will be set here to indicate what mode of blinking
// text our Service Object can support.
Properties.CapBlink = DisplayBlink.All;
// Set the CapBlinkRate property to true to indicate
// that this device has the ability to change the
// rate at which it blinks by setting the property
// BlinkRate.
Properties.CapBlinkRate = true;
}
#region Implement Abstract LineDisplayBase Members
// LineDisplayScreenMode must be implemented to
// allow the application to find out which screen modes
// are supported by this device.
protected override LineDisplayScreenMode[]
LineDisplayScreenModes
{
get
{
LineDisplayScreenMode[] SupportedModes;
// Create a LineDisplayScreenMode object; this SO
// has a screen mode 10 columns wide and 2 rows deep.
LineDisplayScreenMode mode =
new LineDisplayScreenMode(10, 2, 0, 0);
// Allocate space for our screen mode array and
// initialize it to hold our supported screen
// mode(s).
SupportedModes =
new LineDisplayScreenMode[] { mode };
return SupportedModes;
}
}
// DisplayData is the method called from the application
// specifying what data should be displayed on the
// device.
protected override void DisplayData(Cell[] cells)
{
// Your code here:
// Send the data to your device. Take settings such
// as blink and blink rate into account here.
return;
}
#endregion Implement Abstract LineDisplayBase Members
#region Implement Abstract PosCommon Members
private string MyHealthText = "";
// PosCommon.CheckHealthText.
public override string CheckHealthText
{
get
{
// VerifyState(mustBeClaimed,
// mustBeEnabled).
VerifyState(false, false);
return MyHealthText;
}
}
// PosCommon.CheckHealth.
public override string CheckHealth(
HealthCheckLevel level)
{
// Verify that the 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;
}
// PosCommon.DirectIOData.
public override DirectIOData DirectIO(
int command,
int data,
object obj)
{
// Verify that the device is open.
VerifyState(false, false);
return new DirectIOData(data, obj);
}
#endregion Abstract PosCommon Members
}
}