bug fixes
This commit is contained in:
19
ipsdriv.c
19
ipsdriv.c
@ -327,20 +327,20 @@ static int IpsChangeField(long pc, IpsDriv *me) {
|
|||||||
|
|
||||||
target_reached:
|
target_reached:
|
||||||
eve->hwstate = HWIdle;
|
eve->hwstate = HWIdle;
|
||||||
EveWrite(eve, "A0"); /* hold */
|
evc->eMode = EVMonitor;
|
||||||
FSM_NEXT
|
/* we are at field, drive has finished, but we continue in the background */
|
||||||
evc->eMode = EVMonitor; /* we are at field, drive has finished */
|
|
||||||
if (!me->persmode) goto hold_finish;
|
|
||||||
/* but we continue in the background */
|
|
||||||
me->tim = time(NULL);
|
me->tim = time(NULL);
|
||||||
|
|
||||||
stab3:
|
stab3:
|
||||||
FSM_WAIT(1)
|
FSM_WAIT(1)
|
||||||
EveWrite(eve, "X");
|
EveWrite(eve, "X");
|
||||||
FSM_NEXT
|
FSM_NEXT
|
||||||
IpsStatus(me); /* just check for errors */
|
IpsStatus(me); /* just check for errors */
|
||||||
if (time(NULL) < me->tim + 3) goto stab3; /* stabilize */
|
if (time(NULL) < me->tim + 3) goto stab3; /* stabilize */
|
||||||
|
|
||||||
|
EveWrite(eve, "A0"); /* hold */
|
||||||
|
FSM_NEXT
|
||||||
|
if (!me->persmode) goto finish;
|
||||||
|
|
||||||
EveWrite(eve, "H0");
|
EveWrite(eve, "H0");
|
||||||
me->perswitch = 0;
|
me->perswitch = 0;
|
||||||
me->swtim = time(NULL);
|
me->swtim = time(NULL);
|
||||||
@ -361,11 +361,6 @@ static int IpsChangeField(long pc, IpsDriv *me) {
|
|||||||
FSM_NEXT
|
FSM_NEXT
|
||||||
goto finish;
|
goto finish;
|
||||||
|
|
||||||
hold_finish:
|
|
||||||
EveWrite(eve, "A0");
|
|
||||||
FSM_NEXT
|
|
||||||
goto finish;
|
|
||||||
|
|
||||||
off_finish:
|
off_finish:
|
||||||
if (me->perswitch) {
|
if (me->perswitch) {
|
||||||
me->lastfield = me->current;
|
me->lastfield = me->current;
|
||||||
|
8
oicom.c
8
oicom.c
@ -115,11 +115,11 @@ double OiGetFlt(Eve *eve, int dig, int *pdig) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void OiSet(Eve *eve, char *cmd, double val, int dig) {
|
void OiSet(Eve *eve, char *cmd, double val, int dig) {
|
||||||
char buf[64];
|
char buf[64];
|
||||||
|
long lval;
|
||||||
|
|
||||||
if (eve->syntax == 0) {
|
if (eve->syntax == 0) {
|
||||||
for (;dig>0;dig--) val=val*10;
|
snprintf(buf, sizeof(buf), "%s%.*f", cmd, dig, val);
|
||||||
snprintf(buf, sizeof(buf), "%s%05d", cmd, (int)val);
|
|
||||||
} else {
|
} else {
|
||||||
snprintf(buf, sizeof(buf), "%s%f", cmd, val);
|
snprintf(buf, sizeof(buf), "%s%f", cmd, val);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user