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 }
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); }
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 }
/* * 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); }
/* * 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); }
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 }
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); }