42 lines
1.6 KiB
TeX
42 lines
1.6 KiB
TeX
\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.
|
|
|