static void Main(string[] args) { PISystems myPISystems = new PISystems(); PISystem myPISystem = myPISystems[EventFrameTest.Properties.Settings.Default.AFSystemName]; object sysCookie, dbCookie; AFDatabases myDBs = myPISystem.Databases; AFDatabase myDB = myDBs[EventFrameTest.Properties.Settings.Default.AFDBName]; myPISystem.FindChangedItems(false, int.MaxValue, null, out sysCookie); myDB.FindChangedItems(false, int.MaxValue, null, out dbCookie); // Find changes made while application not running. List <AFChangeInfo> list = new List <AFChangeInfo>(); list.AddRange(myPISystem.FindChangedItems(false, int.MaxValue, sysCookie, out sysCookie)); list.AddRange(myDB.FindChangedItems(false, int.MaxValue, dbCookie, out dbCookie)); // Refresh objects that have been changed. AFChangeInfo.Refresh(myPISystem, list); foreach (AFChangeInfo info in list) { AFChangeInfoAction ac = info.Action; AFObject myObj = info.FindObject(myPISystem, true); AFIdentity myID = myObj.Identity; if (myID == AFIdentity.EventFrame && ac == AFChangeInfoAction.Added) { Console.WriteLine("Found changed object: {0}", myObj); } } Console.ReadLine(); }
internal static void OnChanged(object sender, AFChangedEventArgs e) { //Console.WriteLine(sender); //Console.WriteLine(e); // Find changes made while application not running. List <AFChangeInfo> list = new List <AFChangeInfo>(); list.AddRange(myPISystem.FindChangedItems(true, int.MaxValue, sysCookie, out sysCookie)); list.AddRange(monitoredDB.FindChangedItems(true, int.MaxValue, dbCookie, out dbCookie)); // Refresh objects that have been changed. AFChangeInfo.Refresh(myPISystem, list); foreach (AFChangeInfo info in list) { AFChangeInfoAction ac = info.Action; AFObject myObj = info.FindObject(myPISystem, true); AFIdentity myID = myObj.Identity; if (myID == AFIdentity.EventFrame && ac == AFChangeInfoAction.Added) { AFEventFrame myEFinfo = (AFEventFrame)info.FindObject(myPISystem, true); AFNamedCollectionList <AFEventFrame> myEFList = AFEventFrame.FindEventFrames(monitoredDB, null, new AFTime("*"), 0, 5, AFEventFrameSearchMode.BackwardFromEndTime, "", "", null, myEFinfo.Template, true); foreach (AFEventFrame EF in myEFList) { Console.WriteLine(EF.Name); } } } }
public void RefreshLoadedObjects() { var changes = _database.FindChangedItems(AFIdentity.Element, false, int.MaxValue, _cookie, out _cookie); _logger.InfoFormat("Found {0} changes in the database", changes.Count); foreach (var afChangeInfo in changes) { _logger.DebugFormat("Update found element ID {1},Update is value update: {0}", afChangeInfo.IsValueUpdate, afChangeInfo.ID); } // Refresh objects that have been changed. AFChangeInfo.Refresh(_database.PISystem, changes); }
internal void OnChanged(object sender, AFChangedEventArgs e) { List <AFChangeInfo> changes = new List <AFChangeInfo>(); changes.AddRange(afdatabase.FindChangedItems(true, int.MaxValue, cookie, out cookie)); AFChangeInfo.Refresh(afdatabase.PISystem, changes); foreach (AFChangeInfo info in changes.FindAll(change => change.Identity == AFIdentity.EventFrame)) { if (info.Action != AFChangeInfoAction.Removed) { AFEventFrame lastestEventFrame = (AFEventFrame)info.FindObject(afdatabase.PISystem, true); logger.Debug($"A new event to verify: {lastestEventFrame.Name}"); calculation.performAction(lastestEventFrame, info.Action); } } }
static void Main(string[] args) { var piSystem = new PISystems()[piSystemName]; if (!piSystem.ConnectionInfo.IsConnected) { if (string.IsNullOrEmpty(piSystemUser)) { piSystem.Connect(); } else { var creds = new NetworkCredential(piSystemUser, piSystemPass, piSystemDomain); piSystem.Connect(creds); } } if (piSystem.ConnectionInfo.IsConnected) { Console.WriteLine($"Connected to PI System '{piSystem.Name}' (GUID='{piSystem.ID}')"); if (piSystem.Databases.Contains(piSystemDatabase)) { var afDatabase = piSystem.Databases[piSystemDatabase]; Console.WriteLine($"Connected to AF Database '{afDatabase.Name}' (GUID='{afDatabase.ID}')"); // Do stuff here... object sysCookie = piSystem.GetFindChangedItemsCookie(searchSandbox: false); for (int i = 0; i < 100; i++) { Console.WriteLine("Checking for changes..."); List <AFChangeInfo> list = new List <AFChangeInfo>(); int resultsPerPage = 1000; while (true) { var results = piSystem.FindChangedItems(false, true, resultsPerPage, sysCookie, out sysCookie); if ((results?.Count ?? 0) == 0) { break; } list.AddRange(results); } // Refresh objects that have been changed. AFChangeInfo.Refresh(piSystem, list); // Find the objects that have been changed. foreach (AFChangeInfo info in list) { try { AFObject myObj = info.FindObject(piSystem, true); Console.WriteLine("Found changed object: {0}", myObj.ToString()); Console.WriteLine("Identity: " + myObj.Identity.ToString()); Console.WriteLine("Action = " + info.Action); Console.WriteLine("Change Time = " + info.ChangeTime); Console.WriteLine("Value Updated = " + info.IsValueUpdate); Console.WriteLine("Parent ID = " + info.ParentID); Console.WriteLine("Parent = " + ((info.ParentID == Guid.Empty) ? "NONE" : AFElement.FindElement(piSystem, info.ParentID).GetPath())); Console.WriteLine(" "); } catch { } } System.Threading.Thread.Sleep(5000); } } else { Console.WriteLine($"PI System Database '{piSystemDatabase}' does not exist."); } } else { Console.WriteLine($"Cannot connect to PI System '{piSystemName}'."); } }