About

The development of WinSPA started back in 2005; the aim was to replace the Spa4.1d software of the SPA-LEED by a Windows (R) software of at least comparable functionality.

logo of WinSPA

Since then, it has grown to more than 40.000 lines of code and extended the possibilities of a SPA-LEED to reciprocal space maps as a standard scan mode, introduced the option to run multiple scans in parallel and bridges a smooth transition from legacy ISA hardware to modern PCI/PCIe hardware.

WinSPA is being used in more than 20 research affiliations on four continents for data acquisition with SPA-LEED:

world map: WinSPA users

Affiliation Country
Academy of Sciences of the Czech Republic Czech Republic
Commissariat a l'energie atomique et aux energies alternatives (CEA) Saclay France
Consiglio Nazionale delle Ricerche - SPIN (CNR-SPIN), Napoli Italy
Chiba University Japan
College of Science, Sultan Qaboos University Sultanate of Oman
Freie Universitaet Berlin (FUB) Germany
Hebei Semiconductor Research Institute (HSRI) China
Institut des Nanosciences de Paris (INSP-UPMC) France
Johannes Kepler Universitaet, Linz (JKU) Austria
Institute of Physical and Theoretical Chemistry, Universitaet Bonn Germany
Leibniz Universitaet Hannover Germany
National Institute for Material Science (NIMS) Japan
National Institute of Standards and Technology (NIST) USA
Peter Grünberg Institut, FZ Juelich Germany
Philipps Universitaet Marburg Germany
Pohang University of Science and Tech (POSTECH) Korea
Queensland University of Technology Australia
SAGA Light Source Japan
Technische Universitaet Chemnitz Germany
Universitaet Duisburg Essen Germany
Universitaet Osnabrueck Germany
Universitaet Wuerzburg Germany
University of Bristol UK
Wilhelm-Ostwald-Institut, Universitaet Leipzig Germany

WinSPA is distributed by out-of-the-box systems GmbH, Essen, Germany. Please visit the website for further details if you are interested in purchasing a license of WinSPA.

History and Roadmap

The author of WinSPA, Dr. Peter Kury, had his first contact with the SPA-LEED in his master's thesis in 1999, supervised and graded by Prof. M Horn-von Hoegen and Prof. M. Henzler, during the in-situ investigation of film stresses during Ge/Si heteroepitaxy (with and without surfactants) and Si homoepitaxy. At this point in time, he already had more than 10 years of experience in computer programming (Turbo Pascal 6, Borland Pascal 7, Delphi 4).

Still it took another five years before towards the end of his PhD thesis the interest of improving the software support for the SPA-LEED came up again.

Of course, already the transition from DOS to modern Windows (R) versions (XP, 7 and 10 were tested) lead to a large improvement in usability; network data access, network printer access, 24 bit display colors, remote desktop operation, easy updates via internet, multiple windows in parallel etc. are considered a matter of course nowadays, but were impossible to realize with reasonable effort back in the days of MS-DOS (R).

In the following, the history of the software from V0.21 on is explained in detail.

V 0.21 (10.8.2005)

- line scan start/end values fractional
- spline extrapolation via average slope
- line profile parameters output in tools window
- first rectangle parameters output in tool window
- some initialization messages specified more precisely
- support of PCI-20001-1A (no DIO) discontinued
- DLL exit procedure changed
- added some advice windows to "test wiring"

V0.22 (18.8.2005)

- added beam parking in "scan engine idle" situations
- format engine access times with leading zeros
- auto save during repetetive scan is now possible with numbered file names
- checked w2d to d2d conversion and vice versa
- change form state via navigator: only window on/off instead of minimize/maximize
- added LastCps property to TSpaLeed object
- added readout of LastCps by ratemeter
- ratemeter MaxCPS is now used for display

* bug fix: x center and y center in 2D scan were both assigned as the GUI value of x center
* bug fix: ratemeter display value was fixed to 0.0: Min(0,Min(100,value)) instead of Max(0,Min(100,value))

V0.23 (1.12.2005)

- added "license settings" tab in software settings window
- added copy protection via drive ID of USB drive (not active yet)
- the less important group boxes in the 2D scan window can now be minimized for better clarity of the GUI
- R sensitivity (software settings) determined for Omicron SPA-LEED as 0.5 mm / V *(100eV/E)
- tool buttons disabled until evaluation tools work stable
- SEM scan window got same GroupBoxes as 2D scan window
- tool buttons also added to Hering window
- SEM scan is now always atomic
- so is the 1D scan
- Minimize Buttons for group boxes also in SEM and Hering window
- moved UpdateGroupBoxes into the PRIVATE section of TScan2D
- same for the local vars
- energy/phase edit style in 1D scan changed to two normal edits
- removed "auto" checkbox in 1D scan, use "auto" Button instead (consistently with 2D scan)
- created new 1D data structures; d1d, w1d export and import
- tool buttons in 1D scan window von TBitBtn auf TSpeedBtn umstellen
- automatic path shortening of Edit of File name in 1D scan upon Enter/Exit events
- 1D scan window can now (again) load, display and save 1D scans
- Make TXYPlot save against log scaling attempts of values near zero
- Replace StrToFloat in Form1DScan>ButtonApply>OnClick by CheckDouble in order to accept decimal points AND commas

