- 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
76 lines
2.0 KiB
C
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;
|
|
}
|