Exemple #1
0
        byte[] IPiGPIO.BSpiXfer(int gpioCS, byte[] txBuffer)
        {
            byte[]   rxBuffer = new byte[txBuffer.Length];
            GCHandle tx       = GCHandle.Alloc(tx, GCHandleType.Pinned);

            try
            {
                GCHandle rx = GCHandle.Alloc(rxBuffer, GCHandleType.Pinned);
                try
                {
                    short ret = PiGpioNativeMethods.bspiXfer((ushort)gpioCS, tx.AddrOfPinnedObject(), rx.AddrOfPinnedObject(), (ushort)txBuffer.Length);
                    if (ret < 0)
                    {
                        throw new PiGPIOException(ret);
                    }
                }
                finally
                {
                    rx.Free();
                }
            }
            finally
            {
                tx.Free();
            }
            return(rxBuffer);
        }