Ejemplo n.º 1
0
        public async Task SetRealTimeInventoryParameters(RealtimeInventoryParams args = null)
        {
            if (args == null)
            {
                args = new RealtimeInventoryParams();
            }
            var responses = await SendReceive(CommandDataPacket.SetRealTimeInventoryParameters(args));

            responses.First().CheckSuccess();
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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;
                }
            }
        }
Ejemplo n.º 8
0
        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;
                }
            }
        }
Ejemplo n.º 9
0
        public async Task SetAntennaCheck(bool enable)
        {
            var responses = await SendReceive(CommandDataPacket.SetAntennaCheck(enable));

            responses.First().CheckSuccess();
        }
Ejemplo n.º 10
0
        public async Task SetAntennaConfiguration(GenAntennaConfiguration configuration)
        {
            var responses = await SendReceive(CommandDataPacket.SetAntennaConfiguration(configuration));

            responses.First().CheckSuccess();
        }
Ejemplo n.º 11
0
        public async Task SetEpcLengthForBufferOperations(EpcLength epcLength)
        {
            var responses = await SendReceive(CommandDataPacket.SetEpcLengthForBufferOperations(epcLength));

            responses.First().CheckSuccess();
        }
Ejemplo n.º 12
0
        public async Task <EpcLength> GetEpcLengthForBufferOperations()
        {
            var responses = await SendReceive(CommandDataPacket.GetEpcLengthForBufferOperations());

            return(responses.First().GetEpcLength());
        }
Ejemplo n.º 13
0
        public async Task <int> GetNumberOfTagsInBuffer()
        {
            var responses = await SendReceive(CommandDataPacket.GetNumberOfTagsInBuffer());

            return(responses.First().GetNumberOfTagsInBuffer());
        }
Ejemplo n.º 14
0
        /// <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();
        }
Ejemplo n.º 15
0
        /// <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();
        }