Initial revision
This commit is contained in:
42
doc/programmer/o2t.tex
Normal file
42
doc/programmer/o2t.tex
Normal file
@@ -0,0 +1,42 @@
|
||||
\subsection{Omega 2Theta}
|
||||
This is an example for a simple virtual motor. It uses two motors and runs
|
||||
the second one to exactly the double value of the first one. It can be used
|
||||
to implement omega--two--theta (o2t) scans at reflectometers of four circle
|
||||
diffractometers using the normal scan command.
|
||||
|
||||
The o2t module uses the following data structure:
|
||||
\begin{verbatim}
|
||||
typedef struct __SicsO2T {
|
||||
pObjectDescriptor pDes;
|
||||
pIDrivable pDrivInt;
|
||||
pMotor pOmega;
|
||||
pMotor pTheta;
|
||||
} SicsO2T;
|
||||
|
||||
\end{verbatim}
|
||||
The fields:
|
||||
\begin{description}
|
||||
\item[pDes] A pointer to the usual SICS object descriptor.
|
||||
\item[pDrivInt] A pointer to the drivable interface implemented by this
|
||||
variable.
|
||||
\item[pOmega] A pointer to the first motor to use.
|
||||
\item[pTheta] A pointer to the motor data structure of the second (double)
|
||||
motor to use.
|
||||
\end{description}
|
||||
|
||||
|
||||
Most of this modules action lives in the drivable interface. The rest is
|
||||
achieved through the following functions:
|
||||
\begin{description}
|
||||
\item[pSicsO2T MakeO2T(char *omega, char *theta, SicsInterp *pSics)] creates
|
||||
a new o2t object from motors omega and theta. Returns NULL on failure and a
|
||||
pointer to an o2t data structure on success.
|
||||
\item[void DeleteO2T(void *pData)] deletes an o2t object.
|
||||
\item[int CreateO2T(SConnection *pCon, SicsInterp *pSics, void *pData,\\
|
||||
int argc, char *argv[])] The object factory function for o2t
|
||||
objects.
|
||||
\end{description}
|
||||
|
||||
Please note, that o2t is just a helper variable and can not be manipualted
|
||||
from the SICS interpreter.
|
||||
|
||||
Reference in New Issue
Block a user