共用方式為


LineDisplay 範例 (POS for .NET 1.14 版 SDK 文件)

相較於其他服務物件基底類別,LineDisplayBase 類別是相對精簡的抽象層,應用程式與實體裝置之間不需要太多程式碼。 LineDisplay 服務物件只需要公告實體裝置所支援的功能,並根據應用程式設定的顯示屬性修改其輸出。

LineDisplay 服務物件也可以監視裝置,並使用 StatusUpdateEvent 向應用程式回報電源或其他狀態變更。 這可以使用 Queue 方法來完成,例如使用 PosCommon 中的電源報告功能。 以這種方式監視裝置通常需要啟動新的執行緒來等候硬體事件,並將適當的 StatusUpdateEvent 排入佇列。 LineDisplay 服務物件也可以將 DirectIOEvents 傳送至應用程式。

實作 LineDisplay 類別和屬性

  1. Microsoft.PointOfServiceMicrosoft.PointOfService.BaseServiceObject 命名空間新增 using 指示詞。

  2. 新增全域屬性 PosAssemblyAttribute,讓 PosExplorer 將此辨識為適用於 .NET 的 Microsoft 服務點 (POS for .NET) 組件。

  3. 建立衍生自 LineDisplayBase 的新類別。

  4. 將類別層級屬性 ServiceObjectAttribute 新增至新類別,讓 PosExplorer 將其辨識為服務物件。

實作抽象 LineDisplayBase 成員

  1. 所有 LineDisplay 服務物件都必須支援至少一個螢幕模式。 若要為應用程式提供有關支援螢幕模式的詳細資訊,請實作抽象屬性 LineDisplayScreenModes

  2. 所有 LineDisplay 服務物件至少都必須實作 DisplayData(Cell[]),才能在輸出裝置上顯示字元。

其他功能

在服務物件中設定功能屬性,以公告對裝置功能的支援。 此範例示範如何實作 LineDisplay 閃爍功能。

  1. 在建構函式中,將 CapBlink 屬性設定為 DisplayBlink.All 或 DisplayBlink.Each,以指出此服務物件支援的閃爍模式。

  2. 將 CapBlink 屬性設定為 true,表示應用程式可藉由呼叫 BlinkRate 來設定閃爍頻率。

  3. 實作 DisplayData 時,將這些和其他設定納入考慮。

範例

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

另請參閱

其他資源