Esempio n. 1
0
        protected virtual bool SendCommand(byte cmd)
        {
#if NUSBIO2
            var r = new SPIResult();
            return(r.Succeeded);
#else
            return(this._spi.Transfer(new byte[] { cmd }.ToList()).Succeeded);
#endif
        }
Esempio n. 2
0
        public SPIResult WriteRow(int deviceIndex, int row, bool computeBufferOnly = false)
        {
            var r = new SPIResult();

            if (deviceIndex < 0 || deviceIndex >= _deviceCount)
            {
                return(r);
            }

            int offset = deviceIndex * MATRIX_ROW_SIZE;

            r = this.SpiTransfer(deviceIndex, (byte)(row + 1), _pixels[offset + row], computeBufferOnly: computeBufferOnly);
            return(r);
        }
Esempio n. 3
0
        private SPIResult __SpiTransferBuffer(List <byte> buffer, bool software = false)
        {
            var r = new SPIResult();

            BytesSentOutCounter += buffer.Count;
            if (this._spi.Write(buffer.ToArray()) == FtdiMpsseSPIResult.Ok)
            {
                return(r.Succeed());
            }
            else
            {
                return(r.Failed());
            }
        }
        public SPIResult SpiTransfer(List <byte> bytes, bool select = true, bool optimizeDataLine = false)
        {
#if NUSBIO2
            var r             = new SPIResult();
            var tmpReadBuffer = new byte[bytes.Count];
            var ok            = Nusbio2NAL.SPI_Helper_SingleReadWrite(bytes.ToArray(), tmpReadBuffer, bytes.Count);
            if (ok)
            {
                r.Buffer    = tmpReadBuffer.ToList();
                r.Succeeded = true;
            }
            return(r);
#else
            return(this._spi.Transfer(bytes, select, optimizeDataLine));
#endif
        }
Esempio n. 5
0
        /*
         * Set the number of digits (or rows) to be displayed.
         * See datasheet for sideeffects of the scanlimit on the brightness
         * of the Display.
         * Params :
         * devIndex	address of the Display to control
         * limit	number of digits to be displayed (1..8)
         */
        public bool SetScanLimit(int devIndex, int limit)
        {
            var r = new SPIResult();

            if (devIndex < 0 || devIndex >= _deviceCount)
            {
                return(r.Succeeded);
            }

            if (limit >= 0 && limit < 8)
            {
                r = this.SpiTransfer(devIndex, OP_SCANLIMIT, (byte)limit);
            }

            return(r.Succeeded);
        }
Esempio n. 6
0
        /*
         * Set the Shutdown (power saving) mode for the device
         * Params :
         * devIndex	The address of the Display to control
         * _pixels	If true the device goes into power-down mode. Set to false
         *		for normal operation.
         */
        public bool Shutdown(bool status, int devIndex = 0)
        {
            var r = new SPIResult();

            if (devIndex < 0 || devIndex >= _deviceCount)
            {
                return(r.Succeeded);
            }

            if (status)
            {
                r = this.SpiTransfer(devIndex, OP_SHUTDOWN, 0);
            }
            else
            {
                r = this.SpiTransfer(devIndex, OP_SHUTDOWN, 1);
            }

            return(r.Succeeded);
        }
Esempio n. 7
0
        private SPIResult SpiTransfer(List <byte> buffer, bool writeRead)
        {
#if NUSBIO2
            var r = new SPIResult();
            if (writeRead)
            {
                var tmpReadBuffer = new byte[buffer.Count];
                var ok            = Nusbio2NAL.SPI_Helper_SingleReadWrite(buffer.ToArray(), tmpReadBuffer, buffer.Count);
                if (ok)
                {
                    r.Buffer    = tmpReadBuffer.ToList();
                    r.Succeeded = true;
                }
            }
            else
            {
                r.Succeeded = Nusbio2NAL.SPI_Helper_Write(buffer.ToArray(), buffer.Count);
            }
            return(r);
#else
            return(this._spi.Transfer(buffer));
#endif
        }
Esempio n. 8
0
        private SPIResult SpiTransfer(int devIndex, byte opCode, byte data, bool software = false, bool computeBufferOnly = false)
        {
            SPIResult r                 = null;
            var       buffer            = new List <byte>(10);
            var       deviceToSkipFirst = this.DeviceCount - devIndex - 1;

            for (var d = 0; d < deviceToSkipFirst; d++)
            {
                buffer.Add(0); // OpCode
                buffer.Add(0); // Data
            }

            buffer.Add(opCode); // OpCode
            buffer.Add(data);   // Data

            var deviceToSkipAfter = this.DeviceCount - (this.DeviceCount - devIndex);

            for (var d = 0; d < deviceToSkipAfter; d++)
            {
                buffer.Add(0); // OpCode
                buffer.Add(0); // Data
            }

            if (computeBufferOnly)
            {
                r = new SPIResult()
                {
                    Succeeded = true
                };
                r.Buffer = buffer;
            }
            else
            {
                r = this.__SpiTransferBuffer(buffer, software);
            }
            return(r);
        }