Compartilhar via


Exemplo de LineDisplay (Documentação do SDK do POS para .NET v1.14)

A classe LineDisplayBase é uma camada de abstração relativamente fina quando comparada a outras classes Base de Objeto de Serviço — pouco código é necessário entre o aplicativo e o dispositivo físico. O Objeto de Serviço LineDisplay precisa apenas anunciar a quais recursos o dispositivo físico dá suporte e modificar sua saída de acordo com as propriedades de exibição definidas pelo aplicativo.

Um Objeto de Serviço LineDisplay também pode monitorar o dispositivo e relatar a energia ou outras alterações de status para o aplicativo usando um StatusUpdateEvent. Isso pode ser feito usando os métodos de Fila ou, por exemplo, usando os recursos de relatório de energia no PosCommon. Monitorar o dispositivo dessa maneira geralmente exigirá o início de um novo thread para aguardar eventos de hardware e enfileirar o StatusUpdateEvent apropriado. Um Objeto de Serviço LineDisplay também pode enviar DirectIOEvents para o aplicativo.

Para implementar a classe e os atributos LineDisplay

  1. Adicione diretivas using para os namespaces Microsoft.PointOfService, Microsoft.PointOfService.BaseServiceObject.

  2. Adicione o atributo global PosAssemblyAttribute para que PosExplorer o reconheça como um assembly do Ponto de Serviço da Microsoft para .NET (POS para .NET).

  3. Crie uma nova classe derivada de LineDisplayBase.

  4. Adicione o atributo de nível de classe ServiceObjectAttribute à nova classe para que PosExplorer o reconheça como um objeto de serviço.

Para implementar membros abstratos de LineDisplayBase

  1. Todos os Objetos de Serviço LineDisplay precisam dar suporte a pelo menos um modo de tela. Para fornecer ao aplicativo detalhes sobre os modos de tela com suporte, implemente a propriedade abstrata LineDisplayScreenModes.

  2. No mínimo, todos os Objetos de Serviço LineDisplay devem implementar DisplayData(Cell[]) para exibir caracteres no dispositivo de saída.

Recursos adicionais

Defina as propriedades de funcionalidade em seu Objeto de Serviço para anunciar o suporte para os recursos do dispositivo. Este exemplo demonstra como implementar o recurso de piscar de LineDisplay.

  1. No construtor, defina a propriedade CapBlink como DisplayBlink.All ou DisplayBlink.Each para indicar a qual modo de piscar esse Objeto de Serviço dá suporte.

  2. Defina a propriedade CapBlink como true, indicando que a taxa de piscar pode ser definida pelo aplicativo chamando BlinkRate.

  3. Leve essas e outras configurações em conta ao implementar DisplayData.

Exemplo

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

Consulte Também

Outros recursos