예제 #1
0
        /// <summary>
        /// Updates the info.
        /// </summary>
        /// <param name="hNur">The NUR module handler.</param>
        private void UpdateInfo(NurApi hNur)
        {
            bool outdated = false;

            treeView1.Nodes.Clear();

            TreeNode node;
            TreeNode dllNode = treeView1.Nodes.Add("DLL Versions");

            try
            {
                string fileVersion = hNur.GetFileVersion();
                dllNode.Nodes.Add("NurApi.dll - " + fileVersion);
                dllNode.Nodes.Add("NurApiDotNet.dll - " + NurUtils.NurApiDotNetVersion);
            }
            catch (NurApiException ex)
            {
                AddExceptionNode(dllNode, ex, true);
            }

            if (hNur.IsConnected())
            {
                TreeNode fwinfoNode  = treeView1.Nodes.Add("FWINFO (parsed string)");
                TreeNode structsNode = treeView1.Nodes.Add("Module settings (structs)");

                try
                {
                    NurApi.ReaderInfo readerInfo = hNur.GetReaderInfo();
                    tabPage1.Text = "Reader: " + readerInfo.name + ", " + readerInfo.GetVersionString();
                    DumpObject(structsNode, readerInfo, null);
                }
                catch (NurApiException ex)
                {
                    AddExceptionNode(structsNode, ex, false);
                }

                try
                {
                    DumpObject(structsNode, GetVersions(hNur), null);
                    //DumpObject(structsNode, hNur.GetVersions(), null);
                }
                catch (NurApiException ex)
                {
                    AddExceptionNode(structsNode, ex, false);
                }

                try
                {
                    NurFwInfoParser fwinfo = new NurFwInfoParser(hNur.GetFWINFO());
                    foreach (KeyValuePair <string, string> entry in fwinfo.keypairs)
                    {
                        fwinfoNode.Nodes.Add(entry.Key + " = " + entry.Value);
                    }
                }
                catch (NurApiException ex)
                {
                    AddExceptionNode(fwinfoNode, ex, false);
                    fwinfoNode.Expand();
                    outdated = true;
                }

                try
                {
                    DumpObject(structsNode, hNur.GetDeviceCaps(), null);
                }
                catch (NurApiException ex)
                {
                    AddExceptionNode(structsNode, ex, false);
                }

                try
                {
                    DumpObject(structsNode, hNur.GetEthConfig(), null);
                }
                catch (NurApiException ex)
                {
                    AddExceptionNode(structsNode, ex, false);
                }

                try
                {
                    DumpObject(structsNode, hNur.GetModuleSetup(), null);
                }
                catch (NurApiException ex)
                {
                    AddExceptionNode(structsNode, ex, false);
                }

                try
                {
                    DumpObject(structsNode, hNur.GetSensorConfig(), null);
                }
                catch (NurApiException ex)
                {
                    AddExceptionNode(structsNode, ex, false);
                }

                TreeNode regNode    = treeView1.Nodes.Add("Regions");
                int      numRegions = 0;
                try
                {
                    NurApi.ReaderInfo readerInfo = hNur.GetReaderInfo();
                    // Dump region infos
                    for (int i = 0; i < readerInfo.numRegions; i++)
                    {
                        NurApi.RegionInfo ri = hNur.GetRegionInfo(i);
                        DumpObject(regNode, ri, string.Format("{0}: {1}", i, ri.name));
                        numRegions++;
                    }
                    // Dump CustomHoptable
                    try
                    {
                        NurApi.CustomHoptableEx customHoptableEx = hNur.GetCustomHoptableEx();
                        DumpObject(regNode, customHoptableEx, string.Format("{0}: {1}", NurApi.REGIONID_CUSTOM, "customHoptableEx"));
                        numRegions++;
                    }
                    catch (NurApiException ex)
                    {
                        try
                        {
                            AddExceptionNode(regNode, ex, false);
                            NurApi.CustomHoptable customHoptable = hNur.GetCustomHoptable();
                            DumpObject(regNode, customHoptable, string.Format("{0}: {1}", NurApi.REGIONID_CUSTOM, "customHoptable"));
                            numRegions++;
                        }
                        catch (NurApiException ex2)
                        {
                            AddExceptionNode(regNode, ex2, false);
                        }
                    }
                }
                catch (NurApiException ex)
                {
                    AddExceptionNode(structsNode, ex, true);
                }
                regNode.Text = string.Format("{0} ({1} pcs)", regNode.Text, numRegions);

                TreeNode antNode = treeView1.Nodes.Add("Antennas");
                try
                {
                    antNode.Nodes.Add("Selected - " + (hNur.SelectedAntenna == -1 ? "Auto" : hNur.SelectedAntenna.ToString()));
                    antNode.Nodes.Add("Enabled - " + GetEnabledAntennas());
                    node = antNode.Nodes.Add("Reflected Powers");
                    if (MeasureReflectedPowers(hNur, node))
                    {
                        antNode.Expand();
                    }
                }
                catch (NurApiException)
                {
                    node           = antNode.Nodes.Add("Can't get antenna settings");
                    node.ForeColor = System.Drawing.Color.Red;
                    node.Expand();
                }
                structsNode.Expand();
            }
            else
            {
                tabPage1.Text = "No Connection";
            }

            if (outdated)
            {
                node           = treeView1.Nodes.Add("The NUR modules firmware might be outdated. Please check for updates.");
                node.ForeColor = System.Drawing.Color.Red;
                node.Nodes.Add("E-mail: [email protected]");
                node.Expand();
            }
        }
