Example #1
0
        //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))));
                }
            }
        }
Example #2
0
        /*****************************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);
        }