示例#1
0
        /// <summary>
        /// Dispose this instance and release managed resources.
        /// </summary>
        /// <param name="disposing">
        /// If set to <c>true</c> disposing and not finalizing.
        /// </param>
        private void Dispose(Boolean disposing)
        {
            if (this._isDisposed)
            {
                return;
            }

            if (this._registerSelectPort != null)
            {
                this._registerSelectPort.Dispose();
                this._registerSelectPort = null;
            }

            if (this._readWritePort != null)
            {
                this._readWritePort.Dispose();
                this._readWritePort = null;
            }

            if (this._enablePort != null)
            {
                this._enablePort.Dispose();
                this._enablePort = null;
            }

            if ((this._dataPorts != null) && (this._dataPorts.Length > 0))
            {
                for (Int32 i = 0; i < 8; i++)
                {
                    if (this._dataPorts[i] != null)
                    {
                        this._dataPorts[i].Dispose();
                    }
                }
                Array.Clear(this._dataPorts, 0, this._dataPorts.Length);
            }

            if (disposing)
            {
                GC.SuppressFinalize(this);
            }
            this._isDisposed = true;
        }
示例#2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CyrusBuilt.MonoPi.LCD.GpioFileLcdTransferProvider"/>
        /// class with the mode, register select pin, read/write pin, enable
        /// pin, and data lines.
        /// </summary>
        /// <param name="fourBitMode">
        /// If set to true, then use 4 bit mode instead of 8 bit.
        /// </param>
        /// <param name="rs">
        /// The number of the CPU pin that is connected to the RS (Register Select)
        /// pin on the LCD.
        /// </param>
        /// <param name="rw">
        /// The number of the CPU pin that is connected to the RW (Read/Write)
        /// pin on the LCD.
        /// </param>
        /// <param name="enable">
        /// The number of the CPU pin that is connected to the enable pin on
        /// the LCD.
        /// </param>
        /// <param name="d0">
        /// Data line 0.
        /// </param>
        /// <param name="d1">
        /// Data line 1.
        /// </param>
        /// <param name="d2">
        /// Data line 2.
        /// </param>
        /// <param name="d3">
        /// Data line 3.
        /// </param>
        /// <param name="d4">
        /// Data line 4.
        /// </param>
        /// <param name="d5">
        /// Data line 5.
        /// </param>
        /// <param name="d6">
        /// Data line 6.
        /// </param>
        /// <param name="d7">
        /// Data line 7.
        /// </param>
        /// <remarks>
        /// The display can be controlled using 4 or 8 data lines. If the former,
        /// omit the pin numbers for d0 to d3 and leave those lines disconnected.
        /// The RW pin can be tied to ground instead of connected to a pin on the
        /// Arduino; If so, omit it from this constructor's parameters.
        /// </remarks>
        /// <exception cref="ArgumentException">
        /// <paramref name="rs"/> and <paramref name="enable"/> cannot be set to
        /// <see cref="GpioPins.GPIO_NONE"/>.
        /// </exception>
        public GpioFileLcdTransferProvider(Boolean fourBitMode, GpioPins rs, GpioPins rw, GpioPins enable,
                                           GpioPins d0, GpioPins d1, GpioPins d2, GpioPins d3, GpioPins d4,
                                           GpioPins d5, GpioPins d6, GpioPins d7)
        {
            this._fourBitMode = fourBitMode;
            if (rs == GpioPins.GPIO_NONE)
            {
                throw new ArgumentException("rs");
            }

            this._registerSelectPort = new GpioFile(rs, PinMode.OUT);
            this._registerSelectPort.Provision();

            // We can save 1 pin by not using RW. Indicate this by passing GpioPins.GPIO_NONE
            // instead of pin #.
            if (rw != GpioPins.GPIO_NONE)
            {
                this._readWritePort = new GpioFile(rw, PinMode.OUT);
                this._readWritePort.Provision();
            }

            if (enable == GpioPins.GPIO_NONE)
            {
                throw new ArgumentException("enable");
            }

            this._enablePort = new GpioFile(enable, PinMode.OUT);
            this._enablePort.Provision();

            GpioPins[] dataPins = { d0, d1, d2, d3, d4, d5, d6, d7 };
            this._dataPorts = new GpioFile[8];
            for (Int32 i = 0; i < 8; i++)
            {
                if (dataPins[i] != GpioPins.GPIO_NONE)
                {
                    this._dataPorts[i] = new GpioFile(dataPins[i], PinMode.OUT);
                    this._dataPorts[i].Provision();
                }
            }
        }