コード例 #1
0
ファイル: I2CSharedBus.cs プロジェクト: valoni/nf-companion
        /// <summary>
        /// Scan for devices on the I2C bus and populate the internal list. By default,
        /// the standard speed (100KHz) and shared bus mode is used
        /// </summary>
        /// <param name="startAddr">The I2C address to start scanning</param>
        /// <param name="endAddr">The I2C address to end scanning</param>
        /// <returns>Total devices found on the bus</returns>
        public int ScanDevicesOnBus(int startAddr, int endAddr)
        {
            if (startAddr < 0 || startAddr > 127 || startAddr > endAddr || endAddr > 127)
            {
                throw new ArgumentException("Invalid I2C address range");
            }

            byte[]            tempBuffer = new byte[8]; //why 8??
            I2cDevice         device     = null;
            I2cTransferStatus xferStatus = I2cTransferStatus.FullTransfer;

            for (int addr = startAddr; addr <= endAddr; addr++)
            {
                device = I2cDevice.FromId(_deviceSelector, new I2cConnectionSettings(addr)
                {
                    BusSpeed = I2cBusSpeed.StandardMode, SharingMode = I2cSharingMode.Shared
                });
                xferStatus = device.ReadPartial(tempBuffer).Status;
                if (xferStatus == I2cTransferStatus.FullTransfer || xferStatus == I2cTransferStatus.PartialTransfer)
                {
                    //we have a device...
                    _i2CDevices.Add(addr, device);
                }
            }
            return(_i2CDevices.Count);
        }
コード例 #2
0
ファイル: I2cScanner.cs プロジェクト: nattlip/TinyClrLib
        private static string DisplayStatus(I2cTransferStatus resStatus)
        {
            string str = "";

            switch (resStatus)
            {
            case I2cTransferStatus.FullTransfer:
                str = "FullTransfert";
                break;

            case I2cTransferStatus.PartialTransfer:
                str = "PartialTransfer";
                break;

            case I2cTransferStatus.SlaveAddressNotAcknowledged:
                str = "Slave NACK";
                break;
            }
            return(str);
        }
コード例 #3
0
 public I2CTransferException(string message, I2cTransferStatus transferStatus, Exception inner)
     : base(message, inner)
 {
 }
コード例 #4
0
 public I2CTransferException(string message, I2cTransferStatus transferStatus)
     : base(message)
 {
 }
コード例 #5
0
 public I2CTransferException(I2cTransferStatus transferStatus)
 {
 }
コード例 #6
0
 internal I2cTransferResult(I2cTransferStatus status, int bytesWritten, int bytesRead)
 {
     this.Status       = status;
     this.BytesWritten = bytesWritten;
     this.BytesRead    = bytesRead;
 }