User Documentation

Datenrekorder
Systemhandbuch
2696780000/02/04.2020
92
ctx.affinity = -1;
rc = DataRecApiSetRecContext(sP1Id, &ctx);
ReturnIfNot(rc == DataRecApiResultOk);
cnt.startDelayCnt = 200;
cnt.durationCnt = 500;
rc = DataRecApiSetRecCount(sP1Id, &cnt);
ReturnIfNot(rc == DataRecApiResultOk);
rc = DataRecApiSetSampleHook(sP1Id, UpdateMinMaxTemp, 0);
ReturnIfNot(rc == DataRecApiResultOk);
}
Rückruffunktion:
static int32_t sMinTemp = INT32_MAX, sMaxTemp = INT32_MIN;
/
*****************************************************************************
*/
static void UpdateMinMaxTemp(
uint64_t timeStampUs, /**< [in] time stamp (μs since the epoch) */
DataRecApiPos pos, /**< [in] sample position */
DataRecApiVarSample *pSamples, /**< [in] variable samples */
int32_t sampleCnt, /**< [in] length of \em pSamples */
void *arg /**< [in] user argument */
) {
int i;
for (i = 0; i < sampleCnt; ++i) {
if (pSamples[i].var == sTempId) {
int32_t curTemp = pSamples[i].value.valSINT32;
if (curTemp < sMinTemp) {
sMinTemp = curTemp;
}
if (curTemp > sMaxTemp) {
sMaxTemp = curTemp;
}
}
return;
}
}
14.7.3 Profil mit getriggerter Aufzeichnung
Das folgende Beispiel verwendet manuelle Aufzeichnung, wobei die Auf-
zeichnungsspanne durch einen Start- und einen Stopp-Trigger begrenzt
wird. Beide Trigger-Bedingungen beziehen sich auf die von der Applikation
angelegten booleschen Variable active. Der Start der Aufzeichnung soll
durch einen Übergang von FALSE auf TRUE ausgelöst werden, der Stopp
durch einen Übergang von TRUE auf FALSE. Diese Bedingungen sind mit
Hilfe der Über- und Unterschreitungsoperatoren spezifizierbar. Die Variable
active muss dazu anfangs den Wert FALSE haben.
Um den Pfad der Variablen im Variablenbaum angegeben zu können, muss
sie wie die aufgezeichneten Variablen mittels MemApi registriert werden. Im
Gegensatz zur überwachten Variablen einer änderungsbasierten Aufzeich-
nung muss sie jedoch nicht beim Profil angemeldet sein.
Setzt man die Variable active auf TRUE und einige Sekunden später wie-
der auf FALSE (im Beispiel nicht Bestandteil des Applikationscodes), wer-
den innerhalb dieser Spanne die Variablen temperature und pressure auf-