/// <summary>
            /// Opens a peripheral.
            /// </summary>
            /// <param name="peripheralName">Name of the peripheral.</param>
            /// <param name="peripheralConfig">Configuration parameters of the peripheral.</param>
            public void Open(string peripheralName, PeripheralConfiguration peripheralConfig)
            {
                if (this.oposSigCap == null)
                {
                    this.oposSigCap = new OPOSSigCap();

                    this.oposSigCap.DataEvent  += this.OnSigCapDataEvent;
                    this.oposSigCap.ErrorEvent += this.OnSigCapErrorEvent;

                    try
                    {
                        // Open
                        Task.Run(() => this.oposSigCap.Open(peripheralName)).Wait(OposHelper.ClaimTimeOut);
                        OposHelper.CheckResultCode(this, this.oposSigCap.ResultCode);

                        // Claim
                        this.oposSigCap.ClaimDevice(OposHelper.ClaimTimeOut);
                        OposHelper.CheckResultCode(this, this.oposSigCap.ResultCode);

                        // Configure
                        this.CapUserTerminated = this.oposSigCap.CapUserTerminated;
                        this.MaximumX          = this.oposSigCap.MaximumY;
                        this.MaximumY          = this.oposSigCap.MaximumY;
                    }
                    catch
                    {
                        this.Close();
                        throw;
                    }
                }

                // NOTE: Hardware station does not support "ReatlTimeDataEnabled" property.
            }
            /// <summary>
            /// Closes the peripheral.
            /// </summary>
            public void Close()
            {
                if (this.oposSigCap != null)
                {
                    try
                    {
                        this.oposSigCap.DataEvent  -= this.OnSigCapDataEvent;
                        this.oposSigCap.ErrorEvent -= this.OnSigCapErrorEvent;

                        this.oposSigCap.Close(); // Releases device and closes resources
                    }
                    finally
                    {
                        this.oposSigCap = null;
                    }
                }
            }