示例#1
0
        /// <summary>
        /// 読み込み
        /// </summary>
        /// <returns>The read.</returns>
        /// <param name="buffer">読み取りデータの格納バッファ</param>
        /// <param name="offset">オフセット(インデックス)</param>
        /// <param name="count">読み取りデータバイト数</param>
        /// <returns>読み取りバイト数</returns>
        public Int32 Read(byte[] buffer, Int32 offset, Int32 count)
        {
            ArraySegment <byte> segment = new ArraySegment <byte>(buffer, offset, count);

            RPi.bcm2835_i2c_read(segment);
            return(count);
        }
示例#2
0
 /// <summary>
 /// 汎用:レジイスタ書き込み
 /// </summary>
 /// <param name="registerAddress">レジスタ アドレス</param>
 /// <param name="buffer">書き込むデータのバッファ</param>
 /// <param name="offset">オフセット(インデックス)</param>
 public void WriteRegister(byte registerAddress, byte[] buffer, int offset)
 {
     byte[] data = new byte[buffer.Length + 1];
     data[0] = registerAddress;
     Buffer.BlockCopy(buffer, offset, data, 1, buffer.Length);
     RPi.bcm2835_i2c_write(data);
 }
示例#3
0
        /// <summary>
        /// 廃棄
        /// </summary>
        /// <remarks>Call <see cref="Dispose"/> when you are finished using the <see cref="T:PiAccessLib.PiI2C"/>. The
        /// <see cref="Dispose"/> method leaves the <see cref="T:PiAccessLib.PiI2C"/> in an unusable state. After
        /// calling <see cref="Dispose"/>, you must release all references to the <see cref="T:PiAccessLib.PiI2C"/> so
        /// the garbage collector can reclaim the memory that the <see cref="T:PiAccessLib.PiI2C"/> was occupying.</remarks>
        public void Dispose()
        {
            if (IsUsed == false)
            {
                return;
            }

            RPi.bcm2835_i2c_end();

            IsUsed = false;
        }
示例#4
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="desiredFrequency">Desired frequency.</param>
        /// <param name="slaveAddress">Slave address.</param>
        public PiI2C(UInt32 desiredFrequency, byte slaveAddress)
        {
            if (IsUsed == true)
            {
                throw new InvalidOperationException("I2C is in used.");
            }

            RPi.bcm2835_i2c_begin(false, HighSpeedCore);
            Frequency = RPi.bcm2835_i2c_set_baudrate(desiredFrequency, HighSpeedCore);
            RPi.bcm2835_i2c_setSlaveAddress(slaveAddress);
        }
示例#5
0
        /// <summary>
        /// レジスタへの書き込み(非同期)
        /// </summary>
        /// <param name="registerAddress">レジスタ アドレス</param>
        /// <param name="writeData">書き込みデータ</param>
        /// <returns>タスク</returns>
        public Task WriteRegisterAsync(Byte registerAddress, Byte[] writeData)
        {
            return(Task.Run(() =>
            {
                byte[] data = new byte[writeData.Length + 1];
                data[0] = registerAddress;

                Buffer.BlockCopy(writeData, 0, data, 1, writeData.Length);
                RPi.bcm2835_i2c_write(data);
            }));
        }
示例#6
0
        /// <summary>
        /// レジスタからの読み込み(非同期)
        /// </summary>
        /// <param name="registerAddress">レジスタ アドレス</param>
        /// <param name="readByte">読み取りバイト数</param>
        /// <returns>タスク</returns>
        public Task <Byte[]> ReadRegisterAsync(Byte registerAddress, Int32 readByte)
        {
            return(Task.Run(() =>
            {
                Byte[] buffer = new byte[readByte];
                ArraySegment <byte> segment = new ArraySegment <byte>(buffer, 0, buffer.Length);
                RPi.bcm2835_i2c_read_register_rs(registerAddress, segment);

                return buffer;
            }));
        }
示例#7
0
        /// <summary>
        /// 書き込み
        /// </summary>
        /// <param name="buffer">書き込むデータのバッファ</param>
        /// <param name="offset">オフセット(インデックス)</param>
        public void Write(Byte[] buffer, Int32 offset)
        {
            ArraySegment <byte> segment = new ArraySegment <byte>(buffer, offset, buffer.Length);

            RPi.bcm2835_i2c_write(segment);
        }
示例#8
0
        /// <summary>
        /// 汎用:レジスタ読み込み
        /// </summary>
        /// <param name="registerAddress">レジスタ アドレス</param>
        /// <param name="buffer">読み取りデータの格納バッファ</param>
        /// <param name="offset">オフセット(インデックス)</param>
        /// <param name="count">読み取りデータバイト数</param>
        public void ReadRegister(byte registerAddress, byte[] buffer, int offset, int count)
        {
            ArraySegment <byte> segment = new ArraySegment <byte>(buffer, offset, count);

            RPi.bcm2835_i2c_read_register_rs(registerAddress, segment);
        }