Anzeige von Logged Events in C#

Diese Beispiel bezieht sich auf

Bevor Sie mit dem Beispiel starten, beachten Sie, dass der TcEventViewer ActiveX keine komplette Implementation einer Event HMI bietet, die einfach an ihre Applikation angefügt werden kann. Wenn Sie spezielle Anforderungen haben, die nicht mit dem standard TcEventViewer realisiert werden können, fahren Sie mit dem Beispiel zur Anzeige geloggter Events fort.

1. Erzeugen Sie eine Win32 C# Applikation.
2. Fügen Sie dem Beckhoff TcEventLogger eine Referenz hinzu:
Anzeige von Logged Events in C# 1:
3. Über Form1.cs ergänzen Sie:
using TCEVENTLOGGERLib;
4. Erzeugen Sie eine globale Instanz im TcEventlogger. 
TcEventLogtcEventLogger =newTcEventLog();  
5. Fügen Sie eine ListView in ihre Main Form ein und benennen es eventView1
6. Intialisieren Sie in Form1_Load die ListView:
eventView1.View =View.Details;
eventView1.Columns.Add("Time","Time");
eventView1.Columns.Add("Type","Type");
eventView1.Columns.Add("Source","Source");
eventView1.Columns.Add("Message","Message");
7. Fügen Sie Code zur Anzeige von Events in die ListView control hinzu:
///<summary>
///Display an event on top of the ListView control
///</summary>
///<param name="evt">Event to be added</param>
privatevoidAddEvent(TcEventevt)
{
    ListViewItemlvi =newListViewItem();
    lvi.Name ="Time";
    try
    { lvi.Text =Convert.ToString(evt.Date); }
    catch(Exception)
    { lvi.Text =""; }
    eventView1.Items.Insert(0, lvi);
    PrepareListViewItem(lvi);

   try
   { AddListViewSubItem(lvi,"Type", GetEventClassName(evt)); }
   catch(Exception)
    { }
   try
   { AddListViewSubItem(lvi,"Source", evt.get_SourceName(langId)); }
   catch(Exception)
    { }

   try
   { AddListViewSubItem(lvi,"Message", evt.GetMsgString(langId)); }
   catch(Exception)
    { }
}
///<summary>
///Prepare the listview item by padding its subitems with empty items
///</summary>
///<param name="lvi">ListViewItem to be prepared</param>
privatevoidPrepareListViewItem(ListViewItemlvi)
{
    for(inti = 0; i < eventView1.Columns.Count; i++)
    lvi.SubItems.Add("???");// pad items with question marks.
}
///<summary>
///Add one sub item at an indexed position to the ListViewItem
///</summary>
///<param name="lvi">Parent item. The item must have been inserted to a ListView control</param>
///<param name="name">Item name (index) of the item. A coulumn with such index must exist in the ListView control</param>
///<param name="text">Display text</param>
privatevoidAddListViewSubItem(ListViewItemlvi,stringname,stringtext)
{
   ListViewItem.ListViewSubItemlvsi =newListViewItem.ListViewSubItem();
    lvsi.Name = name;
    lvsi.Text = text;
    lvi.SubItems.Insert(lvi.ListView.Columns.IndexOfKey(lvsi.Name), lvsi);
}
///<summary>
///Get a textual representation for the event class.
///</summary>
///<param name="evt">Event object</param>
///<returns>Classname</returns>
privatestringGetEventClassName(TcEventevt)
{
   switch( (TcEventClass)evt.Class)
    {
       caseTcEventClass.TCEVENTCLASS_ALARM:
           return"Alarm";
       caseTcEventClass.TCEVENTCLASS_HINT:
           return"Hint";
       caseTcEventClass.TCEVENTCLASS_INSTRUCTION:
           return"Instruction";
       caseTcEventClass.TCEVENTCLASS_MAINTENANCE:
           return"Maintenance";
       caseTcEventClass.TCEVENTCLASS_MESSAGE:
           return"Message";
       caseTcEventClass.TCEVENTCLASS_PARAMERROR:
           return"Paramerror";
       caseTcEventClass.TCEVENTCLASS_STATEINFO:
           return"State info";
       caseTcEventClass.TCEVENTCLASS_WARNING:
           return"Warning";
       default:
           return"?";
    }
}
8. Zum Schluss lesen Sie die Liste der aktiven Alarme des TcEventLogger  in Form1_Load.
foreach(TcEvent evt in tcEventLogger.EnumLoggedEventsEx() )
    AddEvent(evt);  
9. Starten Sie ein SPS Programm um ein paar Events auszugeben.
Anzeige von Logged Events in C# 2:

Sprache / IDE

Beispielprogram auspacken

Visual Studio 2005

Sample01.zip