This is an old revision of the document!
LabLisp Host
Lisp host is a mechanism for exposing programs functionality as LabLISP functions. LabLispHost is a virtual Qt/C++ class that - when inherited - provides this mechanics. The approach is quite simple and modular in Qt/C++. Single Qt program can contain several LabLispHost classes, that are initialized at the program's startup.
In LabLISP, the host classes are implemented as LISP packages with symbols naming the hosted functions. These packages are available to the LabLISP environment from start of the hosting program. At present, we have LabLISP tightly integrated in a control program called TellMagSoft - in controls combined THz and infrared magneto-ellipsometer TellMag in our lab at UniFr.
Each LabLISP host class provides simple package name and longer descriptive label for user convenience. As the TellMag instument consists of several subsystems, the LabLISP integrated to TellMagSoft has access to their control via several packages.
- TMS - TELLMAGSOFT-DISPATCHER, control and data management functions of the software itself
- GAGE - GAGE-COMPUSCOPE, control of acquisition card for the TD-THz part
- STANDA - STANDA-CONTROLLER, multi-axis controller for polarizer motors
- SMARACT - SMARACT-CONTROLLER, controller for the piezo beam positioners
- OPUS - BRUKER-OPUS, communication with Bruker 70v OPUS software
- TCON - LAKESHORE-TEMPERATURE-CONTROLLER, sample tempearature control
- MAGNET - CRYOMAGNETICS-MAGNET-CONTROLLER, control of magnetic field
The device classes internally inherit from THardwareDevice which inherits the LabLispHost. THardwareDevice class provides C++ abstraction for controlled axes (motor positions, temperature, field) and some of the controller LabLispHosts then provide symbols representing those axes in LabLISP.