public void WriteByte(byte address, byte value)
        {
            byte[] writeBuffer = new byte[] { address |= RegisterAddressWriteMask, value };
            Debug.Assert(Rfm9XLoraModem != null);

            Rfm9XLoraModem.WriteBytes(writeBuffer);
        }
Esempio n. 2
0
        public void ReadPipe0RxAddressV0()
        {
            try
            {
                byte[] txBuffer;
                byte[] rxBuffer;
                byte[] replyBuffer;

                // Read the Address width
                txBuffer = new byte[] { SETUP_AW | R_REGISTER, 0x0 };

                //Console.WriteLine(" spiBus.WriteRead...SETUP_AW");
                //Console.WriteLine(" txBuffer:" + BitConverter.ToString(txBuffer));
                //rxBuffer = nrf24L01Device.WriteRead(txBuffer, (ushort)txBuffer.Length);
                //Console.WriteLine(" rxBuffer:" + BitConverter.ToString(rxBuffer));

                Console.WriteLine(" spiBus.ExchangeData...SETUP_AW");
                rxBuffer = new byte[txBuffer.Length];
                spiBus.ExchangeData(spiPeriphChipSelect, ChipSelectMode.ActiveLow, txBuffer, rxBuffer);
                Console.WriteLine(" rxBuffer:" + BitConverter.ToString(rxBuffer));

                // Extract then adjust the address width
                byte addressWidthValue = rxBuffer[1];
                addressWidthValue &= 0b00000011;
                addressWidthValue += 2;
                Console.WriteLine("Address width 0x{0:x2} - Value 0X{1:x2} - Bits {2} Value adjusted {3}", SETUP_AW, rxBuffer[1], Convert.ToString(rxBuffer[1], 2).PadLeft(8, '0'), addressWidthValue);

                // Write Pipe0 Receive address
                Console.WriteLine("Address write 1");
                txBuffer    = new byte[addressWidthValue + 1];
                txBuffer[0] = RX_ADDR_P0 | W_REGISTER;
                rxBuffer    = new byte[addressWidthValue + 1];
                Array.Copy(Encoding.UTF8.GetBytes("ZYXWV"), 0, txBuffer, 1, addressWidthValue);
                Console.WriteLine(" spiBus.Write...RX_ADDR_P0");
                Console.WriteLine(" txBuffer:" + BitConverter.ToString(txBuffer));
                nrf24L01Device.WriteBytes(txBuffer);
                //spiBus.ExchangeData(spiPeriphChipSelect, ChipSelectMode.ActiveLow, txBuffer, rxBuffer);
                Console.WriteLine(" spiBus.Write...RX_ADDR_P0");

                // Read Pipe0 Receive address
                Console.WriteLine("Address read 1");

                txBuffer    = new byte[addressWidthValue + 1];
                txBuffer[0] = RX_ADDR_P0 | R_REGISTER;
                Console.WriteLine(" spiBus.WriteRead...RX_ADDR_P0");
                Console.WriteLine(" txBuffer:" + BitConverter.ToString(txBuffer));
                //rxBuffer = nrf24L01Device.WriteRead(txBuffer, (ushort)txBuffer.Length);
                rxBuffer = new byte[addressWidthValue + 1];
                spiBus.ExchangeData(spiPeriphChipSelect, ChipSelectMode.ActiveLow, txBuffer, rxBuffer);
                Console.WriteLine(" spiBus.WriteRead...RX_ADDR_P0");
                Console.WriteLine("Address 0x{0:x2} - Value {1} Value {2}", RX_ADDR_P0, BitConverter.ToString(rxBuffer, 1), UTF8Encoding.UTF8.GetString(rxBuffer, 1, addressWidthValue));

                //Console.WriteLine(" rxBuffer:" + BitConverter.ToString(rxBuffer));


                // Extract the address from the rxBuffer
                //replyBuffer = new byte[addressWidthValue];
                //Array.Copy(rxBuffer, 1, replyBuffer, 0, addressWidthValue);
                //Console.WriteLine("Address 0x{0:x2} - Value {1} Value {2}", RX_ADDR_P0, BitConverter.ToString(replyBuffer), UTF8Encoding.UTF8.GetString(replyBuffer));

                /*
                 * // Read the RF Channel
                 * Console.WriteLine("Channel read 1");
                 * txBuffer = new byte[] { RF_CH | R_REGISTER, 0x0 };
                 * Console.WriteLine(" spiBus.WriteRead...RF_CH");
                 * Console.WriteLine(" txBuffer:" + BitConverter.ToString(txBuffer));
                 * //rxBuffer = nrf24L01Device.WriteRead(txBuffer, (ushort)txBuffer.Length);
                 * rxBuffer = new byte[4];
                 * spiBus.ExchangeData(spiPeriphChipSelect, ChipSelectMode.ActiveLow, txBuffer, rxBuffer);
                 * Console.WriteLine(" spiBus.WriteRead...RF_CH");
                 * Console.WriteLine(" rxBuffer:" + BitConverter.ToString(rxBuffer));
                 *
                 * ushort rfChannel1 = rxBuffer[1];
                 * rfChannel1 += 2400;
                 * Console.WriteLine("RF Channel 1 0x{0:x2} - Value 0X{1:x2} - Bits {2} Value adjusted {3}", RF_CH, rxBuffer[1], Convert.ToString(rxBuffer[1], 2).PadLeft(8, '0'), rfChannel1);
                 *
                 * // Write the RF Channel
                 * Console.WriteLine("Channel write");
                 * txBuffer = new byte[] { RF_CH | W_REGISTER, 0x12, 0x13, 0x14, 0x15 };
                 * Console.WriteLine(" spiBus.WriteRead...RF_CH");
                 * Console.WriteLine(" txBuffer:" + BitConverter.ToString(txBuffer));
                 * ChipEnable.State = false;
                 * Thread.Sleep(1000);
                 * nrf24L01Device.WriteRead(txBuffer, (ushort)txBuffer.Length);
                 * Thread.Sleep(1000);
                 * ChipEnable.State = true;
                 * Console.WriteLine(" spiBus.WriteRead...RF_CH");
                 *
                 * // Read the RF Channel
                 * Console.WriteLine("Channel read 2");
                 * txBuffer = new byte[] { RF_CH | R_REGISTER, 0x0 };
                 * Console.WriteLine(" spiBus.WriteRead...RF_CH");
                 * Console.WriteLine(" txBuffer:" + BitConverter.ToString(txBuffer));
                 * rxBuffer = nrf24L01Device.WriteRead(txBuffer, (ushort)txBuffer.Length);
                 * Console.WriteLine(" spiBus.WriteRead...RF_CH");
                 * Console.WriteLine(" rxBuffer:" + BitConverter.ToString(rxBuffer));
                 *
                 * ushort rfChannel2 = rxBuffer[1];
                 * rfChannel2 += 2400;
                 * Console.WriteLine("RF Channel 2 0x{0:x2} - Value 0X{1:x2} - Bits {2} Value adjusted {3}", RF_CH, rxBuffer[1], Convert.ToString(rxBuffer[1], 2).PadLeft(8, '0'), rfChannel2);
                 */
                Console.WriteLine("------");
            }
            catch (Exception ex)
            {
                Console.WriteLine("ReadDeviceIDDiy " + ex.Message);
            }
        }