ReportEvent
ITcEventLog::ReportEvent
Diese Methode wird verwendet, um von einem COM Client (z.B. ein HMI Programm) ein neues Event auszugeben (an den TcEventLogger).
HRESULT ReportEvent([in] SAFEARRAY(VARIANT)* eventHead,
[in] SAFEARRAY(VARIANT)* eventData)
);
Parameter
eventHead
[in] Pointer auf ein Safearray mit den Grenzen 0 bis 9, dass den Event Header darstellt. Das Array besitzt die gleiche Information wie der TcEventHeader. Die Punkte des Arrays sind in der folgenden Tabelle erklärt.
Index | TcEventHeader Punkt | Datentyp | Beschreibung |
---|---|---|---|
0 | nClass | Die Klasse des Events, wie Alarm, Warnung, Hinweis. | |
1 | nPriority | TcEventPriority (long) | Die Eventpriorität. Ab jetzt ist die Priorität immer: TcEventPriority.TCEVENTPRIO_IMPLICIT=0 |
2 | dwFlags | TcEventFlags (long) | Die Merker regeln das Verhalten des Alarms. Dies kann mit einer OR Verknüpfung kombiniert werden. |
3 | dwUserData | long | Reservevariable, die vom Benutzer verwendet werden kann. |
4 | nId | long | Die Event Id, die eindeutig den Eventtyp für diesen einzelnen Event Source darstellt. |
5 | nInvokeId | long |
|
6 | fDate | VARIANT-DATE | Datum und Zeit des Fehlerauftritts. |
7 | nMs | long | Der Millisekunden Anteil des Event Datums. |
8 | varSource | variant | Source id und Source Name. Die Event Source wird zu Kennzeichnung verschiedener Geräte verwendet ( z. B. I/O Event, oder verschiedene Teile des SPS Programms.) |
9 | szFmtProgId | BSTR string | Die PrgId des Formatters. Wenn der Standard XML Formatter verwendet werden soll, muss der String auf "TcEventFormatter.TcXmlFormatter" gesetzt werden. |
eventData
[in] Pointer auf ein Safearray, das die Event Argumente darstellt. In der Konfiguration des Event Formatters ist definiert, wie die Event Argumente in der angezeigten Event Meldung darzustellen sind. Die folgenden Datentypen werden durch den Standard Formatter unterstützt: int (16bit), long (32bit), float(32bit), double(64bit), string(BSTR).
Rückgabe Werte
S_OK
Funktion wurde erfolgreich aufgerufen.
TCEVENTERR_ISSIGNALED
Das Event mit dieser Source Id und Event Id wurde bereits angezeigt.
Visual Basic Beispielcode
' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' create event header
Dim arrHeader(0 To 9) As Variant
arrHeader(0) = TcEventClass.TCEVENTCLASS_ALARM ' event class
arrHeader(1) = TcEventPriority.TCEVENTPRIO_IMPLICIT ' event priority
arrHeader(2) = TcEventFlags.TCEVENTFLAG_LOG ' event flags
arrHeader(3) = 0 'user data
arrHeader(4) = 1 ' event id
arrHeader(5) = 0 'invoke id
arrHeader(6) = Now ' event date and time
arrHeader(7) = 123 ' millisecond part of the event date and time
arrHeader(8) = 1 ' event soruce id
arrHeader(9) = "TcEventFormatter.TcXmlFormatter" 'XML formatter ProgId
' create event parameters
Dim arrParam(0 To 1) As Variant
arrParam(0) = 1234 ' first parameter as long
arrParam(1) = 1234.777 ' second parameter as double
' log the event
Call evtLogger.ReportEvent(arrHeader, arrParam)
Anmerkungen
Nach diesem Methodenaufruf wird der Event Logger das Event OnNewEvent auf allen Clients, die die Event-Schnittstelle _ITcEventLogEvents (VB: Dim WithEvents) implementieren, erhöhen.
Für C++ und Visual Basic Programmierer ist es bequemer, die Methode ITcEventLogC::ReportEvent oder ITcEventC3::ReportEventEx zu benutzen.