Beispiel #1
0
        public async Task <TagReadResponse <int> > ReadTagIdAsync(CancellationToken token)
        {
            using var client    = new WebSocket(Server);
            using var onMessage = new AutoResetEvent(false);

            var message  = "READ";
            var response = new TagReadResponse <int[]>();

            client.Opened += (s, e) =>
            {
                client.Send(message);
            };

            client.MessageReceived += (s, e) =>
            {
                response = JsonConvert.DeserializeObject <TagReadResponse <int[]> >(e.Message);
                onMessage.Set();
            };

            client.Open();

            if (!onMessage.WaitOne(30000))
            {
                throw new TimeoutException("No tag recognized");
            }

            onMessage.Close();
            client.Close();

            return(response.GetTagUid());
        }
Beispiel #2
0
        public static TagReadResponse <int> GetTagUid(this TagReadResponse <int[]> response)
        {
            if (response == null)
            {
                throw new ArgumentNullException(nameof(response));
            }

            int id = 0;

            for (int i = 0; i < response.Data.Length; i++)
            {
                id += (int)Math.Pow(2, i) * response.Data[i];
            }

            return(new TagReadResponse <int>()
            {
                Method = response.Method,
                Data = id,
                Success = response.Success
            });
        }