- Fixed a bug which caused the SICServer to die when a socket was broken.

- Fixed many things in DIFRAC subsystem:
  * Recoded tcentr.f etc so that the course centering will work and will not
    go into an endless loop.
  * fixed boundary overwrites which occurred when yesno or alfnum where
    uset to get a single character and several were given.
  * Addeded documentation for DIFRAC
- Added tcl-files which  support the WWW status system
This commit is contained in:
cvs
2000-03-31 13:16:50 +00:00
parent d02a81400f
commit 714b8ae84d
35 changed files with 3069 additions and 203 deletions

32
drive.c
View File

@ -51,7 +51,7 @@
#include "splitter.h"
#include "status.h"
#include "devexec.h"
#include "motor.h"
/*---------------------------------------------------------------------------*/
int Drive(SConnection *pCon, SicsInterp *pInter, char *name, float fNew)
@ -128,7 +128,7 @@
/* wait for finish */
iRet = Wait4Success(GetExecutor());
fPos = pInt->GetValue(pDum,pCon);
fPos = pInt->GetValue(pDum,pCon);
if(iRet == DEVINT)
{
if(SCGetInterrupt(pCon) == eAbortOperation)
@ -250,6 +250,27 @@
pObjectDescriptor pDes = NULL;
pIDrivable pInt = NULL;
Dummy *pDum = NULL;
pMotor pMot = NULL;
float fPos;
int iRet;
/*
treat motors separatetly in order to correct for zero points
Sighh.........
*/
pMot = FindMotor(pSics,name);
if(pMot != NULL)
{
iRet = MotorGetSoftPosition(pMot,pCon,&fPos);
if(iRet)
{
return fPos;
}
else
{
return -999.;
}
}
pObject = FindCommand(pSics,name);
if(pObject)
@ -341,11 +362,12 @@
SCWrite(pCon,pBueffel,eError);
ClearExecutor(GetExecutor());
SetStatus(eOld);
return 1;
return 0;
}
else if(iRet == DEVINT)
{
SCWrite(pCon,"Driving Interrupted",eError);
{
sprintf(pBueffel,"Driving Interrupted!",argv[0]);
SCWrite(pCon,pBueffel,eError);
ClearExecutor(GetExecutor());
SetStatus(eOld);
return 0;