Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La clase LineDisplayBase es una capa de abstracción relativamente delgada en comparación con otras clases base de objetos de servicio: se necesita poco código entre la aplicación y el dispositivo físico. El objeto de servicio LineDisplay simplemente debe anunciar qué características admite el dispositivo físico y modificar su salida según las propiedades de visualización que la aplicación ha establecido.
Un objeto de servicio LineDisplay también puede supervisar el dispositivo e informar sobre la alimentación u otros cambios de estado en la aplicación mediante un elemento StatusUpdateEvent. Esto se puede hacer mediante los métodos Queue o, por ejemplo, mediante las características de informes de alimentación de PosCommon. La supervisión del dispositivo de esta manera normalmente requerirá iniciar un nuevo subproceso para esperar eventos de hardware y poner en cola el elemento StatusUpdateEvent adecuado. Un objeto de servicio LineDisplay también puede enviar elementos DirectIOEvent a la aplicación.
Para implementar la clase LineDisplay y los atributos
Agregue directivas using para los espacios de nombres Microsoft.PointofService y Microsoft.PointOfService.BaseServiceObjects.
Agregue el atributo global PosAssemblyAttribute para que PosExplorer lo reconozca como un ensamblado de Microsoft Point of Service para .NET (POS para .NET).
Cree una nueva clase derivada de LineDisplayBase.
Agregue el atributo de nivel de clase ServiceObjectAttribute a la nueva clase para que PosExplorer lo reconozca como un objeto de servicio.
Para implementar miembros abstractos de LineDisplayBase
Todos los objetos de servicio LineDisplay deben admitir al menos un modo de pantalla. Para proporcionar a la aplicación detalles sobre los modos de pantalla admitidos, implemente la propiedad abstracta LineDisplayScreenModes.
Como mínimo, todos los objetos de servicio LineDisplay deben implementar DisplayData(Cell[]) para mostrar caracteres en el dispositivo de salida.
Funcionalidades adicionales
Establezca las propiedades de funcionalidad en el objeto de servicio para anunciar la compatibilidad con las características del dispositivo. En este ejemplo, se muestra cómo implementar la característica de parpadeo de LineDisplay.
Para implementar la característica de parpadeo
En el constructor, establezca la propiedad CapBlink en DisplayBlink.All o en DisplayBlink.Each para indicar qué modo de parpadeo admite este objeto de servicio.
Establezca la propiedad CapBlink en true, lo que indica que la aplicación puede establecer la velocidad de parpadeo mediante una llamada a BlinkRate.
Tenga en cuenta estas y otras opciones de configuración al implementar DisplayData.
Ejemplo
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
}
}