Exemple #1
0
        public void WriteRead(
            byte[] writeBuffer,
            int writeOffset,
            int writeLength,
            byte[] readBuffer,
            int readOffset,
            int readLength)
        {
            if (BusType == BME280BusType.I2C)
            {
                I2CDevice.WriteRead(
                    writeBuffer,
                    writeOffset,
                    writeLength,
                    readBuffer,
                    readOffset,
                    readLength);
            }
            else
            {
                var _bufferSize = writeLength + readLength;

                byte[] _readBuffer = new byte[_bufferSize];

                byte[] _writeBuffer = new byte[_bufferSize];

                Array.Copy(writeBuffer, writeOffset, _writeBuffer, 0, writeLength);

                SpiDevice.TransferFullDuplex(_writeBuffer, _readBuffer);

                Array.Copy(_readBuffer, writeLength, readBuffer, readOffset, readLength);
            }
        }
Exemple #2
0
        public byte[] ReadRegion(byte address, int length)
        {
            if (BusType == BME280BusType.I2C)
            {
                var readBuffer = new byte[length];

                var writeBuffer = new byte[] { address };

                I2CDevice.WriteRead(writeBuffer, readBuffer);

                return(readBuffer);
            }
            else
            {
                var bufferSize = length + 1;

                var txBuffer = new byte[bufferSize];

                txBuffer[0] = (byte)(address | 0x80);

                byte[] rxBuffer = new byte[txBuffer.Length];

                SpiDevice.TransferFullDuplex(txBuffer, rxBuffer);

                var output = new byte[length];

                Array.Copy(rxBuffer, 1, output, 0, output.Length);

                return(output);
            }
        }