private void btnGetTagData_Click(object sender, EventArgs e) { //Set timerange AFTime startTime = new AFTime(piStartTime.Text); AFTime endTime = new AFTime(piEndTime.Text); AFTimeRange timeRange = new AFTimeRange(startTime, endTime); //Get tagname string tagname = tbEnterTag.Text; //Get pi server PIServers servers = new PIServers(); PIServer server = servers[piServerPicker1.PIServer.ToString()]; //Get pi point PIPoint point = PIPoint.FindPIPoint(server, tagname); //extract values for tag across timerange AFValues values = point.RecordedValues(timeRange, AFBoundaryType.Inside, null, false, 0); //Get current value and timestamp piCurrentValue.Text = point.CurrentValue().ToString(); piCurrentTimestamp.Text = point.CurrentValue().Timestamp.ToString(); //Clear data chart piDataChart.Series["dataSeries"].Points.Clear(); if (values != null) { foreach (AFValue value in values) { //Write data into list box string output = String.Format("{0} \t {1} {2}", value.Timestamp, value.Value, value.UOM != null ? value.UOM.Abbreviation : null); lbPIData.Items.Add(output); try { //chart data piDataChart.Series["dataSeries"].Points.AddXY(value.Timestamp.ToString(), value.Value); } catch (System.ArgumentException) { continue; } } } }
public PIValueModel GetPIValue(string piPointName) { PIValueModel returnVal = new PIValueModel(); bool piPointPresent = PIPointExists(piPointName); if (piPointPresent) { PIPoint myPoint = PIPoint.FindPIPoint(_pi, piPointName); AFValue piValue = myPoint.CurrentValue(); returnVal.PointName = piPointName; returnVal.datetime = piValue.Timestamp.ToString(); returnVal.value = piValue.Value.ToString(); } return(returnVal); }
// GET api/tsops/Snapshot?server={serverName}&point={pointName>} public IEnumerable <string> GetSnapshot([FromUri] string server, [FromUri] string point) { PIServer srv; if (server != null) { try { srv = new PIServers()[server]; srv.Connect(); } catch { List <string> error = new List <string>(); error.Add("Error: Could not connect to PI Data Archive " + server); //Cannot connect to PI Data Archive return(error); } } else { List <string> error = new List <string>(); error.Add("Error: PI Data Archive name is null"); //Server is null return(error); } //Finds PI Point and gets current value try { PIPoint requestedPoint = PIPoint.FindPIPoint(srv, point); //Finds desired PI Point AFValue val = requestedPoint.CurrentValue(); //Gets current value IEnumerable <string> result = new string[] { "Server: " + val.PIPoint.Server, "Point Name : " + val.PIPoint.Name, "Current Value: " + val.Value, "Timestamp: " + val.Timestamp }; return(result); } catch { List <string> error = new List <string>(); error.Add("Error: Could not get current value for " + point); return(error); } }
public override void Run() { try { PiConnectionHelper piConnectionHelper = new PiConnectionHelper(Server); piConnectionHelper.Connect(); PIServer pi = piConnectionHelper.GetPiServer(); PIPoint point = PIPoint.FindPIPoint(pi, Tag); AFValue value = point.CurrentValue(); Logger.InfoFormat("The current value for PI Point {0} is : {1} - {2}", Tag, value.Timestamp, value.Value); } catch (Exception ex) { Logger.Error(ex); } }
public void PiInsert(string Product, DataTable dt) { //**********************Insert records into pi******************************************** try { LabEntities db = new LabEntities(); PIServers myPIServers = new PIServers(); PIServer myPIServer = myPIServers.DefaultPIServer; NetworkCredential credential = new NetworkCredential("labserver", "labserver1"); myPIServer.Connect(credential); Dictionary <string, decimal?> piTagValues = new Dictionary <string, decimal?>(); var PiTaglist = (from v in db.Lab_TagTable orderby v.Id select v).Skip(39).Take(44); var date = Convert.ToDateTime(Session["alumina_date"].ToString()); int utc = DateTime.UtcNow.Hour; int dt_ = DateTime.Now.Hour; bool dst = DSTcheck(); if (dst) { dt_ = dt_ - 1; } int diff; if (utc > dt_) { diff = utc - dt_; } else { diff = utc + 24 - dt_; } //type is not feed moisture if (Product == "ALUMINA") { //string s = type.Substring(0, type.Length - 4); //string input = type.Substring(type.Length - 4); //int time = Convert.ToInt16(input.TrimEnd('0')); //DateTime datetime; //TimeSpan ts; //if (time == 24) //{ // ts = new TimeSpan(23, 59, 59); //} //else ts = new TimeSpan(time, 0, 0); //datetime = date + ts; //decimal? s = (decimal?)null; //bool nulloremtpy = string.IsNullOrWhiteSpace(dt.Rows[0]["value"].ToString()); piTagValues.Add("LABALUMINA_LOI", string.IsNullOrWhiteSpace(dt.Rows[0]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[0]["value"].ToString())); piTagValues.Add("LABALUMINA_P100", string.IsNullOrWhiteSpace(dt.Rows[1]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[1]["value"].ToString())); piTagValues.Add("LABALUMINA_P200", string.IsNullOrWhiteSpace(dt.Rows[2]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[2]["value"].ToString())); piTagValues.Add("LABALUMINA_P325", string.IsNullOrWhiteSpace(dt.Rows[3]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[3]["value"].ToString())); piTagValues.Add("LABALUMINA_BULKDENS", string.IsNullOrWhiteSpace(dt.Rows[4]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[4]["value"].ToString())); piTagValues.Add("LABALUMINA_SI", string.IsNullOrWhiteSpace(dt.Rows[5]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[5]["value"].ToString())); piTagValues.Add("LABALUMINA_FE", string.IsNullOrWhiteSpace(dt.Rows[6]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[6]["value"].ToString())); piTagValues.Add("LABALUMINA_NA", string.IsNullOrWhiteSpace(dt.Rows[7]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[7]["value"].ToString())); piTagValues.Add("LABALUMINA_ZN", string.IsNullOrWhiteSpace(dt.Rows[8]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[8]["value"].ToString())); piTagValues.Add("LABALUMINA_MN", string.IsNullOrWhiteSpace(dt.Rows[9]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[9]["value"].ToString())); piTagValues.Add("LABALUMINA_CA", string.IsNullOrWhiteSpace(dt.Rows[10]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[10]["value"].ToString())); piTagValues.Add("LABALUMINA_TI", string.IsNullOrWhiteSpace(dt.Rows[11]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[11]["value"].ToString())); piTagValues.Add("LABALUMINA_AI", string.IsNullOrWhiteSpace(dt.Rows[12]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[12]["value"].ToString())); piTagValues.Add("LABALUMINA_M20", string.IsNullOrWhiteSpace(dt.Rows[13]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[13]["value"].ToString())); foreach (KeyValuePair <string, decimal?> entry in piTagValues) { foreach (var item in PiTaglist) { string TagName = item.Pi_Tags_Test.Substring(0, item.Pi_Tags_Test.Length - 5); string TagName_test = item.Pi_Tags_Test; if (TagName == entry.Key) { //PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test); PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName); //use this when go to production AFValue currentTag = myPIPoint.CurrentValue(); currentTag.Value = Convert.ToString(entry.Value); //string ctv = currentTag.Value.ToString(); //DateTime cttimestamp = currentTag.Timestamp; //DateTime d = cttimestamp.Date; currentTag.Timestamp = date.AddHours(diff); if (!string.IsNullOrEmpty(currentTag.Value.ToString())) { //if (ctv != null && d != date) //{ myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert); //} //else //{ // currentTag.Timestamp = date.AddHours(diff); // myPIPoint.UpdateValue(currentTag, AFUpdateOption.Replace); //} } } } } } else if (Product == "HYDRATE") { piTagValues.Add("LABHYDRATE_P100", string.IsNullOrWhiteSpace(dt.Rows[0]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[0]["value"].ToString())); piTagValues.Add("LABHYDRATE_P200", string.IsNullOrWhiteSpace(dt.Rows[1]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[1]["value"].ToString())); piTagValues.Add("LABHYDRATE_P325", string.IsNullOrWhiteSpace(dt.Rows[2]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[2]["value"].ToString())); piTagValues.Add("LABHYDRATE_SI", string.IsNullOrWhiteSpace(dt.Rows[3]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[3]["value"].ToString())); piTagValues.Add("LABHYDRATE_FE", string.IsNullOrWhiteSpace(dt.Rows[4]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[4]["value"].ToString())); piTagValues.Add("LABHYDRATE_NA", string.IsNullOrWhiteSpace(dt.Rows[5]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[5]["value"].ToString())); piTagValues.Add("LABHYDRATE_ZN", string.IsNullOrWhiteSpace(dt.Rows[6]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[6]["value"].ToString())); piTagValues.Add("LABHYDRATE_MN", string.IsNullOrWhiteSpace(dt.Rows[7]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[7]["value"].ToString())); piTagValues.Add("LABHYDRATE_CA", string.IsNullOrWhiteSpace(dt.Rows[8]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[8]["value"].ToString())); piTagValues.Add("LABHYDRATE_TI", string.IsNullOrWhiteSpace(dt.Rows[9]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[9]["value"].ToString())); piTagValues.Add("LABHYDRATE_AI", string.IsNullOrWhiteSpace(dt.Rows[10]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[10]["value"].ToString())); piTagValues.Add("LABHYDRATE_FREEMOIST", string.IsNullOrWhiteSpace(dt.Rows[11]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[11]["value"].ToString())); piTagValues.Add("LABHYDRATE_CSEDS", string.IsNullOrWhiteSpace(dt.Rows[12]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[12]["value"].ToString())); piTagValues.Add("LABHYDRATE_INSOLS", string.IsNullOrWhiteSpace(dt.Rows[13]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[13]["value"].ToString())); piTagValues.Add("LABHYDRATE_BULKDENS", string.IsNullOrWhiteSpace(dt.Rows[14]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[14]["value"].ToString())); piTagValues.Add("LABHYDRATE_HUNTERL", string.IsNullOrWhiteSpace(dt.Rows[15]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[15]["value"].ToString())); piTagValues.Add("LABHYDRATE_HUNTERA", string.IsNullOrWhiteSpace(dt.Rows[16]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[16]["value"].ToString())); piTagValues.Add("LABHYDRATE_HUNTERB", string.IsNullOrWhiteSpace(dt.Rows[17]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[17]["value"].ToString())); foreach (KeyValuePair <string, decimal?> entry in piTagValues) { foreach (var item in PiTaglist) { string TagName = item.Pi_Tags_Test.Substring(0, item.Pi_Tags_Test.Length - 5); string TagName_test = item.Pi_Tags_Test; if (TagName == entry.Key) { //PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test); PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName); // use this when go to production AFValue currentTag = myPIPoint.CurrentValue(); currentTag.Value = Convert.ToString(entry.Value); //string ctv = currentTag.Value.ToString(); //DateTime cttimestamp = currentTag.Timestamp; //DateTime d = cttimestamp.Date; currentTag.Timestamp = date.AddHours(diff); if (!string.IsNullOrEmpty(currentTag.Value.ToString())) { //if (ctv != null && d != date) //{ // currentTag.Timestamp = date.AddHours(diff); myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert); // } // else // { // currentTag.Timestamp = date.AddHours(diff); // myPIPoint.UpdateValue(currentTag, AFUpdateOption.Replace); // } } } } } } else { piTagValues.Add("LABWETHYDRATE_P100", string.IsNullOrWhiteSpace(dt.Rows[0]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[0]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_P200", string.IsNullOrWhiteSpace(dt.Rows[1]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[1]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_P325", string.IsNullOrWhiteSpace(dt.Rows[2]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[2]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_SI", string.IsNullOrWhiteSpace(dt.Rows[3]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[3]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_FE", string.IsNullOrWhiteSpace(dt.Rows[4]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[4]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_NA", string.IsNullOrWhiteSpace(dt.Rows[5]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[5]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_ZN", string.IsNullOrWhiteSpace(dt.Rows[6]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[6]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_MN", string.IsNullOrWhiteSpace(dt.Rows[7]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[7]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_CA", string.IsNullOrWhiteSpace(dt.Rows[8]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[8]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_TI", string.IsNullOrWhiteSpace(dt.Rows[9]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[9]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_CSEDS", string.IsNullOrWhiteSpace(dt.Rows[10]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[10]["value"].ToString())); piTagValues.Add("LABWETHYDRATE_INSOLS", string.IsNullOrWhiteSpace(dt.Rows[11]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[11]["value"].ToString())); foreach (KeyValuePair <string, decimal?> entry in piTagValues) { foreach (var item in PiTaglist) { string TagName = item.Pi_Tags_Test.Substring(0, item.Pi_Tags_Test.Length - 5); string TagName_test = item.Pi_Tags_Test; if (TagName == entry.Key) { // PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test); PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName); // use this when go to production AFValue currentTag = myPIPoint.CurrentValue(); currentTag.Value = Convert.ToString(entry.Value); //string ctv = currentTag.Value.ToString(); //DateTime cttimestamp = currentTag.Timestamp; //DateTime d = cttimestamp.Date; currentTag.Timestamp = date.AddHours(diff); if (!string.IsNullOrEmpty(currentTag.Value.ToString())) { //if (ctv != null && d != date) //{ myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert); //} //else //{ // currentTag.Timestamp = date.AddHours(diff); // myPIPoint.UpdateValue(currentTag, AFUpdateOption.Replace); //} } } } } } myPIServer.Disconnect(); } catch (Exception ex) { } //*************************End******************************* }
public void PiInsert(string area, DataTable dt) { //**********************Insert records into pi******************************************** try { LabEntities db = new LabEntities(); PIServers myPIServers = new PIServers(); PIServer myPIServer = myPIServers.DefaultPIServer; NetworkCredential credential = new NetworkCredential("labserver", "labserver1"); myPIServer.Connect(credential); var date = Convert.ToDateTime(Session["sec3_date"].ToString()); int utc = DateTime.UtcNow.Hour; int dt_ = DateTime.Now.Hour; bool dst = DSTcheck(); if (dst) { dt_ = dt_ - 1; } int diff; if (utc > dt_) { diff = utc - dt_; } else { diff = utc + 24 - dt_; } if (area == "caustic_clean") { var PiTagList = (from v in db.Lab_TagTable where v.Tag_Name == area orderby v.Max, v.Min select v).ToList(); DataTable dt_copy = new DataTable(); dt_copy = dt.Copy(); dt_copy.Columns.RemoveAt(0); dt_copy.Columns.RemoveAt(3); for (int i = 0; i < dt_copy.Rows.Count; i++) { for (int j = 0; j < dt_copy.Columns.Count; j++) { string TagName = PiTagList[j].Pi_Tags; string TagName_test = PiTagList[j].Pi_Tags_Test;; { //PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test); PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName); //-- use this when go to production AFValue currentTag = myPIPoint.CurrentValue(); currentTag.Timestamp = date; currentTag.Value = Convert.ToString(dt_copy.Rows[i][j]); string ctv = currentTag.Value.ToString(); DateTime cttimestamp = currentTag.Timestamp; DateTime d = cttimestamp.Date; if (!string.IsNullOrEmpty(currentTag.Value.ToString())) { currentTag.Value = Convert.ToString(dt_copy.Rows[i][j]); currentTag.Timestamp = date.AddHours(diff + i); myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert); } } } } } else { var PiTagList = (from v in db.Lab_TagTable where v.Tag_Name == area orderby v.Max, v.Min select v).ToList(); DataTable dt_copy = new DataTable(); dt_copy = dt.Copy(); dt_copy.Columns.RemoveAt(0); dt_copy.Columns.RemoveAt(0); { for (int i = 0; i < dt_copy.Rows.Count; i++) { for (int j = 0; j < dt_copy.Columns.Count; j++) { //string TagName = item.Pi_Tags_Test.Substring(0, item.Pi_Tags_Test.Length - 5); //string TagName_test = item.Pi_Tags_Test; //int g; //if (i != 0) //{ // g = (8 * i) + j; //} //else // g = j; if (area == "st_topsamples" || area == "tt_topsamples") { TagName = PiTagList[j].Pi_Tags; TagName_test = PiTagList[j].Pi_Tags_Test;; } else { int g; if (i != 0) { g = (8 * i) + j; TagName = PiTagList[g].Pi_Tags; TagName_test = PiTagList[g].Pi_Tags_Test; } else { TagName = PiTagList[j].Pi_Tags; TagName_test = PiTagList[j].Pi_Tags_Test; } } { //PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test); PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName); //-- use this when go to production AFValue currentTag = myPIPoint.CurrentValue(); string s = Convert.ToString(dt_copy.Rows[i][j]); currentTag.Value = Convert.ToString(dt_copy.Rows[i][j]); currentTag.Timestamp = date.AddHours(diff); if (!string.IsNullOrEmpty(currentTag.Value.ToString())) { myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert); } } } } } myPIServer.Disconnect(); } } catch (Exception exs) { string filePath = @"C:\Error.txt"; using (StreamWriter writer = new StreamWriter(filePath, true)) { writer.WriteLine("Message :" + exs.Message + "<br/>" + Environment.NewLine + "StackTrace :" + exs.StackTrace + "" + Environment.NewLine + "Date :" + DateTime.Now.ToString()); writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine); } } //*************************End******************************* }
private void btnGetTagInfo_Click(object sender, EventArgs e) { //Enable time-range picker btnGetTagData.Enabled = true; piStartTime.Enabled = true; piEndTime.Enabled = true; //Prefill time-range piStartTime.Text = "*-12h"; piEndTime.Text = "*"; //Clear chart piDataChart.Series["dataSeries"].Points.Clear(); //Clear list of data lbPIData.Items.Clear(); //Connect to server PIServers servers = new PIServers(); PIServer server = servers[piServerPicker1.PIServer.ToString()]; try { //Connect to server server.Connect(); //Extract tag name string tagname = tbEnterTag.Text; //Search for tag IList<PIPoint> points = PIPoint.FindPIPoints(server, new List<string>() { tagname }); if (points.Count == 1) { lbTagFound.Text = "PI tag found!"; //Obtain pi point. PIPoint point = PIPoint.FindPIPoint(server, tagname); //Extract point attributes IDictionary<string, object> pointAttribs = point.GetAttributes(); //Extract tag attributes string tag = pointAttribs["tag"].ToString(); string descriptor = pointAttribs["descriptor"].ToString(); string engunits = pointAttribs["engunits"].ToString(); string pointtype = pointAttribs["pointtype"].ToString(); string pointsource = pointAttribs["pointsource"].ToString(); string creationdate = pointAttribs["creationdate"].ToString(); string creator = pointAttribs["creator"].ToString(); string location1 = pointAttribs["location1"].ToString(); string location2 = pointAttribs["location2"].ToString(); string location3 = pointAttribs["location3"].ToString(); string location4 = pointAttribs["location4"].ToString(); string location5 = pointAttribs["location5"].ToString(); string instrumenttag = pointAttribs["instrumenttag"].ToString(); //Set tag attributes in relevant text fields piTag.Text = tag; piDescriptor.Text = descriptor; piEngUnits.Text = engunits; piPointType.Text = pointtype; piPointSource.Text = pointsource; piCreationDate.Text = creationdate; piCreator.Text = creator; piLocation1.Text = location1; piLocation2.Text = location2; piLocation3.Text = location3; piLocation4.Text = location4; piLocation5.Text = location5; piInstrumentTag.Text = instrumenttag; piCurrentValue.Text = point.CurrentValue().ToString(); piCurrentTimestamp.Text = point.CurrentValue().Timestamp.ToString(); //Get data for the tag btnGetTagData.PerformClick(); } else if (points.Count > 1) { //If more than one tag is found matching that name, skip. //Application is designed to handle only one tag at a time. lbTagFound.Text = "Single tag use only."; } else { //If tag cannot be found display message lbTagFound.Text = "PI tag not found."; } } catch (OSIsoft.AF.PI.PIAuthenticationException) { //If there is an authentication error trying to connect to the server, display message lbTagFound.Text = "Permissions Error!"; } }