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()); }
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 }); }