Esempio n. 1
0
        /// <summary>
        /// Fills Excel with list os metatags of reader and other useful information about the reads process
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="oSheetData"></param>
        /// <param name="columnStart"></param>
        /// <param name="readerNum"></param>
        private static void FillExcelWithReaderInfo(UHFReader reader, Excel._Worksheet oSheetData, int columnStart, int readerNum)
        {
            if (reader == null)
            {
                return;
            }

            if (readerNum == 1)
            {
                /// format Reader 1 cells

                Excel.Range newRng = oSheetData.get_Range(String.Format("A1:E{0}", reader.MetaTagsDictionary.Count + 21));

                newRng.Interior.Color = Excel.XlRgbColor.rgbOrange;

                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle   = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle  = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).LineStyle    = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous;
            }
            else
            {
                /// format Reader 2 cells

                Excel.Range newRng = oSheetData.get_Range(String.Format("G1:K{0}", reader.MetaTagsDictionary.Count + 21));

                newRng.Interior.Color = Excel.XlRgbColor.rgbOrchid;

                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle   = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle  = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).LineStyle    = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous;
            }

            #region Initialize local vareables

            /// UHFReader Inventory counter
            UHFReaderInvCounter ric = reader.RIC;

            /// UHFReader Inventory parameters
            UHFReaderInvParams rip = reader.InvParams;

            /// List with MetaTags
            List <MetaTag> lmt = new List <MetaTag>();

            /// Dictionary that represents the line number on Excel for the EPC of this Reader
            /// Key => EPC
            /// Value => counter
            Dictionary <string, int> dic = new Dictionary <string, int>();

            /// Represents line number on Excel
            int counter = 1;

            #endregion

            foreach (string epc in reader.MetaTagsDictionary.Keys)
            {
                /// Add MetaTag
                lmt.Add(reader.MetaTagsDictionary[epc]);

                /// Add EPC with line number on Excel
                dic.Add(epc, counter++);
            }

            lmt.Sort();

            /// Reader line number on Excel
            int rcL = 1;

            oSheetData.Cells[rcL++, columnStart - 1] = String.Format("R{0}", readerNum);

            oSheetData.Cells[rcL++, columnStart] = String.Format("Frequency min: {0} MHz", reader.MinFrequency);
            oSheetData.Cells[rcL++, columnStart] = String.Format("Frequency Max: {0} MHz", reader.MaxFrequency);
            oSheetData.Cells[rcL++, columnStart] = String.Format("Power: {0} dBm", reader.PowerDbm);

            rcL++;

            oSheetData.Cells[rcL++, columnStart] = String.Format("Q: {0}", rip.QValue);
            oSheetData.Cells[rcL++, columnStart] = String.Format("S: {0}", rip.Session);
            oSheetData.Cells[rcL++, columnStart] = String.Format("T: {0}", rip.Target);
            oSheetData.Cells[rcL++, columnStart] = String.Format("Commute: {0}", rip.ConvertTagFlagWhenFailedReads);

            rcL++;

            oSheetData.Cells[rcL++, columnStart] = String.Format("Invs (no Tags): {0}", ric.invsWithoutTags);
            oSheetData.Cells[rcL++, columnStart] = String.Format("Invs (with Tags): {0}", ric.invsWithTags);

            /// Total number of Inventaries that were gotten by Reader
            int totalInvsReader = ric.invsWithoutTags + ric.invsWithTags;

            oSheetData.Cells[rcL++, columnStart] = String.Format("Invs (Total): {0} => {1:0.00}%/{2:0.00}%",
                                                                 totalInvsReader,
                                                                 (double)ric.invsWithTags / totalInvsReader * 100,
                                                                 (double)ric.invsWithoutTags / totalInvsReader * 100);

            rcL++;

            oSheetData.Cells[rcL++, columnStart] = String.Format("Nº tags: {0}", ric.numTagsFound);
            oSheetData.Cells[rcL++, columnStart] = String.Format("MIN tags: {0}", ric.numTagsFoundMin);
            oSheetData.Cells[rcL++, columnStart] = String.Format("AVG tags: {0:0.00}", ric.GetTagsAvg());
            oSheetData.Cells[rcL++, columnStart] = String.Format("MAX tags: {0}", ric.numTagsFoundMax);

            rcL++;

            oSheetData.Cells[rcL, columnStart - 1] = "#";
            oSheetData.Cells[rcL, columnStart]     = "EPC";
            oSheetData.Cells[rcL, columnStart + 1] = "Times";
            oSheetData.Cells[rcL, columnStart + 2] = "RSSI";
            oSheetData.Cells[rcL, columnStart + 3] = "RSSI_AVG";
            oSheetData.get_Range(String.Format("A{0}:N{0}", rcL)).Columns.EntireColumn.AutoFit();
            oSheetData.get_Range(String.Format("A{0}:N{0}", rcL)).Font.Bold = true;

            rcL++;

            /// The summation of the times that each MetaTag was read
            int sumTimes = 0;

            foreach (MetaTag mt in lmt)
            {
                oSheetData.Cells[rcL, columnStart - 1] = dic[mt.EPC];
                oSheetData.Cells[rcL, columnStart]     = mt.EPC;
                oSheetData.Cells[rcL, columnStart + 1] = mt.RSSICounter;
                oSheetData.Cells[rcL, columnStart + 2] = mt.RSSI;
                oSheetData.Cells[rcL, columnStart + 3] = mt.RSSIAvg;

                sumTimes += mt.RSSICounter;

                rcL++;
            }
            oSheetData.Cells[rcL, columnStart - 1] = lmt.Count;
            oSheetData.Cells[rcL, columnStart + 1] = sumTimes;

            //-------------

            rcL += 2;

            /// newList gets all EPCs that are on dataset, but not in the lmt
            EPCsComparer.GetEpcsNotInList(lmt, out List <string> newList);

            /// EPC line number on Excel
            int newCounter = 1;

            /// Put Dataset label on Excel
            oSheetData.Cells[rcL++, columnStart] = newList[0];

            /// Remove Dataset Label
            newList.RemoveAt(0);

            foreach (string s in newList)
            {
                oSheetData.Cells[rcL, columnStart - 1] = newCounter++;
                oSheetData.Cells[rcL++, columnStart]   = s;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Fills Excel with useful information about the reads process
        /// </summary>
        /// <param name="R1"></param>
        /// <param name="R2"></param>
        /// <param name="oSheetData"></param>
        /// <param name="readsDuration"></param>
        private static void FillExcelWithReadersTotals(UHFReader R1, UHFReader R2, Excel._Worksheet oSheetData, string readsDuration)
        {
            if (R1 != null && R2 != null)
            {
                #region Format Cells

                Excel.Range newRng = oSheetData.get_Range(String.Format("M1:M{0}", 18));

                newRng.Interior.Color = Excel.XlRgbColor.rgbOlive;

                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle   = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle  = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).LineStyle    = Excel.XlLineStyle.xlContinuous;
                newRng.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous;

                #endregion

                /// UHFReader Inventory counter for Reader 1
                UHFReaderInvCounter ric1 = R1.RIC;

                /// UHFReader Inventory counter for Reader 2
                UHFReaderInvCounter ric2 = R2.RIC;

                /// Line number on Excel
                int lineStart = 1;

                /// Column number on Excel
                int column = 13;

                oSheetData.Cells[lineStart++, column] = String.Format("Reads Duration (ms): {0}", readsDuration);

                lineStart = 11;

                oSheetData.Cells[lineStart++, column] = String.Format("Total Invs (no Tags): {0}", ric1.invsWithoutTags + ric2.invsWithoutTags);
                oSheetData.Cells[lineStart++, column] = String.Format("Total Invs (with Tags): {0}", ric1.invsWithTags + ric2.invsWithTags);

                ///Total number of Inventaries that were gotten both Reader 1 and Reader 2
                int totalInvs = ric1.invsWithoutTags + ric1.invsWithTags + ric2.invsWithoutTags + ric2.invsWithTags;

                oSheetData.Cells[lineStart++, column] = String.Format("Total Invs (Total): {0} => {1:0.00}%/{2:0.00}%",
                                                                      totalInvs,
                                                                      ((double)ric1.invsWithTags + ric2.invsWithTags) / totalInvs * 100,
                                                                      ((double)ric1.invsWithoutTags + ric2.invsWithoutTags) / totalInvs * 100);

                lineStart++;

                oSheetData.Cells[lineStart++, column] = String.Format("Total Nº tags: {0}", ric2.numTagsFound + ric2.numTagsFound);
                oSheetData.Cells[lineStart++, column] = String.Format("Total MIN tags: {0}", Math.Min(ric1.numTagsFoundMin, ric2.numTagsFoundMin));
                oSheetData.Cells[lineStart++, column] = String.Format("Total AVG tags: {0:0.00}", (ric1.GetTagsAvg() + ric2.GetTagsAvg()) / 2);
                oSheetData.Cells[lineStart++, column] = String.Format("Total MAX tags: {0}", Math.Max(ric1.numTagsFoundMax, ric2.numTagsFoundMax));
            }
        }