public async Task SetRealTimeInventoryParameters(RealtimeInventoryParams args = null) { if (args == null) { args = new RealtimeInventoryParams(); } var responses = await SendReceive(CommandDataPacket.SetRealTimeInventoryParameters(args)); responses.First().CheckSuccess(); }
public async Task <TagInventoryResult> TagInventory(TagInventoryParams args = null) { if (args == null) { args = new TagInventoryParams(); } var responses = await SendReceive(CommandDataPacket.TagInventory(ReaderCommand.TagInventory, args)); return(new TagInventoryResult(responses)); }
public async Task <TagInventoryResult> TagInventoryWithMemoryBuffer(TagInventoryWithBufferParams args = null) { if (args == null) { args = new TagInventoryWithBufferParams(new TagInventoryOptionalParams(TimeSpan.FromMilliseconds(300))); } var responses = await SendReceive(CommandDataPacket.TagInventory(ReaderCommand.TagInventoryWithMemoryBuffer, args)); return(new TagInventoryResult(responses)); }
public void TagInventoryParams_should_serialize_as_example() { var res = CommandDataPacket.TagInventory(ReaderCommand.TagInventory, new TagInventoryParams { QValue = 4, OptionalParams = new TagInventoryOptionalParams(TimeSpan.FromMilliseconds(1100)) }).Serialize(); res.Should().Equal(SamplesData.TagInventoryRequest1); }
public void TagInventoryParamsWithBuffer_should_serialize_as_example() { var res = CommandDataPacket.TagInventory(ReaderCommand.TagInventoryWithMemoryBuffer, new TagInventoryParams { QValue = 4, Session = SessionValue.S1, OptionalParams = new TagInventoryOptionalParams(TimeSpan.FromMilliseconds(300)) }).Serialize(); res.Should().Equal(SamplesData.TagInventoryWithBufferRequest1); }
public void Get_reader_serial_packet_data() { var pk = new CommandDataPacket(ReaderCommand.GetReaderSerialNumber); var buf = pk.Serialize(); buf.Length.Should().Be(5); buf[0].Should().Be((byte)4); buf[1].Should().Be((byte)0); buf[2].Should().Be((byte)ReaderCommand.GetReaderSerialNumber); buf[3].Should().Be((byte)0x3a); buf[4].Should().Be((byte)0xd2); }
public async Task <IEnumerable <ResponseDataPacket> > SendReceive(CommandDataPacket command) { using (sendReceiveSemaphore.UseOnce()) { try { var port = streamFactory.DataStream; var buffer = command.Serialize(); await port.WriteAsync(buffer, 0, buffer.Length); var responsePackets = new List <ResponseDataPacket>(); ResponseDataPacket lastResponse; do { var packet = await MessageParser.ReadPacket(port); //TODO: Receive failures should be handled by reopening port. if (!packet.Success) { throw new ReceiveFailedException( $"Failed to read response from {streamFactory.Description} {packet.ResultType}"); } responsePackets.Add(lastResponse = new ResponseDataPacket(command.Command, packet.Data)); } while (MessageParser.ShouldReadMore(lastResponse)); return(responsePackets); } catch (ReceiveFailedException) { Dispose(); throw; } catch (NotSupportedException) { Dispose(); throw; } } }
public async Task <IEnumerable <ResponseDataPacket> > SendReceive(CommandDataPacket command) { using (sendReceiveSemaphore.UseOnce()) { try { var port = streamFactory.DataStream; var buffer = command.Serialize(); var sw = Stopwatch.StartNew(); await port.WriteAsync(buffer, 0, buffer.Length); var responsePackets = new List <ResponseDataPacket>(); ResponseDataPacket lastResponse; do { var packet = await MessageParser.ReadPacket(port, sw); sw = null; //TODO: Receive failures should be handled by reopening port. if (!packet.Success) { throw new ReceiveFailedException( $"Failed to read response from {streamFactory.Description} {packet.ResultType}"); } responsePackets.Add(lastResponse = new ResponseDataPacket(command.Command, packet.Data, elapsed: packet.Elapsed, errorsObserver: ThrowOnIllegalCommandError ? null : errors)); } while (MessageParser.ShouldReadMore(lastResponse)); return(responsePackets); } catch { Dispose(); throw; } } }
public async Task SetAntennaCheck(bool enable) { var responses = await SendReceive(CommandDataPacket.SetAntennaCheck(enable)); responses.First().CheckSuccess(); }
public async Task SetAntennaConfiguration(GenAntennaConfiguration configuration) { var responses = await SendReceive(CommandDataPacket.SetAntennaConfiguration(configuration)); responses.First().CheckSuccess(); }
public async Task SetEpcLengthForBufferOperations(EpcLength epcLength) { var responses = await SendReceive(CommandDataPacket.SetEpcLengthForBufferOperations(epcLength)); responses.First().CheckSuccess(); }
public async Task <EpcLength> GetEpcLengthForBufferOperations() { var responses = await SendReceive(CommandDataPacket.GetEpcLengthForBufferOperations()); return(responses.First().GetEpcLength()); }
public async Task <int> GetNumberOfTagsInBuffer() { var responses = await SendReceive(CommandDataPacket.GetNumberOfTagsInBuffer()); return(responses.First().GetNumberOfTagsInBuffer()); }
/// <summary> /// /// </summary> /// <param name="rfPower">Radio transmitter power in db. The range is determined by the reader and should be check in the specs. /// The reader my return error</param> /// <returns></returns> public async Task SetRFPower(byte rfPower) { var responses = await SendReceive(CommandDataPacket.SetRFPower(rfPower)); responses.First().CheckSuccess(); }
/// <summary> /// /// </summary> /// <param name="interval">Value is rounded to 100 ms, should be in 0 - 25500ms</param> /// <returns></returns> public async Task SetInventoryScanInterval(TimeSpan interval) { var responses = await SendReceive(CommandDataPacket.SetInventoryScanInterval(interval)); responses.First().CheckSuccess(); }