Delen via


LineDisplay-voorbeeld (POS voor .NET v1.14 SDK-documentatie)

De LineDisplayBase klasse is een relatief dunne abstractielaag in vergelijking met andere serviceobjectbasisklassen. Er is weinig code nodig tussen de toepassing en het fysieke apparaat. Het LineDisplay serviceobject hoeft alleen maar te adverteren welke functies het fysieke apparaat ondersteunt en de uitvoer ervan te wijzigen op basis van de weergave-eigenschappen die de toepassing heeft ingesteld.

Een LineDisplay-serviceobject kan ook het apparaat bewaken en stroom of andere statuswijzigingen aan de toepassing rapporteren met behulp van een StatusUpdateEvent. U kunt dit doen met behulp van de wachtrijmethoden of bijvoorbeeld met behulp van de functies voor energierapportage in PosCommon. Als u het apparaat op deze manier bewaakt, moet u over het algemeen een nieuwe thread starten om te wachten op hardware-gebeurtenissen en de juiste StatusUpdateEvent in de wachtrij plaatsen. Een LineDisplay-serviceobject kan ook DirectIOEvents naar de toepassing verzenden.

De LineDisplay-klasse en -kenmerken implementeren

  1. Voeg using-instructies toe voor de naamruimten Microsoft.PointOfService en Microsoft.PointOfService.BaseServiceObject .

  2. Voeg het algemene kenmerk PosAssemblyAttribute toe, zodat PosExplorer dit herkent als een Microsoft Point of Service voor .NET-assembly (POS voor .NET).

  3. Maak een nieuwe klasse die is afgeleid van LineDisplayBase.

  4. Voeg het kenmerk ServiceObjectAttribute op klasseniveau toe aan uw nieuwe klasse, zodat PosExplorer dit herkent als een serviceobject.

Abstracte LineDisplayBase-leden implementeren

  1. Alle LineDisplay-serviceobjecten moeten ten minste één schermmodus ondersteunen. Als u de toepassing specifieke informatie wilt geven over de ondersteunde schermmodi, implementeert u de abstracte eigenschap LineDisplayScreenModes.

  2. Minimaal moeten alle LineDisplay-serviceobjecten worden geïmplementeerd om tekens weer te geven DisplayData(Cell[]) op het uitvoerapparaat.

Aanvullende mogelijkheden

Stel mogelijkheidseigenschappen in uw serviceobject in om ondersteuning voor de functies van uw apparaat te adverteren. In dit voorbeeld ziet u hoe u de functie LineDisplay knippert implementeert.

  1. Stel in de constructor de CapBlink eigenschap in op DisplayBlink.All of DisplayBlink.Each om aan te geven welke knippermodus dit serviceobject ondersteunt.

  2. Stel de eigenschap CapBlink in op trueom aan te geven dat de knippersnelheid door de toepassing kan worden ingesteld door aan te roepen BlinkRate.

  3. Houd rekening met deze en andere instellingen bij het implementeren van DisplayData.

Voorbeeld

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
    }
}

Zie ook

Meer informatie