public void WriteByte(byte address, byte value) { byte[] writeBuffer = new byte[] { address |= RegisterAddressWriteMask, value }; Debug.Assert(Rfm9XLoraModem != null); Rfm9XLoraModem.WriteBytes(writeBuffer); }
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); } }