Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La classe LineDisplayBase est une couche d’abstraction relativement mince par rapport à d’autres classes Service Object Base. Peu de code est nécessaire entre l’application et l’appareil physique. L’objet de service LineDisplay doit simplement publier les fonctionnalités que l’appareil physique prend en charge et modifier sa sortie en fonction des propriétés d’affichage définies par l’application.
Un objet de service LineDisplay peut également surveiller l’appareil et signaler l’alimentation ou d’autres changements d’état à l’application à l’aide d’un StatusUpdateEvent. Pour ce faire, utilisez les méthodes File d’attente ou, par exemple, en utilisant les fonctionnalités de rapport d’alimentation dans PosCommon. Cette surveillance de l’appareil nécessite généralement le démarrage d’un nouveau thread pour attendre les événements matériels et mettre en file d’attente l’événement StatusUpdateEvent approprié. Un objet de service LineDisplay peut également envoyer DirectIOEvents à l’application.
Pour implémenter la classe et les attributs LineDisplay
Ajoutez des directives using pour les espaces de noms Microsoft.PointofService et Microsoft.PointOfService.BaseServiceObjects.
Ajoutez l’attribut PosAssemblyAttribute global afin que PosExplorer le reconnaisse en tant qu’assembly point de service Microsoft pour .NET (POS pour .NET).
Créez une classe dérivée de LineDisplayBase.
Ajoutez l’attribut ServiceObjectAttribute au niveau de la classe à votre nouvelle classe afin que PosExplorer le reconnaisse en tant qu’objet de service.
Pour implémenter des membres LineDisplayBase abstraits
Tous les objets de service LineDisplay doivent prendre en charge au moins un mode écran. Pour fournir à l’application des détails sur les modes d’écran pris en charge, implémentez la propriété LineDisplayScreenModes abstraite.
Au minimum, tous les objets de service LineDisplay doivent implémenter DisplayData(Cell[]) pour afficher des caractères sur l’appareil de sortie.
Fonctionnalités supplémentaires
Définissez les propriétés de fonctionnalité dans votre objet service pour publier la prise en charge des fonctionnalités de votre appareil. Cet exemple montre comment implémenter la fonctionnalité blink LineDisplay.
Pour implémenter la fonctionnalité de clignotement
Dans le constructeur, définissez la propriété CapBlink sur DisplayBlink.All ou DisplayBlink.Each pour indiquer le mode de clignotement pris en charge par cet objet de service.
Définissez la propriété CapBlink sur true, ce qui indique que le taux de clignotement peut être défini par l’application en appelant BlinkRate.
Prenez ces paramètres et d’autres en compte lors de l’implémentation de DisplayData.
Exemple
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
}
}