コード例 #1
0
        private unsafe void Transfer(byte *writeBufferPtr, byte *readBufferPtr, int buffersLength)
        {
            var tr = new spi_ioc_transfer()
            {
                tx_buf        = (ulong)writeBufferPtr,
                rx_buf        = (ulong)readBufferPtr,
                len           = (uint)buffersLength,
                speed_hz      = _settings.ClockFrequency,
                bits_per_word = (byte)_settings.DataBitLength,
                delay_usecs   = 0,
            };

            int ret = ioctl(_deviceFileDescriptor, SPI_IOC_MESSAGE_1, new IntPtr(&tr));

            if (ret < 1)
            {
                throw Utils.CreateIOException("Error performing Spi data transfer", ret);
            }
        }
コード例 #2
0
        private unsafe void Transfer(byte *writeBufferPtr, byte *readBufferPtr, int buffersLength)
        {
            var tr = new spi_ioc_transfer()
            {
                tx_buf        = (ulong)writeBufferPtr,
                rx_buf        = (ulong)readBufferPtr,
                len           = (uint)buffersLength,
                speed_hz      = _speed,
                bits_per_word = 8,
                delay_usecs   = 0
            };

            int result = Interop.ioctl(_deviceFileDescriptor, SPI_IOC_MESSAGE_1, new IntPtr(&tr));

            if (result < 1)
            {
                throw new IOException($"Error {Marshal.GetLastWin32Error()} performing SPI data transfer.");
            }
        }