- improvements and bug fixes
This commit is contained in:
14
arrobj.c
14
arrobj.c
@ -243,7 +243,7 @@ static void ArrayObjParDef(void *object)
|
|||||||
ArrayObj *arr = ParCast(&arrayObjClass, object);
|
ArrayObj *arr = ParCast(&arrayObjClass, object);
|
||||||
FILE *saveFile;
|
FILE *saveFile;
|
||||||
ArrayItem *item, *next;
|
ArrayItem *item, *next;
|
||||||
char *u;
|
char *u, *v;
|
||||||
WrtObjContext context;
|
WrtObjContext context;
|
||||||
static int doNotNest = 0;
|
static int doNotNest = 0;
|
||||||
int saveObjects;
|
int saveObjects;
|
||||||
@ -261,8 +261,18 @@ static void ArrayObjParDef(void *object)
|
|||||||
} else {
|
} else {
|
||||||
u = "";
|
u = "";
|
||||||
}
|
}
|
||||||
|
if (item->value) {
|
||||||
|
v = item->value;
|
||||||
|
} else {
|
||||||
|
v = "";
|
||||||
|
}
|
||||||
|
if (strchr(v, '\n') != NULL) {
|
||||||
|
fprintf(saveFile, " %s makeitem %s {%s} \"%s\"\n", arr->p.name,
|
||||||
|
item->name, v, u);
|
||||||
|
} else {
|
||||||
fprintf(saveFile, " %s makeitem %s \"%s\" \"%s\"\n", arr->p.name,
|
fprintf(saveFile, " %s makeitem %s \"%s\" \"%s\"\n", arr->p.name,
|
||||||
item->name, item->value, u);
|
item->name, v, u);
|
||||||
|
}
|
||||||
if (saveObjects) {
|
if (saveObjects) {
|
||||||
WrtObj(&context, item->name);
|
WrtObj(&context, item->name);
|
||||||
}
|
}
|
||||||
|
56
ease.c
56
ease.c
@ -934,11 +934,63 @@ void EaseMsgPar(void *object)
|
|||||||
int EaseRestartWrapper(void *object, void *userarg, int argc, char *argv[])
|
int EaseRestartWrapper(void *object, void *userarg, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
EaseBase *eab = EaseBaseCast(object);
|
EaseBase *eab = EaseBaseCast(object);
|
||||||
|
char *colon;
|
||||||
|
char *hostpos;
|
||||||
|
int port, i;
|
||||||
|
char host[64], hostport[80];
|
||||||
|
char *cCmd;
|
||||||
|
|
||||||
|
/* short string with length 0 or 1: connect to previous host/port */
|
||||||
|
if (argc > 0 && strlen(argv[0]) > 1) {
|
||||||
|
colon = strchr(argv[0], ':');
|
||||||
|
if (!colon || argc > 1) {
|
||||||
|
ParPrintf(object, eError, "ERROR: illegal syntax for: %s restart",
|
||||||
|
eab->p.name);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
port = atoi(colon + 1);
|
||||||
|
i = colon - argv[0];
|
||||||
|
if (i >= sizeof host) {
|
||||||
|
ParPrintf(object, eError, "ERROR: host name too long");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
strncpy(host, argv[0], i);
|
||||||
|
host[i] = '\0';
|
||||||
|
if (eab->p.creationCmd != NULL) {
|
||||||
|
hostpos = strstr(eab->p.creationCmd, eab->ser->pHost);
|
||||||
|
if (hostpos != NULL) {
|
||||||
|
/* replace the second part of creationCmd with new host/port */
|
||||||
|
snprintf(hostport, sizeof hostport, "%s:%d", host, port);
|
||||||
|
hostpos[0]='\0';
|
||||||
|
cCmd = calloc(1, strlen(eab->p.creationCmd) + strlen(hostport) + 1);
|
||||||
|
strcpy(cCmd, eab->p.creationCmd);
|
||||||
|
strcat(cCmd, hostport);
|
||||||
|
free(eab->p.creationCmd);
|
||||||
|
eab->p.creationCmd = cCmd;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (eab->ser->pHost != NULL) {
|
||||||
|
free(eab->ser->pHost);
|
||||||
|
}
|
||||||
|
eab->ser->pHost = strdup(host);
|
||||||
|
eab->ser->iPort = port;
|
||||||
|
}
|
||||||
|
EaseStop(eab);
|
||||||
EaseRestart(eab);
|
EaseRestart(eab);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------*/
|
||||||
|
int EaseDisconnectWrapper(void *object, void *userarg, int argc, char *argv[])
|
||||||
|
{
|
||||||
|
EaseBase *eab = EaseBaseCast(object);
|
||||||
|
|
||||||
|
ParPrintf(object, eWarning, "%s disabled (enable with: %s restart)",
|
||||||
|
eab->p.name, eab->p.name);
|
||||||
|
EaseStop(eab);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
void EaseBasePar(void *object)
|
void EaseBasePar(void *object)
|
||||||
{
|
{
|
||||||
@ -950,6 +1002,10 @@ void EaseBasePar(void *object)
|
|||||||
ParAccess(usUser);
|
ParAccess(usUser);
|
||||||
ParCmd(EaseRestartWrapper, NULL);
|
ParCmd(EaseRestartWrapper, NULL);
|
||||||
|
|
||||||
|
ParName("disconnect");
|
||||||
|
ParAccess(usUser);
|
||||||
|
ParCmd(EaseDisconnectWrapper, NULL);
|
||||||
|
|
||||||
if (ParActionIs(PAR_KILL)) {
|
if (ParActionIs(PAR_KILL)) {
|
||||||
if (eab->ser) {
|
if (eab->ser) {
|
||||||
KillRS232(eab->ser);
|
KillRS232(eab->ser);
|
||||||
|
15
euro2kdriv.c
15
euro2kdriv.c
@ -63,6 +63,7 @@ typedef struct {
|
|||||||
Statistics *stat;
|
Statistics *stat;
|
||||||
double lastRd;
|
double lastRd;
|
||||||
char *model;
|
char *model;
|
||||||
|
int rdonly;
|
||||||
} Euro2k;
|
} Euro2k;
|
||||||
|
|
||||||
static ParClass euro2kClass = { "EURO2K", sizeof(Euro2k) };
|
static ParClass euro2kClass = { "EURO2K", sizeof(Euro2k) };
|
||||||
@ -231,6 +232,11 @@ void Euro2kParDef(void *object)
|
|||||||
EaseUpdate(EURO2K_SET);
|
EaseUpdate(EURO2K_SET);
|
||||||
ParFloat(&drv->setpoint, PAR_NAN);
|
ParFloat(&drv->setpoint, PAR_NAN);
|
||||||
|
|
||||||
|
ParName("rdonly");
|
||||||
|
ParLogAs(NULL);
|
||||||
|
ParAccess(usUser);
|
||||||
|
ParInt(&drv->rdonly, 0);
|
||||||
|
|
||||||
ParName("task");
|
ParName("task");
|
||||||
ParAccess(usUser);
|
ParAccess(usUser);
|
||||||
ParList(NULL);
|
ParList(NULL);
|
||||||
@ -367,6 +373,11 @@ static long Euro2kRead(long pc, void *object)
|
|||||||
switch (pc) {
|
switch (pc) {
|
||||||
default: /* FSM BEGIN ****************************** */
|
default: /* FSM BEGIN ****************************** */
|
||||||
EasePchk(drv);
|
EasePchk(drv);
|
||||||
|
if (drv->rdonly) {
|
||||||
|
if (getTime() < drv->lastRd + 10) {
|
||||||
|
goto fsm_quit;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (drv->script && drv->script[0] != '\0'
|
if (drv->script && drv->script[0] != '\0'
|
||||||
&& 0 != strcmp(drv->script, "0")) {
|
&& 0 != strcmp(drv->script, "0")) {
|
||||||
pTcl = InterpGetTcl(pServ->pSics);
|
pTcl = InterpGetTcl(pServ->pSics);
|
||||||
@ -482,6 +493,8 @@ static long Euro2kSet(long pc, void *object)
|
|||||||
default: /* FSM BEGIN ****************************** */
|
default: /* FSM BEGIN ****************************** */
|
||||||
EasePchk(drv);
|
EasePchk(drv);
|
||||||
loop:
|
loop:
|
||||||
|
if (drv->rdonly)
|
||||||
|
goto fsm_quit;
|
||||||
upd = EaseNextUpdate(drv);
|
upd = EaseNextUpdate(drv);
|
||||||
if (upd == EASE_RUN) {
|
if (upd == EASE_RUN) {
|
||||||
drv->setpoint = drv->d.targetValue;
|
drv->setpoint = drv->d.targetValue;
|
||||||
@ -594,6 +607,8 @@ static long Euro2kStart(long pc, void *object)
|
|||||||
drv->unit = strdup("K");
|
drv->unit = strdup("K");
|
||||||
}
|
}
|
||||||
unitGiven:
|
unitGiven:
|
||||||
|
if (drv->rdonly)
|
||||||
|
goto quit;
|
||||||
ModBusPutValue(eab, 111, modBusFloat, drv->d.upperLimit);
|
ModBusPutValue(eab, 111, modBusFloat, drv->d.upperLimit);
|
||||||
return __LINE__;
|
return __LINE__;
|
||||||
case __LINE__: /**********************************/
|
case __LINE__: /**********************************/
|
||||||
|
17
pardef.c
17
pardef.c
@ -472,13 +472,15 @@ static int ParExecute(SConnection * con, SicsInterp * sics, void *object,
|
|||||||
if (argc >= 2 && 0 == strcasecmp(argv[1], "loggeditems")) {
|
if (argc >= 2 && 0 == strcasecmp(argv[1], "loggeditems")) {
|
||||||
pDynString dyn = CreateDynString(124,128);
|
pDynString dyn = CreateDynString(124,128);
|
||||||
for (info = o->infoList; info != NULL; info = info->next) {
|
for (info = o->infoList; info != NULL; info = info->next) {
|
||||||
if (info->log) {
|
if (info->log && (argc==2 || strcasecmp(argv[2], info->name) == 0)) {
|
||||||
DynStringConcat(dyn, " ");
|
DynStringConcat(dyn, " ");
|
||||||
DynStringConcat(dyn, argv[0]);
|
DynStringConcat(dyn, argv[0]);
|
||||||
|
if (info->name[0] != '\0') {
|
||||||
DynStringConcat(dyn, ".");
|
DynStringConcat(dyn, ".");
|
||||||
DynStringConcat(dyn, info->name);
|
DynStringConcat(dyn, info->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
SCWrite(con, GetCharArray(dyn) + 1, eValue);
|
SCWrite(con, GetCharArray(dyn) + 1, eValue);
|
||||||
DeleteDynString(dyn);
|
DeleteDynString(dyn);
|
||||||
return 1;
|
return 1;
|
||||||
@ -1058,8 +1060,8 @@ void ParOut(char *buf)
|
|||||||
} else {
|
} else {
|
||||||
p = "";
|
p = "";
|
||||||
}
|
}
|
||||||
ParPrintf(NULL, eValue, "%s%s%s = %s", ctx->callName, p, ctx->parName,
|
ParPrintf(NULL, eValue, "%s%s%s = %s", ctx->callName,
|
||||||
buf);
|
p, ctx->parName, buf);
|
||||||
break;
|
break;
|
||||||
case PAR_SET:
|
case PAR_SET:
|
||||||
if (ctx->parName[0]) {
|
if (ctx->parName[0]) {
|
||||||
@ -1100,8 +1102,13 @@ void ParOut(char *buf)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PAR_SAVE:
|
case PAR_SAVE:
|
||||||
fprintf(ctx->saveFile, " %s %s %s\n", ctx->obj->name, ctx->parName,
|
if (strchr(buf, '\n') != NULL) {
|
||||||
buf);
|
fprintf(ctx->saveFile, " %s %s {%s}\n", ctx->obj->name,
|
||||||
|
ctx->parName, buf);
|
||||||
|
} else {
|
||||||
|
fprintf(ctx->saveFile, " %s %s %s\n", ctx->obj->name,
|
||||||
|
ctx->parName, buf);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -374,6 +374,12 @@ $(CFGDIR)x55606.crv: ccrv inp/x55606.inp
|
|||||||
$(CFGDIR)x55918.crv: ccrv inp/x55918.inp
|
$(CFGDIR)x55918.crv: ccrv inp/x55918.inp
|
||||||
$Q -p$(CFGDIR)
|
$Q -p$(CFGDIR)
|
||||||
|
|
||||||
|
$(CFGDIR)x58599.crv: ccrv inp/x58599.inp
|
||||||
|
$Q -p$(CFGDIR)
|
||||||
|
|
||||||
|
$(CFGDIR)x58600.crv: ccrv inp/x58600.inp
|
||||||
|
$Q -p$(CFGDIR)
|
||||||
|
|
||||||
$(CFGDIR)z030114.crv: ccrv inp/z030114.inp
|
$(CFGDIR)z030114.crv: ccrv inp/z030114.inp
|
||||||
$Q -p$(CFGDIR)
|
$Q -p$(CFGDIR)
|
||||||
|
|
||||||
@ -503,6 +509,8 @@ all_crv: dev.list \
|
|||||||
$(CFGDIR)x51079.crv \
|
$(CFGDIR)x51079.crv \
|
||||||
$(CFGDIR)x55606.crv \
|
$(CFGDIR)x55606.crv \
|
||||||
$(CFGDIR)x55918.crv \
|
$(CFGDIR)x55918.crv \
|
||||||
|
$(CFGDIR)x58599.crv \
|
||||||
|
$(CFGDIR)x58600.crv \
|
||||||
$(CFGDIR)z030114.crv \
|
$(CFGDIR)z030114.crv \
|
||||||
|
|
||||||
ALLINP= \
|
ALLINP= \
|
||||||
@ -631,5 +639,7 @@ inp/x50991.inp \
|
|||||||
inp/x51079.inp \
|
inp/x51079.inp \
|
||||||
inp/x55606.inp \
|
inp/x55606.inp \
|
||||||
inp/x55918.inp \
|
inp/x55918.inp \
|
||||||
|
inp/x58599.inp \
|
||||||
|
inp/x58600.inp \
|
||||||
inp/z030114.inp \
|
inp/z030114.inp \
|
||||||
|
|
||||||
|
83
tecs/tecs.c
83
tecs/tecs.c
@ -111,8 +111,9 @@ static Plug
|
|||||||
static float
|
static float
|
||||||
set, /* set T */
|
set, /* set T */
|
||||||
setH, /* set T on heat exchanger */
|
setH, /* set T on heat exchanger */
|
||||||
set2, /* set T of seconds loop in two loop mode */
|
set2, /* set T of second loop in two loop mode */
|
||||||
htr, power=DATA_UNDEF, /* heater current percentage, heater power */
|
htr, power=DATA_UNDEF, /* heater current percentage, heater power */
|
||||||
|
power2=DATA_UNDEF, /* heater2 power */
|
||||||
tLimit, /* temperature limit */
|
tLimit, /* temperature limit */
|
||||||
tMaxLimit, /* maximal temperature limit */
|
tMaxLimit, /* maximal temperature limit */
|
||||||
maxPowerFlt, /* max. Power */
|
maxPowerFlt, /* max. Power */
|
||||||
@ -220,7 +221,6 @@ static char
|
|||||||
|
|
||||||
static char
|
static char
|
||||||
*alarmList[N_SENSORS], /* enabled alarms */
|
*alarmList[N_SENSORS], /* enabled alarms */
|
||||||
*table=NULL, /* environment devices table */
|
|
||||||
*cache=NULL, /* curve list cache */
|
*cache=NULL, /* curve list cache */
|
||||||
*logfile="<none>";
|
*logfile="<none>";
|
||||||
|
|
||||||
@ -560,16 +560,6 @@ int InstalCurve(SensorT *sensor, char *devArg) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ReadTable(void) { /* obsolete */
|
|
||||||
char nbuf[256];
|
|
||||||
if (table!=NULL) { FREE(table); table=NULL; };
|
|
||||||
str_copy(nbuf, binDir);
|
|
||||||
str_append(nbuf, TABLE_FILE);
|
|
||||||
ERR_P(table=str_read_file(nbuf));
|
|
||||||
return 1;
|
|
||||||
OnError: return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void InitSensor(SensorT *s) {
|
void InitSensor(SensorT *s) {
|
||||||
s->t=DATA_UNDEF;
|
s->t=DATA_UNDEF;
|
||||||
s->scale=1;
|
s->scale=1;
|
||||||
@ -584,10 +574,10 @@ void InitSensor(SensorT *s) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int PrepInput(char *label) {
|
int PrepInput(char *label) {
|
||||||
char *t, *e;
|
char *t;
|
||||||
char nam[16], chans[8], typ;
|
char nam[16], typ;
|
||||||
char buf[256];
|
char buf[256];
|
||||||
int i, j, l;
|
int i, j;
|
||||||
SensorT *s;
|
SensorT *s;
|
||||||
char *cfg;
|
char *cfg;
|
||||||
|
|
||||||
@ -602,14 +592,9 @@ again:
|
|||||||
str_append(buf, nam);
|
str_append(buf, nam);
|
||||||
str_append(buf, ".cfg");
|
str_append(buf, ".cfg");
|
||||||
cfg=str_read_file(buf);
|
cfg=str_read_file(buf);
|
||||||
if (cfg==NULL) { /* will be obsolete */
|
if (cfg==NULL) {
|
||||||
logfileOut(LOG_MAIN, "%s not found, try tecs.cfg\n", buf);
|
logfileOut(LOG_MAIN, "%s not found\n", buf);
|
||||||
ERR_I(ReadTable());
|
ERR_MSG("device not found");
|
||||||
t=strstr(table, label);
|
|
||||||
if (t==NULL) ERR_MSG("device not found");
|
|
||||||
e=strchr(t, '\'');
|
|
||||||
if (e==NULL || e>strchr(t,'\n')) ERR_MSG("missing ' or device name in table file");
|
|
||||||
t=e+1;
|
|
||||||
}
|
}
|
||||||
if (cfg && *cfg=='@') { /* alias */
|
if (cfg && *cfg=='@') { /* alias */
|
||||||
t=strchr(cfg,'\n');
|
t=strchr(cfg,'\n');
|
||||||
@ -641,35 +626,30 @@ again:
|
|||||||
resist=10;
|
resist=10;
|
||||||
nScan=0;
|
nScan=0;
|
||||||
unit=1;
|
unit=1;
|
||||||
|
empty=0;
|
||||||
|
full = -1;
|
||||||
} else {
|
} else {
|
||||||
InitSensor(&sensC);
|
InitSensor(&sensC);
|
||||||
|
if (strcasecmp(nam, "none") == 0) {
|
||||||
|
/* exception: he sensor is not cleared when stick is none */
|
||||||
|
if (full < 0 || sensB.type[0]=='\0' || sensD.type[0] != 'h') {
|
||||||
InitSensor(&sensD);
|
InitSensor(&sensD);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
empty = 0;
|
||||||
|
full = -1;
|
||||||
|
InitSensor(&sensD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (i=5;i<9;i++) {
|
for (i=5;i<9;i++) {
|
||||||
InitSensor(sensors[i]);
|
InitSensor(sensors[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
empty=0;
|
|
||||||
dev[0]='\0';
|
dev[0]='\0';
|
||||||
str_copy(heUnits, "%");
|
str_copy(heUnits, "%");
|
||||||
|
|
||||||
if (cfg==NULL) { /* will be obsolete */
|
|
||||||
i=sscanf(t, "%12s%n", nam, &l);
|
|
||||||
if (i<1) ERR_MSG("missing device name");
|
|
||||||
nam[strlen(nam)-1]='\0'; /* strip off quote */
|
|
||||||
t+=l;
|
|
||||||
str_copy(chans, "____");
|
|
||||||
i=sscanf(t, "%8s%n", chans, &l);
|
|
||||||
if (i<1) ERR_MSG("missing chans");
|
|
||||||
t+=l;
|
|
||||||
|
|
||||||
/* interprete settings until '+' appeares (after whitespace) */
|
|
||||||
ERR_P(CocReadVars(t, '+'));
|
|
||||||
if (strlen(chans)>4) ERR_MSG("no more than 4 channels allowed");
|
|
||||||
} else {
|
|
||||||
ERR_P(CocReadVars(cfg, '\0'));
|
ERR_P(CocReadVars(cfg, '\0'));
|
||||||
}
|
|
||||||
if (loop!=2) loop=1;
|
if (loop!=2) loop=1;
|
||||||
|
|
||||||
if (plug==&plug0) {
|
if (plug==&plug0) {
|
||||||
@ -678,16 +658,6 @@ again:
|
|||||||
j=2;
|
j=2;
|
||||||
}
|
}
|
||||||
str_copy(plug->descr, dev);
|
str_copy(plug->descr, dev);
|
||||||
if (cfg==NULL) { /* will be obsolete */
|
|
||||||
sensA.type[0]=chans[0];
|
|
||||||
sensA.type[1]='\0';
|
|
||||||
sensB.type[0]=chans[1];
|
|
||||||
sensB.type[1]='\0';
|
|
||||||
sensC.type[0]=chans[2];
|
|
||||||
sensC.type[1]='\0';
|
|
||||||
sensD.type[0]=chans[3];
|
|
||||||
sensD.type[1]='\0';
|
|
||||||
}
|
|
||||||
if (sensA.type[0]>'0' && sensA.type[0]<='4') {
|
if (sensA.type[0]>'0' && sensA.type[0]<='4') {
|
||||||
nScan=sensA.type[0]-'0';
|
nScan=sensA.type[0]-'0';
|
||||||
for (i=5;i<5+nScan;i++) {
|
for (i=5;i<5+nScan;i++) {
|
||||||
@ -713,6 +683,7 @@ again:
|
|||||||
}
|
}
|
||||||
maxPowerFlt=25;
|
maxPowerFlt=25;
|
||||||
sscanf(maxPower, "%f", &maxPowerFlt);
|
sscanf(maxPower, "%f", &maxPowerFlt);
|
||||||
|
|
||||||
for (i=j; i<j+2; i++) {
|
for (i=j; i<j+2; i++) {
|
||||||
s=sensors[i];
|
s=sensors[i];
|
||||||
typ=s->type[0];
|
typ=s->type[0];
|
||||||
@ -1257,13 +1228,19 @@ int ReadHeater(int full) {
|
|||||||
static int cntOff=3;
|
static int cntOff=3;
|
||||||
time_t now;
|
time_t now;
|
||||||
|
|
||||||
|
power2 = DATA_UNDEF;
|
||||||
if (loop==1) {
|
if (loop==1) {
|
||||||
if (full) {
|
if (full) {
|
||||||
if (relay) {
|
if (relay) {
|
||||||
ERR_P(LscCmd(ser, "HTRST?>htrst"));
|
ERR_P(LscCmd(ser, "HTRST?>htrst"));
|
||||||
htr=0;
|
htr=0;
|
||||||
|
} else {
|
||||||
|
if (twoloops) {
|
||||||
|
ERR_P(LscCmd(ser, "HTR?>htr;HTRST?>htrst;RELAYST?1>relay;RANGE?>ibuf;AOUT?2>fbuf"));
|
||||||
|
power2 = fbuf*fbuf*1e-5;
|
||||||
} else {
|
} else {
|
||||||
ERR_P(LscCmd(ser, "HTR?>htr;HTRST?>htrst;RELAYST?1>relay;RANGE?>ibuf"));
|
ERR_P(LscCmd(ser, "HTR?>htr;HTRST?>htrst;RELAYST?1>relay;RANGE?>ibuf"));
|
||||||
|
}
|
||||||
if (jRange!=0 && ibuf==0) {
|
if (jRange!=0 && ibuf==0) {
|
||||||
if (swRangeOn) {
|
if (swRangeOn) {
|
||||||
time(&now);
|
time(&now);
|
||||||
@ -1404,7 +1381,7 @@ int SetTemp(int switchOn) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ERR_P(LscCmd(ser, "SETP?[loop]>fbuf"));
|
ERR_P(LscCmd(ser, "SETP?[loop]>fbuf"));
|
||||||
if (fabsf(setH-fbuf) >= (fbuf+setH)*1.0e-5) {
|
if (fabsf(setH-fbuf) >= (fbuf+setH)*1.0e-5 || twoloops) {
|
||||||
ERR_P(LscCmd(ser, "SETP [loop]:[setH]"));
|
ERR_P(LscCmd(ser, "SETP [loop]:[setH]"));
|
||||||
if (twoloops) {
|
if (twoloops) {
|
||||||
ERR_P(LscCmd(ser, "SETP 2:[set2]"));
|
ERR_P(LscCmd(ser, "SETP 2:[set2]"));
|
||||||
@ -1989,12 +1966,8 @@ int ConfigByName(int plugNr) {
|
|||||||
logfileOut(LOG_MAIN+LOG_STAT ,"configure plug%d for %s\n", plugNr, plug->device);
|
logfileOut(LOG_MAIN+LOG_STAT ,"configure plug%d for %s\n", plugNr, plug->device);
|
||||||
plug->sensor1->present=0;
|
plug->sensor1->present=0;
|
||||||
plug->sensor2->present=0;
|
plug->sensor2->present=0;
|
||||||
if (0!=strcmp(plug->device, "none")) {
|
|
||||||
sprintf(buf, "'%s'", plug->device);
|
sprintf(buf, "'%s'", plug->device);
|
||||||
ERR_I(PrepInput(buf));
|
ERR_I(PrepInput(buf));
|
||||||
} else {
|
|
||||||
plug->descr[0]='\0';
|
|
||||||
}
|
|
||||||
settingsFlag=1;
|
settingsFlag=1;
|
||||||
return 0;
|
return 0;
|
||||||
OnError:
|
OnError:
|
||||||
@ -3439,6 +3412,7 @@ int main(int argc, char *argv[]) {
|
|||||||
CocDefFlt(ramp, RW); CocHdl(SetHdl);
|
CocDefFlt(ramp, RW); CocHdl(SetHdl);
|
||||||
CocDefFlt(still, RW); CocHdl(StillHdl);
|
CocDefFlt(still, RW); CocHdl(StillHdl);
|
||||||
CocDefFlt(power, RW); CocHdl(PowerHdl);
|
CocDefFlt(power, RW); CocHdl(PowerHdl);
|
||||||
|
CocDefFlt(power2, RD);
|
||||||
CocDefFlt(mout, RW); CocHdl(MoutHdl);
|
CocDefFlt(mout, RW); CocHdl(MoutHdl);
|
||||||
CocDefFlt(tLimit, RW); CocHdl(TLimitHdl);
|
CocDefFlt(tLimit, RW); CocHdl(TLimitHdl);
|
||||||
CocDefFlt(tMaxLimit, RD);
|
CocDefFlt(tMaxLimit, RD);
|
||||||
@ -3682,6 +3656,7 @@ int main(int argc, char *argv[]) {
|
|||||||
ERR_P(DataCreateSet(NULL, "T4", &sensA4.t, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "T4", &sensA4.t, logPeriod, LOGLIFETIME, tim));
|
||||||
ERR_P(DataCreateSet(NULL, "Aux", &aux, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "Aux", &aux, logPeriod, LOGLIFETIME, tim));
|
||||||
ERR_P(DataCreateSet(NULL, "P", &power, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "P", &power, logPeriod, LOGLIFETIME, tim));
|
||||||
|
ERR_P(DataCreateSet(NULL, "power2", &power2, logPeriod, LOGLIFETIME, tim));
|
||||||
ERR_P(DataCreateSet(NULL, "ScanChan", &scanChan, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "ScanChan", &scanChan, logPeriod, LOGLIFETIME, tim));
|
||||||
DataUndef(0);
|
DataUndef(0);
|
||||||
ERR_P(DataCreateSet(NULL, "Set", &set, logPeriod, LOGLIFETIME, tim));
|
ERR_P(DataCreateSet(NULL, "Set", &set, logPeriod, LOGLIFETIME, tim));
|
||||||
|
Reference in New Issue
Block a user