* bug fix: Counts in 2D scan were not initialized properly (range fixed to 1..10000)
* bug fix: FileName from EditFileName.Text is now the suggestion in the 2D scan (=SaveDialog1.FileName)
* bug fix: internal energy gain set to 50.0 (10V ~ 500eV), was set to 15.0 like deflection amps
* bug fix: range check for energy voltage changed to [0..10V] (was [-10V..10V])
* bug fix: output voltage of 12Bit D/A converters must be - for some reason - given as 0..32767 (not as expected: 0..4095)
* bug fix: crash at program termination fixed: SpaLeed.ExitHardware just as ResetHardware, but without messages
* bug fix: spot marker tool SpeedButton now disabled after Form2DScan.Create
* bug fix: EditYSize in Form2DScan disabled during scan

V0.24 (26.1.2006)

* overload Plot routine in TXYGraph for cardinals and missing x array
* introduce global scaling variables in TAxis for physical and logical coordinates
* enable/disable GUI methods in 1D scan introduced
* tool icons in 1D scan changed
* navigator buttons of yet unfinished scan modes disabled
* "estimated time" update in SEM scan added
* "estimated time" update in kx-kz scan added
* enable/disable GUI methods in kx-kz scan introduced
* enable/disable GUI methods in SEM scan introduced
* I(V) scan form added
* preview of XOR color in SoftwareSettingsForm added
* added printer setup in SoftwareSettingsForm
* elapsed time display added in 2Dscan form
* added transparent and BackgroundColor properties in TXYGraph and TXYData
* automatic generation of spline trace for 1D scan implemented
* histogram function (lin/log scaling) written

* bug fix: display real k coordinates on x axis in 1D plot
* bug fix: update estimated time already after creation of 2D scan window
* bug fix: update estimated time already after creation of kx-kz scan window
* bug fix: update estimated time already after creation of sem scan window
* bug fix: update of global color changes in 1D scan
* bug fix: update of global color changes in 2D scan
* bug fix: TXYGraph and TXYData now with frames

V0.25 (9.3.2006)

- GUI of 1D scan finished
- routines in 1D scan unit sorted
- routines in 2D scan unit sorted
- routines in kx-kz unit sorted
- GUI enable methods in 1D scan changed
- "about" window changed
- data display, color table and scaling capabilities added to kx-kz scan
- data display, color table and scaling capabilities added to SEM scan
- color tables "Fire","Rainbow" and "Geo" added
- GUI hints for 2D, 1D, SEM and kx-kz window added/changed/corrected
- ratemeter form finished
- spot profile optimization window GUI finished
- multiple 2d scan forms (max. 5) added
- scan Engine optimized
- opti form finished
- GUI of intensity-versus-time scan finished
- I(V) scan form removed
- SEM scan form finished
- first version of k space calculator GUI

* bug fix: filename update in 1D scan window
* bug fix: filename update in 2D scan window
* bug fix: x,y points equal in SEM window
* bug fix: OnIdle Event added to TDispatcher, connected to ParkBeam method of TSpaLeed
* bug fix: fractional values for 2D scan x,y size allowed
* bug fix: park position was k-unit dependent
* bug fix: E was set to 0eV at program start and end => not good for emitter!
* bug fix: k and R sensitivity calibrated

V0.26 (28.3.2006)

- kx-kz scan form finished
- multiple 1D scan forms added
- multiple kx-kz scans added
- sample property "inner potential" removed
- file I/O via NetCDF added for 2D scans
- tab for NetCDF in SoftwareSettings finished
- kx-kz scan renamed to RSM scan (for reasons of political correctness)
- warning message added after scan load if current sample<>saved sample
- display of peak intensity added in opti form
- finetuning of WinSPA logo
- textlogger added
- NetCDF I/O methods encapsulated in different classes
- file I/O via NetCDF added for 1D scans
- file I/O via NetCDF added for SEM scans
- file I/O via NetCDF added for RSM scans
- added TStartRel property (local relative time of stop watch)
- added new color table: interference
- deflection voltage form added (to be found in software settings form) and connected to TSpaLeed
- added "try again" button in SoftwareSettings>NetCDF for on-the-fly .dll load
- scaling functionality added to spot tracker form

