Methode ITcIoCyclicCaller:AddIoDriver

Meldet die ITcIoCyclic Schnittstelle eines Moduls bei einem zyklischen I/O-Aufrufer, z. B. einer TwinCAT Task an.

Syntax

virtual HRESULT TCOMAPI AddIoDriver(STcIoCyclicEntry* 
pEntry, ITcIoCyclic* ipDrv, ULONG_PTR context=0, ULONG sortOrder=0)=0;

Methode ITcIoCyclicCaller:AddIoDriver 1: Rückgabewert

Bei Erfolg wird S_OK („0“) oder ein anderer positiver Wert zurückgegeben, vgl. Rückgabewerte. Erweiterte Meldungen beziehen sich dabei insbesondere auf die Spalte HRESULT in ADS Return Codes.

Parameter

Name

Typ

Beschreibung

pEntry

STcIoCyclicEntry

Zeiger auf einen Listeneintrag, welcher in die interne Liste des zyklischen I/O-Aufrufers eingefügt wird, siehe auch Beschreibung.

ipDrv

ITcIoCyclic

[in] Schnittstellenzeiger, der vom zyklischen I/O-Aufrufer verwendet wird.

context

ULONG_PTR

[optional] ein Kontextwert, der bei jedem Aufruf an die ITcIoCyclic::InputUpdate() und ITcIoCyclic::OutputUpdate Methode übergeben wird.

sortOrder

ULONG

[optional] die Sortierreihenfolge kann für die Steuerung der Ausführungsreihenfolge verwendet werden, wenn verschiedene Modulinstanzen vom gleichen zyklischen Aufrufer ausgeführt werden.

Beschreibung

Eine TwinCAT-Modulklasse verwendet normalerweise einen Smart Pointer, um auf den zyklischen I/O-Aufrufer vom Typ ITcIoCyclicCallerPtr zu verweisen. Die Objekt-ID des zyklischen I/O-Aufrufers ist in diesem Smart Pointer gespeichert und eine Referenz kann über den TwinCAT Objektserver erhalten werden. Darüber hinaus enthält die Klasse des Smart Pointers bereits einen Listeneintrag. Demzufolge kann der Smart Pointer als erster Parameter für die AddIoDriver Methode verwendet werden.

Das folgende Codebeispiel veranschaulicht die Anmeldung der ITcIoCyclicCaller Schnittstelle.

HRESULT hr = S_OK;
if ( m_spIoCyclicCaller.HasOID() )
{
if ( SUCCEEDED_DBG(hr = m_spSrv->TcQuerySmartObjectInterface(m_spIoCyclicCaller))
)
{
if ( FAILED(hr = m_spIoCyclicCaller->AddIoDriver(m_spIoCyclicCaller,
THIS_CAST(ITcIoCyclic))) )
{
m_spIoCyclicCaller = NULL;
}
}
}