Der Aufruf Set_Receive_Timer (CMSRCT) setzt den Timeout-Timer für einen blockierenden Receive- bzw. Receive_Mapped_Data-Aufruf.
Wenn dieser Timer gesetzt ist und für den Datenempfang receive_type=CM_RECEIVE_AND_WAIT gesetzt ist, werden die Aufrufe Receive und Receive_Mapped_Data nach der im Feld receive_timer festgelegten Zeit abgebrochen.
Set_Receive_Timer darf nach dem Allocate-Aufruf zu jedem beliebigen Zeitpunkt und beliebig oft innerhalb einer Conversation aufgerufen werden. Es gilt jeweils die Timer-Einstellung des letzten Set_Receive_Timer-Aufrufs.
Diese Funktion ist nicht Bestandteil der CPI-C Spezifikation, sondern eine zusätzliche Funktion des UPIC-Trägersystems.
UPIC-Local auf Unix-, Linux- und Windows-Systemen:
Der Aufruf Set_Receive_Timer wird bei der Anbindung über UPIC-L nicht unterstützt.
CMSRCT (conversation_ID, receive_timer, return_code)
Parameter
--> conversation_ID | Identifikation der Conversation |
--> receive_timer | Zeit in Millisekunden, nach der ein blockierender Receive- bzw. Receive_Mapped_Data-Aufruf unterbrochen wird. Die Aufrufe Receive- und Receive_Mapped_Data wirken blockierend, wenn die Characteristic receive_type den Wert CM_RECEIVE_AND_WAIT hat. Der für receive_timer angegebene Wert wird auf die nächste volle Sekunde aufgerundet. |
<-- return_code | Ergebnis des Funktionsaufrufs |
Ergebnis (return_code)
CM_OK
Aufruf ok
CM_PROGRAM_STATE_CHECK
Die Conversation ist nicht im Zustand "Send" oder "Receive".
CM_PROGRAM_PARAMETER_CHECK
Der Wert in conversation_ID ist ungültig oder in receive_timer wurde ein Wert < 0 angegeben.
CM_PRODUCT_SPECIFIC_ERROR
Die UPIC-Instanz konnte nicht gefunden werden.
CM_CALL_NOT_SUPPORTED
Die Funktion wird nicht unterstützt.
Zustandsänderung
Im fehlerfreien Fall liefert die Funktion das Ergebnis CM_OK zurück. Dieser Aufruf ändert den Zustand der Conversation nicht.
Hinweis
Der Set_Receive_Timer ist nur sinnvoll im Zusammenhang mit den Aufrufen Receive und Receive_Mapped_Data.
Set_Receive_Timer kann innerhalb einer Conversation beliebig oft aufgerufen werden. Es gilt immer der Wert, der beim letzten Aufruf von Set_Receive_Timer vor einem Receive- bzw. Receive_Mapped_Data-Aufruf gesetzt wurde. Der gesetzte Wert bleibt bis zum nächsten Set_Receive_Timer-Aufruf bzw. bis zum Ende der Conversation gültig.
Verhalten im Fehlerfall
CM_PROGRAM_STATE_CHECK
Programm ändern.
CM_PROGRAM_PARAMETER_CHECK
Programm ändern.
CM_PRODUCT_SPECIFIC_ERROR
Das Betriebssystem kann nicht genügend Speicherplatz für interne Puffer bereitstellen. Überprüfen Sie Ihr Programm auf zu hohe Speicherplatzanforderung und starten Sie ggf. Ihr System neu.
CM_CALL_NOT_SUPPORTED
Dieser Returncode gilt nur für Unix-, Linux- und Windows-Systeme.
Muss kein Fehler sein: Falls eine Anwendung sowohl für UPIC-L als auch für UPIC-R vorgesehen ist, bedeutet dieser Returncode lediglich, dass die Anwendung mit einer UPIC-L-Bibliothek gebunden ist. Das Programm kann sich diesen Returncode merken und auf weitere Set_Receive_Timer Aufrufe verzichten.
CM_ENTRY Set_Receive_Timer ( unsigned char CM_PTR conversation_ID, CM_TIMEOUT CM_PTR timeout_time, CM_RETURN_CODE CM_PTR return_code )