* bug fix: display LocalFileName instead of EditFileName.Text in export dialog of 1D and 2D scan
* bug fix: 2D scan in opti was not displayed correctly: Rect() seems to ignore x2,y2 (always use Rect(x1,y1,x2+1,y2+1))
* bug fix: external geometry angle is 120° total, not 60°
* bug fix: color table was not updated after opening a scan file
* bug fix: comment was not saved properly
* bug fix: kUnits were not evaluated during load scan
* bug fix: SampleInfo was not initialized properly during start scan
* bug fix: NC_VAR_INQ command for CycleCnt was errorneous
* bug fix: line spacing in ...ToASCII routines increased
* bug fix: TMemo.Lines.Text is now used for comment read in/out
* bug fix: GetTime+Date use for TStart and TStop of scans
* bug fix: empty strings (comment, SName) in NetCDF cause problems: replace by "no comment" or "undefined"
* bug fix: decimal ',' is now also accepted for gatetime values in UpdateEstdTime
* bug fix: gate time was not initialized properly during start of RSM scan
* bug fix: y axis scaling (sqrt/lin) of RSM scan after load was wrong
* bug fix: label of y axis in RSM scan was wrong
* bug fix: min/max counts of d1d scans are now determined automatically
* bug fix: y axis label in 1D scan was "Volts"
* bug fix: gatetime in opti scan was not initialized properly
* bug fix: RSM scaling was sqr instead of sqrt
* bug fix: units for variable energies in RSM .nc file were not set
* bug fix: stop watch time was not initialized after form.create
* bug fix: scan rotation was calculated via passive rotation, i.e., CW angle
* bug fix: 1D scan scan modes radiobuttons were disabled during scan
* bug fix: spot follower renamed to spot tracker in all scan forms
* bug fix: 1D scan x-axis scaling was not changed to correct values during start scan
* bug fix: units label of 1D scan x-axis scaling were not initialized properly

V0.27 (25.8.2006)

- added hints in xy offset voltage window
- added manual energy form for visual mode
- added conditional compiler directives for a free trial version
- read/write of config file added in order to save certain settings
- license tab in software settings changed
- spot tracker scan implemented
- unused tool speed buttons removed
- first draft version of help file created
- font of stop watch display changed
- form captions shortened (no "WinSPA - " before 2D scan, 1D scan etc.) to make them readable even in minimized state
- GlobalVars.Max2DZoom introduced and set to 8
- biderectional scan introduced in 2D scan object
- hardware access externalized into SpaDAQ.dll
- meters window created for full information about current operation
- callback calls introduced for meters
- copy protection removed
- license file I/O added; display user name

* bug fix: NetCDF "try again" button should only be enabled, if library is not already found
* bug fix: start/stop button enableds in stopwatch were not consistent
* bug fix: start value for manual energy was 20eV (too low)
* bug fix: RSM scan was inverted in y-direction
* bug fix: SpaLeed.Energy:= was not used by sliders in manual energy form
* bug fix: initialization of sample data in software settings form was not correct
* bug fix: root directory in SoftwareSettingsForm SearchDir was not initialized correctly
* bug fix: RSM scan dimension variable kz was saved to file in wrong order
* bug fix: crashes in vs. t scan PaintBox.Repaint due to missing Canvas.Lock/Unlock
* bug fix: E<0 tested before phase update
* bug fix: update phase in 2D scan after energy range check
* bug fix: "could not evaluate" error message after check value uses now quotes for string display
* bug fix: standard display setting for 2D scan is logarithmic
* bug fix: scan rotation with large angles produced scan distortions
* bug fix: color update in SEM and 2D scan upon OnShow and OnActivate was not executed
* bug fix: park position set to (-100,100) in order to avoid backfolded intensity to damage the channeltron
* bug fix: rotational angle of 1D scan was in radians instead of degrees
* bug fix: flickering of rate meter reduced (ControlStyle = CSOpaque, Color= ClWhite)
* bug fix: rate meter crashes due to write conflicts on canvas avoided

V0.28 (18.7.2007)

- test under XP scheme (luna)
- window headers made consistent: software settings, stop watch without "WinSPA - ", software settings, opti and about now with logo icon
- scaling in 1D profile tool can now be changed (log/lin)
- added scan timing for measurement delay in msecs./Volt
- added copy/paste of 1D and 2D scan parameters via clipboard
- spline scans de-activated for now
- added help paths to config file
- added alpha Label in line tool window
- added 1D scan data paste to RSM scan
- added animation for crosshair tool in 2D scan
- added message dialog for information about senseless combination of bidirectional and direct retrace scan
- CrosshairTool in 2D scan: coordinate readout and intensity bar
- Added angle tool for 2D scans
- added warning message if no D/A converter for energy remote control is installed
- added 0D data copy&paste functions
- spot tracker reference point wired to 1D and 2D scan; prepared in RSM scan
- Made MyDialogs more consistent with different MessageBox calls
- spot tracker is now working
- spot tracker file I/O finished

