/// <summary> /// Gets byte data from the party system, read from the given memory address and register. /// </summary> /// <param name="slaveAddress">The slave's memory address and register</param> /// <param name="slaveRegister">The slave's register</param> /// <param name="bytesToRead">Number of bytes to read</param> /// <returns>An <see cref="I2CReply"/> object holding the data read</returns> public static I2CReply GetI2CReply(this ArduinoSession session, int slaveAddress, int slaveRegister, int bytesToRead) { session.ReadI2COnce(slaveAddress, slaveRegister, bytesToRead); //_awaitedMessagesQueue.Enqueue(new FirmataMessage(MessageType.I2CReply)); //return (I2CReply)((FirmataMessage)GetMessageFromQueue(new FirmataMessage(MessageType.I2CReply))).Value; return(session.GetMessageFromQueue <I2CReply>().Value); }
/// <summary> /// Asynchronously gets byte data from the party system, read from the given memory address and register. /// </summary> /// <param name="slaveAddress">The slave's memory address</param> /// <param name="slaveRegister">The slave's register</param> /// <param name="bytesToRead">Number of bytes to read</param> /// <returns>An awaitable <see cref="Task{I2cReply}"/> holding the data read</returns> public static async Task <I2CReply> GetI2CReplyAsync(this ArduinoSession session, int slaveAddress, int slaveRegister, int bytesToRead) { session.ReadI2COnce(slaveAddress, slaveRegister, bytesToRead); //_awaitedMessagesQueue.Enqueue(new FirmataMessage(MessageType.I2CReply)); //return await Task.Run(() => // (I2CReply)((FirmataMessage)GetMessageFromQueue(new FirmataMessage(MessageType.I2CReply))).Value); return(await Task.Run(() => session.GetMessageFromQueue <I2CReply>().Value).ConfigureAwait(false)); }