예제 #2
0
        /// <summary>
        /// Measures the Reflected Powers from enabled antennas.
        /// </summary>
        /// <param name="hNur">The NUR module handler.</param>
        /// <param name="node">The TreeView node.</param>
        /// <returns>True is Poor Antenna Found</returns>
        bool MeasureReflectedPowers(NurApi hNur, TreeNode node)
        {
            // Measure Reflected Power
            int  antenna          = 0;
            int  mask             = hNur.AntennaMask;
            bool poorAntennaFound = true;

            if (mask > 0)
            {
                int tmpSelectdeAntenna = hNur.SelectedAntenna;
                while (mask > 0)
                {
                    if ((mask & 1) != 0)
                    {
                        try
                        {
                            // Select Antenna
                            hNur.SelectedAntenna = antenna;
                            // Measure Reflected Power
                            NurApi.RegionInfo regionInfo = hNur.GetRegionInfo();
                            hNur.GetReflectedPower(regionInfo.baseFrequency); // FW bug fix
                            NurApi.ReflectedPowerInfo rpInfo = hNur.GetReflectedPower();
                            // Calculate Reflected Power
                            double rf = Math.Sqrt((double)(rpInfo.iPart * rpInfo.iPart + rpInfo.qPart * rpInfo.qPart));
                            rf /= ((double)rpInfo.div);
                            rf  = Math.Log10(rf) * 20.0;
                            if (Double.IsInfinity(rf))
                            {
                                rf = -30;
                            }
                            if (rf < 0)
                            {
                                node.Nodes.Add(string.Format("Antenna {0}: Reflected Power {1:0.0} dBm", antenna, rf));
                            }
                            else
                            {
                                TreeNode newNode = node.Nodes.Add(
                                    string.Format("Antenna {0}: Reflected Power {1:0.0} dBm.", antenna, rf));
                                newNode.ForeColor = System.Drawing.Color.Red;
                                node.Expand();
                                poorAntennaFound = true;
                            }
                        }
                        catch (NurApiException)
                        {
                            TreeNode newNode = node.Nodes.Add(
                                string.Format("Antenna {0}: Could not measure the Reflected Power.", antenna));
                            if (!mhlDevice)
                            {
                                newNode.ForeColor = System.Drawing.Color.Red;
                                node.Expand();
                                poorAntennaFound = true;
                            }
                        }
                    }
                    mask = mask >> 1;
                    antenna++;
                }
                // Restore SelectedAntenna
                hNur.SelectedAntenna = tmpSelectdeAntenna;
            }
            else
            {
                TreeNode newNode = node.Nodes.Add("No eabled antennas!");
                newNode.ForeColor = System.Drawing.Color.Red;
                poorAntennaFound  = true;
            }
            return(poorAntennaFound);
        }