* bug fix: line profile contained wrong coordinate check which led to mirroring of coordinates
* bug fix: wrong icons in evaluation tools win and for winspa.exe file
* bug fix: arctan range checks included
* bug fix: coordinate transformation for evaluation tools in rotated scans
* bug fix: RSM scan used radians instead of degrees -> wrong rotation
* bug fix: counts units in NetCDF data files were accidentally "seconds-1"
* bug fix: several typos and capitalization of GUI text corrected
* bug fix: park positions in software settings windows were updated in LEED changes apply procedure
* bug fix: scan engine check boxes (bidirectional scan, direct retrace scan) were not connected to GlobalVars and TSpaLeed
* bug fix: draw method in TGraphicTool yielded residual markers
* bug fix: some dialogs had german button captions; use MessageBox instead of MessageDlg
* bug fix: angle tool ellipse was not radius constrained
* bug fix: use PChar(' '+#0) instead of simple PChar(' ') for Pascal to Ansi String conversion
* bug fix: Import of PChar string: clean memory first with #0
* bug fix: 2D CoM Spot Tracker algorithm used wrong index packing in 2D array decomposition

V1.00 (11.5.2009)

- "ranges" tab added in "setup"
- paste option for 0D coordinates in SpotTracker made more self-explanatory
- text in energy control notification window re-written
- lots of code refactoring

* bug fix: manual energy range ist now consistent with global energy range
* bug fix: crash of spot tracker with non-atomic scans avoided (OnIdle inside CriticalSection)
* bug fix: spin edit of paste destination in SpotTracker window can now not be edited anymore
* bug fix: 2D Y0 center value was not saved correctly

V1.01 (21.8.2009)

- scan engine messages window: change of colors and layout
- InitialDir of OpenDialog and SaveDialog made consistent in Scan2D, Scan1D, RSM, SEM, SpotTracker
- peak hold and moving average time scales increased in meter window
- Auto tmin in SpotTracker added
- tmax scaling of SpotTracker according to current range
- rescale of SpotTracker during scan activity allowed
- display range requesters in SpotTracker stretched
- auto cps scaling in spottracker implemented
- timing settings added in software settings form (Energy, deflection voltages, pulse heating)
- 2D angle tool: outer angle and counts gauges added
- 2D line profile tool: gauges added for first and last point
- default label names changed in 2D evaluation tools
- gradient arrow and curvature circle added to 2D crosshair tool

* bug fix: Data path is now used for TextLogger instead of program path
* bug fix: SEM Y0 center value was not saved correctly
* bug fix: division by zero in 2D scan angle tool avoided (obvious reason: dx=0 OR dy=0)
* bug fix: Paste coordinates sometimes not working due to incorrect "Error" variable initialization in ReadClipboardTextInStringList
* bug fix: Meters display (TLabel) secured with Canvas.Lock / Unlock
* bug fix: Stop watch display secured with Canvas.Lock / Unlock
* bug fix: spot tracker: NextIndex:=DataInfo.Points added to LoadFile for initialization of memory
* bug fix: spot tracker: x axis values initialization upon FormCreate (MinXValue, MaxXValue) and StartScan

V1.02 (19.4.2010)

- phase and energy calculation results in 1D and 2D scan windows now with only 3 digits for better clarity
- XRange tools added (data tools 1D)
- data tools 1D: average background tool
- data tools 1D: peak to background difference tool
- data tools 1D: FWHM from variance tool
- data tools 1D: integral tool
- online help corrections and additions

* bug fix: "background color" default setting was incorrect in software settings tab
* bug fix: text color was always black in most graphs, independent on the "lines and text color" global setting
* bug fix: update phase in DataInfoToGUI now with only 3 numbers after decimal point, too, as all other phase outputs

V1.03 (6.6.2010)

- "Mode of operation" display is now wired with SpaDAQ callback routine
- Hardware Info reading included to software setting form
- data tools image coordinates calculations are now encapsulated in TDataDisplay
- 2D data tools: Ellipse tool implemented

* bug fix: voltage meters are now asynchronous to scanning, which avoids freezing (Delphi VCL is not thread-safe); 100 msecs. sampling time
* bug fix: ring buffer of rate meter contained an indexing error
* bug fix: SpaDAQ contained wrong callback value for mode of operation
* bug fix: peak search length in rate meter was not calculated via "MOD N"

V1.04 (18.7.2010)

- One universal message dialog system implemented
- voltage meters cycle time reduced from 100 ms to 70 ms for faster response
- voltage meter display update is now conditional, only if voltages have changed (CPU time reduction)
- ASCII settings group box added to former NetCDF (now: file I/O) tab in software settings form
- confirmation messages for sample change and repeller adjustment in SEM are now consistent with all other dialogs
- ASCII export added to 2D scan form
- ASCII export added to 1D scan form
- ASCII export added to RSM scan form
- ASCII export added to SEM scan form
- advanced 1D scan settings form created; still not accessible yet

* bug fix: Confirmation/Warning dialog captions are now always in english, independent of OS version (localization)
* bug fix: save/open dialogs in all scan windows are now being updated only once from the gloabl data path
* bug fix: update config.txt dialog asked for MR_YES instead of MR_OK
* bug fix: program path default is now overwritten with ExtractPath(ParamStr(0)) for easy change of program path
* bug fix: help path default is now consistent with program path plus \help\
* bug fix: ASCII export of all 2D data used wrong indices in last scan line
* bug fix: double buffering (in real: quadruple buffering) of PaintBox in 1D scan form is now working and allows flicker-free resizing
* bug fix: 1D tool in 2D scan yielded wrong angle for scans with angle<>0

V1.05 (21.11.2010)

- SEM data tools window added, but not yet accessible
- default maximum gate time reduced from 1000ms to 100ms
- "Navigator stay on top" button removed (always on top)
- All buttons for additional forms (calculator, messages, offsets, manual E, ...) moved to Navigator form
- Navigator form changed to less/more style
- xy wiring test dialogs changed from exclamation style (warning) to notification style (information)
- layout of settings form changed
* help lines color setting added
* new preview image
* page order changed
* layout settings added
* timing settings added to LEED and DAQ tab; timing is not yet implemented, therefore GUI elements not accessible
- code refactoring of k calculator
- all lens focus GUI elements (except bargraph) removed from meters window
- export of pure image added to 2D scan, SEM scan, RSM scan
- additional tool windows (k calculator, license, manual E, offset voltages) are now in borderstyle=BSSizeable and with icon
- k sensitivity calibration group box added to k calculator window
- layout of manual energy form adapted to defelction offsets form layout
- added save/load of desktop schemes (=positions and sizes of all scan related windows)
- image shift correction added (note: not yet saved into config file, only runtime setting !)

* bug fix: 2D Ellipse tool yielded center of mass RELATIVE to scan coordinates; instead, offset and rotation of analyzed scan must also be used for ABSOLUTE position calculation
* bug fix: In the 2D scan the auto calculation of y scan size could lead to a "division by zero" exception if Nx=0
* bug fix: In the SEM scan the auto calculation of y scan size could lead to a "division by zero" exception if Nx=0
* bug fix: double buffering (in real: quadruple buffering) of PaintBox in spot tracker scan form is now working and allows flicker-free resizing
* bug fix: filename in bmp export dialogs was shortenend (XXX...XXX)
* bug fix: Question "settings were changed, save?" is now in OnCanClose instead of OnClose event
* bug fix: 2D spot tracker algorithm improved (# of points, CoM calculation)

V1.06 (2/6/2011)

- Numerous small GUI improvements (consistent naming, tab order, capitalization, hints, etc.)
- External lens GUI finished in software settings form
- k space calibration moved into a separate form (from k calculator)
- Image shift correction form created
- Layout of meters form changed; lens voltage display changed from bargraph to digital number
- splash screen finetuned (Omicron Logo)
- "About" window increased, date and version info separated, changed logo used
- Absolute/relative error boundaries added to ranges tab in software settings
- "About" button logo changed from Omicron to exclamation mark
- program directory is now automatically being searched for available desktop configuration files
- About and Title form combined (executable size reduced by approx. 200kBytes!)
- GUI for load/save of desktop schemes optimized
- All forms added to load/save of desktop schemes
- range for medium slider in manual energy form reduced to 10eV
- R calibration form created
- user defined substrates are now automatically added to substrates preset list
- SEM data analysis tools added
- copy&paste functionality added to SEM data evaluation tools form
- GUI layout of Software Settings form optimized
- Global "additional data colors" definition implemented instead of separate local definitions in spot tracker, shift calculation etc.
- "Check wiring" removed
- choice between offine and online help removed, two independent buttons used instead
- rotational angle of voltages added
- x.yy.zz version numbering for beta version implemented
- k sens for external geometry added
- Cts "Simulation" in SpaDAQ changed a bit: Image shift added, Modulation of (00) rod added (acc. Si(001) step height)
- "Facet rods" added to Simulation
- Option for automatic parameters recalculation upon changes of scan units added
- Real Space "Simulation" added
- Global File Open with file type detection added
- 1D section graphic tool for RSM scans implemented
- "copy to clipboard" of 1D scan tools implemented
- spot tracker information on spot motion is now used energy-dependent, therefore also in RSM possible
- two alternative k sensitivities for internal and external geometry are now defined

* bug fix: desktop load/save ingnores now missing data
* bug fix: desktop scheme load crashed, if file did not exist
* bug fix: flickering of stop watch avoided by doublebuffering
* bug fix: invalid clipboard data could lead to problems if copy from clipboard was used
* bug fix: click on default button in software settings form influenced other but active tab
* bug fix: Ranges check in 1D scan: Wait time was compared with gate time limits
* bug fix: Input variable ranges check in all scans partially incorrect due to missing AnyError initialization
* bug fix: In 2D and 1D scan windows the phase value in the display was incorrect upon scan start (the saved value is correct!)
* bug fix: K calculator phase calculation used radians instead of degrees
* bug fix: The auto y calculation checkbox in 2D scans was not re-activated after scans (Edit.Enabled:=yes AND (NOT Checkbox.Enabled); instead of ...Checkbox.Checked; )
* bug fix: k calculator k_par conversion was not working (input value was re-initialized to zero)
* bug fix: Hardware information property could only handle 100 chars, which was not enough, if 12 bit board at BurrBrown card is present; increased to 300
* bug fix: Opti scan showed directed drift, in case the diffraction spot was lost; now it is just randomly walking
* bug fix: In rectangle tools (2D, SEM) the Logic coordinates display was hidden behind the "Logic coordinates [?]" caption
* bug fix: Incorrect input values for x size in 2D and SEM scan yielded annoying error dialogs, if "y size auto" was active. Now, only the y size field is marked in order to show the problem
* bug fix: Brackets in R sensitivity units were incorrect: V / (E/100) is correct instead
* bug fix: The position calculation (for example in graphic tools) was wrong by about two pixels.
* bug fix: UpdatePhase in 1D and 2D scan is now done in Form.OnShow
* bug fix: Direct retrace in line scans now always to individual starting point (reverse: last point)

V1.07 (5/1/2011)

- New PCI hardware support added to SpaDAQ.dll
- Fading color of trace plot in opti scan
- config.txt saving always stay on top
- cosmetics spot tracker
- spot tracker new algorithm
- separate draw method for 2d tools line scan
- all k units usable in opti scan
- cosmetics opti scan GUI
- PWM tab added to software settings form
- change coordinates in Opti, incl. recalculation upon changes
- Now all color tables allowed and selectable for Opti 2D scan

* bug fix: Direct retrace voltage in SpaDAQ.dll was incorrect, in most cases +/- max. deflection voltage
* bug fix: Finalize and setlength in SpaDAQ LineScan now if and only if Length * bug fix: memory usage was shown normalized (0..1) in spot tracker, not in percent (0..100)
* bug fix: Copy to clipboard in OptiScan yielded relative, not absolute Center of mass of spot
* bug fix: crash at program's end due to callback routines of SpaDAQ.dll which still pointed to scan engine messages routines
* bug fix: VCL conflict in Spot Tracker removed by using Synchronize for ScanEngine call
* bug fix: k space Calculator S(E) calculation still used angle in radians instead of degrees

V1.08 (9/23/2012) - lines of code: 39787

- Delphi compiler changed from 2005 Personal to XE2 Professional
- Development from now on under Windows 7 Professional 64 bit
- Large analysis display in opti scan added (magnification glass button)
- 0D coordinates as center coordinates accepted in 2D scan if pasted from clipboard
- other units than Volts can be pasted into image shift calculation form and are automatically converted
- Crtl+Alt+C and Ctrl+Alt-V for copy/paste of scan data to clipboard used
- spot tracker algorithm changed back to 2D scan
- GUI cosmetics: many forms adapted to XP Luna and Vista/7 Aero styles
- code refactoring for adaption to new Delphi string types (unicode)
- hardware revision 2 of Me-1400 external circuitry
- automatic zoom calculation of image displays (2D, RSM, SEM) added
- spot color legend added to spot tracker
- high-res icon created for Vista and Windows 7 style previews
- XY deflection voltage display Form added
- B Lens and Ramp voltage displays added to voltage monitor
- New spot tracker (octagon) introduced
- DAQ tab in software settings split to "DAQ - D/A" and "DAQ - Counter"
- Aux channels gain and units settings added to software settings
- Analog signal routing group box added to software settings
- PWM GUI moved from Software Settings to separate Form and GUI rework
- Fading Color plot capability in XYPlot
- SetXYVoltage method + Callback
- octagon spot tracker: shape/uniformity, right lower border, retraces
- E-Lens, B-Lens & Ramp control added to SpaDAQ.dll (incl. Callbacks)
- PWM functionality added
- Energy control voltage offset introduced offset
- export dxd in Volts, independent of previous unit
- finalize buffer in read/write d1d
- Dynamic Linking of Hardware DLLs a la NetCDF Unit
- SetTimeConstants
- SynchronizerParameterChange
- CriticalSectionHardwareAccess
- Unit for BurrBrown
- PROCEDURE SetEnergyChannel, SetXDeflectionChannel, SetYDeflectionChannel, SetELensChannel, SetBLensChannel, SetRampChannel
- PROCEDURE GetEnergyChannel, GetXDeflectionChannel, GetYDeflectionChannel, GetELensChannel, GetBLensChannel, GetRampChannel
- FUNCTION DAChannelNum
- timing functionality in SpaDAQ.dll
- FUNCTION PWMAvailable
- FUNCTION SpaDAQ_AnyError
- SpaDAQ.dll included into main program
- Signal Routing
- Hardware access transferred to main program
- Rate meter: Display of seconds w/o cps update and time out of display (reset to "zero" after 5 seconds)
- Global Parameters of TSpaLeed are now ThreadSafeVariables
- Ramp generator functionality added
- Design of magnified opti spot analysis window finetuned
- Check Spa4.1d files form added
- x,y,x1,y1,x2,y2,dx,dy added to export of .dxd
- Global AnyError variable in hardware unit added and checked upon scan engine message display

* bug fix: checkbox "full range" in 1D scan: Min/Max range edits are adatpted to scan, if full is chosen
* bug fix: Offset voltages from image shift compensation were also used for SEM scans. This is now removed.
* bug fix: y coordinate of first data point were ignored in autoscaling of Image Shift Calculation
* bug fix: axis labels of RSM scan changed to kpar/kperp (z axis label was always "S")
* bug fix: filter in SEM scan window for default file type was set to *.w2d, now *.nc ("?" button)
* bug fix: Evaluation Tools 2D: Crash upon window resize, if no 1D linescan was present
* bug fix: Mesh instead of row distances were referenced for example surfaces Si(111) and Ge(111). This is now corrected. Please check calibration of your instrument.
* bug fix: exception, if second point of 2D line section at lower end of image
* bug fix: division by zero, if counts within line scan are all zero
* bug fix: scaling of display of FWHM bars in Opti scan was incorrect for 1/A and %BZ as units
* bug fix: Memory usage display for spot tracker upon load file was incorrect
* bug fix: Sample info in spot tracker was not saved at all
* bug fix: memory leak in SpotTracker.ReadNC (AnsiString memory reserved twice via two GetMem calls, but freed only once)
* bug fix: display start time is now set to zero upon new scan start (otherwise auto t-axis scaling could make no sense)
* bug fix: y axis scaling in spot tracker was not saved in scaling info upon scan start
* bug fix: After spot tracker use the beam park position was not used
* bug fix: Spot tracker data array lengths were incorrectly set to the real data size upon file read (Crash at re-start)
* bug fix: Active[j] of additional spots was not evaluated upon read file (all data were set to active)
* bug fix: Spot tracker: Name and x0,y0,FWHM of reference spot were not displayed correctly upon file open
* bug fix: TStop was always zero for autosaved scan files (1D, 2D, RSM, SEM)
* bug fix: ReadD1D/D2d could cause IOErrors if previously WriteD1d/D2d was used (FileMode was still in fmOpenWrite)
* bug fix: Software Settings "Change only active tab" was checked for mbYes, mbAll instead of mYes, mbNo
* bug fix: Continous scans did not give back control to scan engine

V2.00.xx (10/2018) - lines of code: approx. 41.000

- remote control of software via external DLL
- explicit selection of hardware in config.txt via "hardware type = "

* bug fix: Order to read config.txt and init hardware lead to assignment of "not connected" to all DAC channels

V2.1 (12/2019) - lines of code: 44.932

- autoscale to fit window
- User defined Color Tables
- Major redesign of Opti: Arrows for shift, color tables, GUI fine tuning, manual energy slider (even during scan), 2D scaling linear/log
- Click & log in Stop Watch added
- several icons were updated
- Additional logic channel added (Aux)
- Counter timing via t90 times and signed DBL
- Pre-defined color schemes for GUI added
- PWM duty cycle boundaries, T90 times and relay switch time added to ranges tab in software settings
- Major redesign of software settings form: Added scan & user tabs, new categorization, optimized form order
- LED color settings added
- license form removed
- new color table "out of the box" added
- offline help acces removed
- Global color table preset added
- Infos about used hardware extended and made more readable
- multiple user profile with separate config files and different skill levels
- advanced counter options: reduce scan time at low energies, dithering, dead time correction
- new color table "Fire 2" added
- cnts or cps as scaling units for 1D, 2D, RSM, SEM

* bug fix: access violation PWM (PWM checkbox, duty cycle slider) in Sim Mode w/o hardware
* bug fix: Color updates in Opti during scan were incomplete (background, marker, help lines)
* bug fix: Color updates in ramp were missing
* bug fix: Color updates in PWM were missing
* bug fix: Color updates in Oszi windows were missing
* bug fix: fwhm in opti scan (based on variance) yielded incorrect results
* bug fix: Opti Lock Scan Engine was not working properly
* bug fix: bidirectional/direct retrace parameters were not saved in config file
* bug fix: Default Background Color was ClWindow instead of ClWhite which lead to incorrect color mixing (spot trace plot in Opti)
* bug fix: Stop watch did not update colors when running

V2.2 (12/2020) - lines of code: 49.820

- energy range of opti scan now set equal to allowed energy range (previously min..200eV)
- RSM scan now accepts 0D data and units=V (and converts data internally)
- Threshold plot option added to 2D scan (three color image) as a help to adjust counter operation thresholds
- 0D and 2D data can now be pasted into 1D scan
- 1D and 0D data can now be pasted into 2D scan
- Double click on angle value edits will increase angle by 90° (modulo 360)
- position tool for 1D scan added (get kx,ky position within 1D scan)
- sample identifier and batch identifier string added
- changes of sample settings (name, lattice constant, step height, sample id, batch id) are now saved in the log file
- last active sample type is now recalled from config file
- copy&paste buttons added to k space calculator (1D center/edge)
- option added for ASCII export 1D in two column (x,y) data
- beam can now also be set to offset values during idle times, e.g., for manual spot alignment
- Aux voltage (sample heating) control form added
- now full DAQ exit procedure for main window's DAQ on/off speed button
- 2D Serial Scan option added
- Ratemeter: Circle Memory removed
- much slower moving average for ratemeter (alpha<=0.1)
- TTickFormat replaced by TNumberFormat in StrUtils; TNumberFormat = (NFFullNumber,NFIntExp,NFFixedDec,NFFixedExp,NFIntSuffix);
- Formatting routines DblToStr_XXX added to StrUtils
- copy&paste of offset voltages in deflection offset form now possible
- New TThreadSafeRepeatingTask derived from TThread created as replacement for TTimer
- Ratemeter does now work just as any other scan and shows current cps even with no other scan active
- Gate time reduction can now be overruled in scan 1D window
- Polarity of TTL output signal for mode (SEM/diffraction) can now be changed in software settings
- Opti scan now also works in real space (for focusing of SEM images, spot size determination, beam convergence determination etc.)
- 1D scan: actual scan data are now shown with marker color, while point-by-point scan is running (helpful as overlay with previous data)
- ASCII data export: CPS as optional units for raw data export (Software Settings > File I/O > Export in CPS Units)
- scan angle increment can be set by user (for 2fold and 3fold symmetry surfaces)

* GUI change: alignment of ramp/aux gain/units was inconsistent
* GUI change: all left alignments in software settings form set to 8px
* GUI change: slightly enlarged GUI color preview
* GUI change: spot optimization form fine tuning (display settings more compact and at tab order 1, energy/phase more compact)
* GUI change: k space calculator more compact due to page control
* GUI change: confirmation dialog with sample settigs upon program start added
* GUI change: "Scan was acquired on a different sample" warning dialog removed
* GUI change: Software settings>scan tab sheet optimized
* GUI change: All dialog windows are now bsSingle and biMaximize=False (no senseless maximization possible)
* GUI change: All windows open now with top edge below Navigator (no gap for Navigator resizing)
* GUI change: Ratemeter GUI simplified
* GUI change: Duty Cycle Trackbar in PWM form now with Frequency=9 for centered 50% tickmark
* GUI change: Manual offset form optimized; LED-style displays for voltages
* GUI change: "Sleep"/"Wake up" button added to main form (set energy to zero for a pause)
* GUI change: Icon changes: x calibration, image shift, yin yang, manual energy, manual offset voltage, software settings, stop watch
* GUI change: tool buttons on main form rearranged for better access
* GUI change: XY display changed to oscilloscope-style colors
* GUI change: 1D scan GUI finetuned
* GUI change: Load/save windows removed from software settings and moved to main form (much more frequently used than other software settings)
* GUI change: RSM evaluation tools GUI optimized
* GUI change: Stopwatch: TBitBtn instead of TButt
* GUI change: Start/Stop button divided into two buttons (better for VCL message handler)
* GUI change: Points or lines are now allowed for 1D data instead of only lines
* GUI change: Display of elapsed time, completed scan cycles and effective gate time added to 1D, 2D, RSM, SEM

* bug fix: Software settings "scan tab".enabled setting was incorrect (GUI not accessible)
* bug fix: labels for ramp and aux gain units were not updated upon from.create
* bug fix: xy deflections offset form: values for rotation and resulting x,y deflection were not updated upon form.create
* bug fix: Display lower and upper limit were not updated during k units change (recalculate)
* bug fix: x axis display could show three "0" major tickmarks at small scan displays <10V (rounding errors of +/-0.999999 within Str routine of Delphi
* bug fix: consider active/passive rotation of 1D/2D scans when pasting "wrong" scan type data (1D>2D etc.)
* bug fix: Energy/Phase data updates in Opti were not always consistent
* bug fix: changes in lock engine checkbox setting were not being used for active opti scan, only after stop/start
* bug fix: ramp generator optimization; U2 less than U1 now works nicely
* bug fix: manual energy control is now fully thread safe
* bug fix: lowest linear scaling tick in ratemeter was missing, division by zero for linear scaling with TFExpMant due to div by zero in MathUtils.OrderOfMag
* bug Fix: Runtime error 216 at the end after using Aux voltage (caused by missing SpaDAQ_ChangeUAux:=NIL; in SpaDAQ)
* bug Fix: Spot Tracker does now use a thread safer timer (not VCL-based TTimer)
* bug Fix: All ScanThread.Resume replaced by ScanThread.Start
* bug fix: cps/cnts Scaling in 1D scan was inconsistent due to many local conversions => global scaling factor
* bug Fix: Navigator Resize used outdated width for break of tools bar
* bug fix: Application.ProcessMessages was used extensively, also fro within Threads
* bug fix: Readout of Scan Action GUI (Atomic, Repeat, Continous) now placed in separate method of TScanThread and called via Synchronize
* bug fix: Release engine was called in many scans via Synchronize
* bug fix: "I/O Error" and "scan interrupted" dialogs were called from TScanThread (VCL GUI access w/o Synchronize)
* bug fix: Scan engine messages are now shown indirectly via TStringList buffer object and CriticalSection
* bug fix: Start Scan button is now solely enabled by "Finish" method of TScanThread, which avoids startign a new scan while the last one is still active (esp. for gate times >10ms)
* bug fix: MinCnts Value in 1D scans' general scan info was not correct for continous scans (it contained the minimum of any contributing passes, instead)
* bug fix: scan units combo box remained deactivated after scan (due to check of wrong checkbox)
* bug fix: Data Display range in 1D scan (upon windows open, no data shown) were not consistent with scaling GUI values
* bug fix: TAxis crashed when no tickmarks are visible (N=0)
* bug fix: TAxis crashed due to unnecessary string formatting in minor tickmarks
* bug Fix: Data draw (GUI via VCL) in spot tracker now separated from scanning (own TTimer), TCriticalSection for sync => increased stability of spot tracker