From 27a6ad9e1d3d034b0f1c84ee0d4b1594756eb703 Mon Sep 17 00:00:00 2001 From: zolliker Date: Fri, 29 Apr 2005 06:35:18 +0000 Subject: [PATCH] bug fixes --- ipsdriv.c | 19 +++++++------------ oicom.c | 8 ++++---- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/ipsdriv.c b/ipsdriv.c index 0042742..dead06d 100644 --- a/ipsdriv.c +++ b/ipsdriv.c @@ -327,20 +327,20 @@ static int IpsChangeField(long pc, IpsDriv *me) { target_reached: eve->hwstate = HWIdle; - EveWrite(eve, "A0"); /* hold */ - FSM_NEXT - evc->eMode = EVMonitor; /* we are at field, drive has finished */ - if (!me->persmode) goto hold_finish; - /* but we continue in the background */ + evc->eMode = EVMonitor; + /* we are at field, drive has finished, but we continue in the background */ me->tim = time(NULL); - stab3: FSM_WAIT(1) EveWrite(eve, "X"); FSM_NEXT IpsStatus(me); /* just check for errors */ if (time(NULL) < me->tim + 3) goto stab3; /* stabilize */ - + + EveWrite(eve, "A0"); /* hold */ + FSM_NEXT + if (!me->persmode) goto finish; + EveWrite(eve, "H0"); me->perswitch = 0; me->swtim = time(NULL); @@ -361,11 +361,6 @@ static int IpsChangeField(long pc, IpsDriv *me) { FSM_NEXT goto finish; - hold_finish: - EveWrite(eve, "A0"); - FSM_NEXT - goto finish; - off_finish: if (me->perswitch) { me->lastfield = me->current; diff --git a/oicom.c b/oicom.c index b6bc699..970d611 100644 --- a/oicom.c +++ b/oicom.c @@ -115,11 +115,11 @@ double OiGetFlt(Eve *eve, int dig, int *pdig) { } void OiSet(Eve *eve, char *cmd, double val, int dig) { - char buf[64]; - + char buf[64]; + long lval; + if (eve->syntax == 0) { - for (;dig>0;dig--) val=val*10; - snprintf(buf, sizeof(buf), "%s%05d", cmd, (int)val); + snprintf(buf, sizeof(buf), "%s%.*f", cmd, dig, val); } else { snprintf(buf, sizeof(buf), "%s%f", cmd, val); }