User Documentation
Datenrekorder
Systemhandbuch
2696780000/02/04.2020
95
Ebenfalls im Zuge der Initialisierung erfolgt das Anlegen eines Applikations-
tasks, welcher das Profil alle 10 Sekunden komplett persistiert. Die Funktion
StartRecording veranlasst den Start des Task, die Funktion StopRecor-
ding lässt den Task terminieren.
static void InitRecording() {
DataRecApiInfo info;
DataRecApiResult rc;
char varPath[80];
/*
* create new profile or get restored profile
*/
sP1Id = DataRecApiGetProfile(scProfileName, &info);
if (sP1Id == DataRecApiNoId) { /* create profile */
strcpy(info.name, scProfileName);
info.size = 1000;
info.maxVarCnt = 5;
info.bufType = DataRecApiBufTypeContinuous;
info.level = DataRecApiLevelApplRt;
info.autoStart = 0;
rc = DataRecApiCreateProfile(&info, &sP1Id);
ReturnIfNot(rc == DataRecApiResultOk && sP1Id != DataRecApiNoId);
snprintf(varPath, sizeof varPath, "APPL.MEM.%s", scVarNameTemp);
rc = DataRecApiAddVar(sP1Id, varPath, 0, &sTempId);
ReturnIfNot(rc == DataRecApiResultOk && sTempId != DataRecApiNoId);
snprintf(varPath, sizeof varPath, "APPL.MEM.%s", scVarNamePres);
rc = DataRecApiAddVar(sP1Id, varPath, 0, &sPresId);
ReturnIfNot(rc == DataRecApiResultOk && sPresId != DataRecApiNoId);
{
DataRecApiContext ctx;
ctx.intervalUs = 2000000;
ctx.priority = 16;
ctx.affinity = -1;
rc = DataRecApiSetRecContext(sP1Id, &ctx);
ReturnIfNot(rc == DataRecApiResultOk);
}
} else { /* profile restored */
rc = DataRecApiStopRecording(sP1Id);
}
sRun = 1;
sStarted = 0;
sTerminated = 0;
sTaskHdl = CreateTask("LowPriorTask", LowPriorTask, 0, 24, 4096);
ReturnIfNot(sTaskHdl != 0);
}
/
****************************************************************************/
static void StartRecording() {
DataRecApiResult rc;
int ok;
rc = DataRecApiStartRecording(sP1Id);
ReturnIfNot(rc == DataRecApiResultOk);
ok = ResumeTask(sTaskHdl); ReturnIfNot(ok);
sStarted = 1;
}
/
****************************************************************************/
static void StopRecording() {
DataRecApiResult rc;
DataRecApiPos pos;
sRun = 0; /* tell LowPriorTask to terminate */
rc = DataRecApiStopRecording(sP1Id);