- Fix to various drivers due to changes in rs232controller

- hkl now searches psi in .5 steps
- first point of fastscan is driven normally


SKIPPED:
	psi/amor2t.c
	psi/amor2t.h
	psi/amor2t.i
	psi/amor2t.tex
	psi/amor2t.w
	psi/dornier2.c
	psi/el734hp.c
	psi/nxamor.c
	psi/slsmagnet.c
	psi/sps.c
This commit is contained in:
koennecke
2005-09-07 13:51:11 +00:00
parent 621c529e96
commit 93c349314c
26 changed files with 489 additions and 253 deletions

View File

@@ -7,6 +7,7 @@
Mark Koennecke, June 2005
-----------------------------------------------------------------------------*/
#include <assert.h>
#include <ctype.h>
#include "mcreader.h"
#include "counter.h"
#include "HistMem.h"
@@ -283,12 +284,12 @@ static int insertHM(pMcStasReader self, SConnection *pCon,
return 0;
}
pData = (char *)malloc(iDim[0]*sizeof(char));
pData = (char *)malloc((iDim[0]+1)*sizeof(char));
if(pData == NULL){
SCWrite(pCon,"ERROR: out of memory in mcreader inserthm",eError);
return 0;
}
memset(pData,0,iDim[0]*sizeof(char));
memset(pData,0,(iDim[0]+1)*sizeof(char));
status = NXgetdata(self->handle,pData);
if(status != NX_OK){
@@ -322,6 +323,57 @@ static int insertHM(pMcStasReader self, SConnection *pCon,
return 1;
}
/*--------------------------------------------------------------------------*/
static int getField(pMcStasReader self, SConnection *pCon,
SicsInterp *pSics, int argc, char *argv[]){
char pBueffel[512], *pPtr, pNumber[80], *pData = NULL;
int status, type, rank, iDim[NX_MAXRANK];
if(argc < 2){
SCWrite(pCon,\
"ERROR: insufficient number of arguments to mcreader getfield",
eError);
return 0;
}
if(self->handle == NULL){
SCWrite(pCon,"ERROR: no file open to read data from",eError);
return 0;
}
status = NXopenpath(self->handle,argv[2]);
if(status != NX_OK){
snprintf(pBueffel,511,"ERROR: Nexus error %s while opening %s",
self->nexusError, argv[2]);
SCWrite(pCon,pBueffel,eError);
return 0;
}
status = NXgetinfo(self->handle,&rank,iDim,&type);
if(status != NX_OK){
snprintf(pBueffel,511,"ERROR: Nexus error %s while reading %s",
self->nexusError, argv[2]);
SCWrite(pCon,pBueffel,eError);
return 0;
}
pData = (char *)malloc((iDim[0]+1)*sizeof(char));
if(pData == NULL){
SCWrite(pCon,"ERROR: out of memory in mcreader getfield",eError);
return 0;
}
memset(pData,0,(iDim[0]+1)*sizeof(char));
status = NXgetdata(self->handle,pData);
if(status != NX_OK){
snprintf(pBueffel,511,"ERROR: Nexus error %s while reading %s",
self->nexusError, argv[2]);
SCWrite(pCon,pBueffel,eError);
return 0;
}
SCWrite(pCon,pData,eValue);
free(pData);
return 1;
}
/*--------------------------------------------------------------------------*/
static int insertHMFromData(pMcStasReader self, SConnection *pCon,
SicsInterp *pSics, int argc, char *argv[]){
char pBueffel[512];
@@ -403,6 +455,8 @@ int McStasReaderWrapper(SConnection *pCon, SicsInterp *pSics,
return insertHM(self,pCon, pSics,argc,argv);
} else if(strcmp(argv[1],"inserthmfromdata") == 0){
return insertHMFromData(self,pCon, pSics,argc,argv);
} else if(strcmp(argv[1],"getfield") == 0){
return getField(self,pCon, pSics,argc,argv);
} else {
snprintf(pBueffel,511,"ERROR: invalid subcommand %s to %s",
argv[1],argv[0]);