openVisN.FrmConfigure.BtnGetMetadata_Click C# (CSharp) Метод

BtnGetMetadata_Click() приватный Метод

private BtnGetMetadata_Click ( object sender, EventArgs e ) : void
sender object
e System.EventArgs
Результат void
        private void BtnGetMetadata_Click(object sender, EventArgs e)
        {
            // Do the following on button click or missing configuration, etc:

            // Note that openHistorian internal publisher controls how many tables / fields to send as meta-data to subscribers (user controllable),
            // as a result, not all fields in associated database views will be available. Below are the default SELECT filters the publisher
            // will apply to the "MeasurementDetail", "DeviceDetail" and "PhasorDetail" database views:

            // SELECT NodeID, UniqueID, OriginalSource, IsConcentrator, Acronym, Name, ParentAcronym, ProtocolName, FramesPerSecond, Enabled FROM DeviceDetail WHERE IsConcentrator = 0
            // SELECT Internal, DeviceAcronym, DeviceName, SignalAcronym, ID, SignalID, PointTag, SignalReference, Description, Enabled FROM MeasurementDetail
            // SELECT DeviceAcronym, Label, Type, Phase, SourceIndex FROM PhasorDetail

            DataTable measurementTable = null;
            DataTable deviceTable = null;
            DataTable phasorTable = null;

            string server = "Server=" + TxtServerIP.Text.Trim() + "; Port=" + TxtGEPPort.Text.Trim() + "; Interface=0.0.0.0";

            try
            {
                DataSet metadata = MetadataRetriever.GetMetadata(server);

                // Reference meta-data tables
                measurementTable = metadata.Tables["MeasurementDetail"];
                deviceTable = metadata.Tables["DeviceDetail"];
                phasorTable = metadata.Tables["PhasorDetail"];
            }
            catch (Exception ex)
            {
                MessageBox.Show("Exception retrieving meta-data: " + ex.Message);
            }

            SortedDictionary<uint, Tuple<Guid, string, string, string>> pointData = new SortedDictionary<uint, Tuple<Guid, string, string, string>>();

            if ((object)measurementTable != null)
            {
                // Could filter measurements if desired (e.g., no stats)
                DataRow[] measurements = measurementTable.Select("SignalAcronym <> 'STAT' and SignalAcronym <> 'DIGI'");

                m_settings.MyData.Tables["Measurements"].Rows.Clear();

                // Do something with measurement records
                foreach (DataRow measurement in measurements)
                {
                    Guid signalID;
                    MeasurementKey measurementKey;
                    
                    Guid.TryParse(measurement["SignalID"].ToString(), out signalID);
                    MeasurementKey.TryParse(measurement["ID"].ToString(), out measurementKey);

                    pointData[measurementKey.ID] = new Tuple<Guid, string, string, string>(signalID, measurement["DeviceAcronym"].ToString(), measurement["SignalAcronym"].ToString(), measurement["Description"].ToString());
                }

                foreach (KeyValuePair<uint, Tuple<Guid, string, string, string>> kvp in pointData)
                    m_settings.MyData.Tables["Measurements"].Rows.Add((int)kvp.Key, kvp.Value.Item1, kvp.Value.Item2, kvp.Value.Item3, kvp.Value.Item4);
            }
        }