Files
sics/userscan.c
cvs 3ddb19d8a9 - Improvements to the chooper driver for the SANS2 chopper
- Fixes to the new counter and motor drivers
- Updated Linux makefiles to linux_def


SKIPPED:
	psi/dornier2.c
	psi/el734hp.c
	psi/el737hpdriv.c
	psi/makefile_linux
	psi/psi.c
	psi/hardsup/makefile_linux
	psi/tecs/makefile_linux
2003-07-14 11:56:54 +00:00

76 lines
2.0 KiB
C

/*------------------------------------------------------------------------
User configurable scans. At each scan point a scripted procedure is
called.
More info: userscan.tex
copyright: see copyright.h
Mark Koennecke, June 2001
-------------------------------------------------------------------------*/
#include <stdlib.h>
#include <assert.h>
#include <tcl.h>
#include "fortify.h"
#include "sics.h"
#include "scan.h"
#include "scan.i"
#include "userscan.h"
/*-----------------------------------------------------------------------*/
static int UserScanPoints(pScanData self, int iPoint)
{
/*
do nothing as the user is supposed to take care of the data file
*/
return 1;
}
/*-----------------------------------------------------------------------
Execute the users special procedure
------------------------------------------------------------------------*/
static int UserCount(pScanData self, int iPoint)
{
int status;
char pBueffel[512];
assert(self);
assert(self->pSics);
assert(self->pCon);
/* check for existence of command to run */
if(self->pCommand == NULL)
{
SCWrite(self->pCon,
"ERROR: configuration error, need procedure to run for user scan",
eError);
SCSetInterrupt(self->pCon,eAbortScan);
return 0;
}
/* invoke command */
snprintf(pBueffel,511,"%s %d",self->pCommand, iPoint);
status = Tcl_GlobalEval(self->pSics->pTcl,pBueffel);
if(status != TCL_OK)
{
sprintf(pBueffel,"ERROR in count script: %s",
Tcl_GetStringResult(self->pSics->pTcl));
SCWrite(self->pCon,pBueffel,eError);
return 0;
}
return 1;
}
/*------------------------------------------------------------------------*/
int UserCollect(pScanData self, int iPoint)
{
/* do nothing, its the users job*/
return 1;
}
/*------------------------------------------------------------------------*/
void ConfigureUserScan(pScanData self)
{
assert(self);
self->WriteScanPoints = UserScanPoints;
self->ScanCount = UserCount;
self->CollectScanData = UserCollect;
}