- various enhancements in drivers

This commit is contained in:
zolliker
2009-02-19 13:28:52 +00:00
parent a0e7c9782b
commit f6e5826e19
6 changed files with 193 additions and 47 deletions

View File

@ -54,6 +54,7 @@ typedef struct {
int range;
int autoRange;
int index;
int controlChan;
} Lsc370;
static ParClass lsc370Class = { "LSC370", sizeof(Lsc370) };
@ -126,7 +127,11 @@ static void Lsc370ParDef(void *object)
ParName("set");
ParTail("K");
ParFloat(&drv->set, PAR_NAN);
if (EaseUpdate(EASE_RUN)) {
ParFloat(&drv->d.targetValue, PAR_NAN);
} else {
ParFloat(&drv->set, PAR_NAN);
}
ParName("htr");
ParTail("%");
@ -174,6 +179,11 @@ static void Lsc370ParDef(void *object)
ParAccess(usUser);
ParInt(&drv->ighHeater, -1);
ParName("controlChan");
ParList(NULL);
ParAccess(usUser);
ParInt(&drv->controlChan, 1);
ParName("currentEx");
EaseUpdate(RDGRNG_FLAG);
ParEnum(currentList);
@ -276,6 +286,10 @@ static long Lsc370Read(long pc, void *object)
default: /* FSM BEGIN ****************************** */
drv->index = 0;
chanLoop:
if (drv->channel[drv->index] == 0) {
drv->temp[drv->index] == PAR_NAN;
goto noRead;
}
snprintf(buf, sizeof buf, "RDGK?%d", drv->channel[drv->index]);
EaseWrite(eab, buf);
return __LINE__;
@ -284,6 +298,8 @@ static long Lsc370Read(long pc, void *object)
if (1 == sscanf(eab->ans, "%f", &x)) {
drv->temp[drv->index] = x;
}
noRead:
drv->index++;
if (drv->index < MAX_CHAN)
goto chanLoop;
@ -332,6 +348,9 @@ static long Lsc370Read(long pc, void *object)
goto skipHtrRng;
if (1 == sscanf(eab->ans, "%d", &rng)) {
drv->htrRange = rng;
if (rng == 0) {
drv->set = 0;
}
}
skipHtrRng:
@ -427,7 +446,8 @@ static long Lsc370Set(long pc, void *object)
/* fall through */
htrrng:
snprintf(cmd, sizeof cmd, "CSET 1,1,1,1,1,8,%g;CSET?", drv->resist);
snprintf(cmd, sizeof cmd, "CSET %d,1,1,1,1,8,%g;CSET?",
drv->controlChan, drv->resist);
EaseWrite(eab, cmd);
return __LINE__;
case __LINE__: /**********************************/