//Executes when a new notificaiton is recieved from the reader. public void OnNewNotification(int iError, string ip, uint portNr) { string EhConnectionString = "Endpoint=sb://smartshelfevents.servicebus.windows.net/;SharedAccessKeyName=staffshop;SharedAccessKey=+BtMcawis6KzoR9BoJX4t/5j/vxPGxvJi2q6gYPLZfo=;EntityPath=staffshopshelves"; string EhEntityPath = "staffshopshelves"; var connectionStringBuilder = new EventHubsConnectionStringBuilder(EhConnectionString) { EntityPath = EhEntityPath }; EventHubClient eventHubClient = EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString()); //Get Array of BRM Items from BRM Table in reader object FedmBrmTableItem[] tagReads = (_reader.GetTable(FedmIscReaderConst.BRM_TABLE) as FedmBrmTableItem[]); //setup tagevent class var tagEvent = new ShelfEvent(); if (tagReads != null && tagReads.Length > 0) { Console.WriteLine($"------------------------"); Console.WriteLine($"New Notifiaiton Recieved"); foreach (FedmBrmTableItem item in tagReads) { Console.WriteLine($"Tag ID: {item.GetUid()}"); tagEvent.UID = item.GetUid(); //Check if Time Information is present if (item.isTimer) { FeIscReaderTime timer = item.GetReaderTime(); int ms = (timer.MilliSecond % 1000); int second = (timer.MilliSecond - ms) / 1000; Console.WriteLine($"Time: {timer.Year}-{timer.Month}-{timer.Day}T{timer.Hour}:{timer.Minute}:{second}:{ms}"); tagEvent.EventTime = timer.Hour + ":" + timer.Minute + ":" + second + ":" + ms; } Console.Write($"Antenna Values: "); //Check if RSSI Data is available (this includes the antenna port number on the MUX if (item.isRSSI) { foreach (var rssi in item.GetRSSI()) { Console.Write($"{rssi.Value.antennaNumber} "); tagEvent.Antenna = rssi.Value.antennaNumber.ToString(); tagEvent.RSSI = rssi.Value.RSSI.ToString(); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine($"End of Notification"); Console.WriteLine($"-------------------"); Console.WriteLine(); var line = JsonConvert.SerializeObject(tagEvent); eventHubClient.SendAsync(new EventData(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(tagEvent)))); } } }
/*****************************Methods from interface FedmTaskListener*******************/ public void OnNewNotification(int iError, string IP, uint PortNr) { int i; FedmBrmTableItem[] brmItems; brmItems = (FedmBrmTableItem[])reader.GetTable(FedmIscReaderConst.BRM_TABLE); //declaration from delegateobject DelegateDisplayRecSets DisplayRecSetMethod = new DelegateDisplayRecSets(DisplayRecSets); object[] obj = new object[11]; IAsyncResult result; if (brmItems == null) { return; } string[] serialnumber = new string[brmItems.Length]; string[] dataBlock = new string[brmItems.Length]; string[] date = new string[brmItems.Length]; string[] time = new string[brmItems.Length]; byte[] type = new byte[brmItems.Length]; byte[] antennaNr = new byte[brmItems.Length]; byte[] input = new byte[brmItems.Length]; byte[] state = new byte[brmItems.Length]; byte[] dbsize = new byte[brmItems.Length]; Dictionary <byte, FedmIscRssiItem>[] dicRSSI = new Dictionary <byte, FedmIscRssiItem> [brmItems.Length]; long dbn; byte dbadr; string db; for (i = 0; i < brmItems.Length; i++) { // serial number if (brmItems[i].IsDataValid(FedmIscReaderConst.DATA_SNR)) { brmItems[i].GetData(FedmIscReaderConst.DATA_SNR, out serialnumber[i]); } // data blocks if (brmItems[i].IsDataValid(FedmIscReaderConst.DATA_RxDB)) { brmItems[i].GetData(FedmIscReaderConst.DATA_DBN, out dbn); brmItems[i].GetData(FedmIscReaderConst.DATA_DB_ADR, out dbadr); int j; for (j = dbadr; j < dbn; j++) { brmItems[i].GetData(FedmIscReaderConst.DATA_RxDB, j, out db); dataBlock[i] = dataBlock[i] + db + "\r\n" + "\t\t"; } } // Transponder Type if (brmItems[i].IsDataValid(FedmIscReaderConst.DATA_TRTYPE)) { brmItems[i].GetData(FedmIscReaderConst.DATA_TRTYPE, out type[i]); } // Date if (brmItems[i].IsDataValid(FedmIscReaderConst.DATA_DATE)) { date[i] = brmItems[i].GetReaderTime().GetDate(); } // Time if (brmItems[i].IsDataValid(FedmIscReaderConst.DATA_TIMER)) { time[i] = brmItems[i].GetReaderTime().GetTime(); } // Antenna number if (brmItems[i].IsDataValid(FedmIscReaderConst.DATA_ANT_NR)) { brmItems[i].GetData(FedmIscReaderConst.DATA_ANT_NR, out antennaNr[i]); } // RSSI value if (brmItems[i].IsDataValid(FedmIscReaderConst.DATA_ANT_RSSI)) { dicRSSI[i] = brmItems[i].GetRSSI(); } else { dicRSSI[i] = new Dictionary <byte, FedmIscRssiItem>(); } // Input if (brmItems[i].IsDataValid(FedmIscReaderConst.DATA_INPUT)) { brmItems[i].GetData(FedmIscReaderConst.DATA_INPUT, out input[i]); brmItems[i].GetData(FedmIscReaderConst.DATA_STATE, out state[i]); } } obj[0] = brmItems.Length; obj[1] = type; obj[2] = serialnumber; obj[3] = dataBlock; obj[4] = date; obj[5] = time; obj[6] = antennaNr; obj[7] = dicRSSI; obj[8] = input; obj[9] = state; obj[10] = IP; result = (IAsyncResult)Invoke(DisplayRecSetMethod, obj); }