{composition-setup}
ScanImage 3.7 adds several new features and includes architectural changes that lay the foundation for further new features in future releases.
Functionally, ScanImage 3.7 is very similar to 3.6, so the transition should be fairly straightforward. However, there are [changes and other recommended steps|ScanImage r3.7.x Documentation#UpgradeInfo] in upgrading to 3.7 from 3.5.x or 3.6.x.
New users, and existing users who can benefit from the new features (listed below) should use ScanImage 3.7. Other existing users of 3.5.x or 3.6.x may want to defer upgrading until ScanImage 3.8 (expected spring or early summer of 2011), which will have further new features.
{note:title=Version Compatibility}As always, users should note the [Matlab & National Instruments version compatibility|ScanImage Matlab and NI Version Compatibility] before using ScanImage 3.7.{note}
\\
----
{toc}
h3. Major Changes
* RTSI7 should be used for [clock synchronization|Wiring your System (r3.6)#ClockSync], rather than RTSI6
* _Scan Amplitude_ values replaced by _Scan Angular Range_ values, which now represent the *full* (peak-peak) optical angular range of acquisition -- not *half*-angle as in 3.6.x or *half*-voltage (of command signal) as in 3.5.x and earlier
h3. Major Enhancements
{multi-excerpt:name=MajorEnhancements}
* Matlab [DAQ Toolbox|http://www.mathworks.com/products/daq/] is _no longer required_. ScanImage interfaces to NI DAQ hardware using a new Matlab device adaptor [package|http://www.mathworks.com/help/techdoc/matlab_oop/brfynt_-1.html] which has been developed for the NI [DAQmx driver|http://www.ni.com/dataacquisition/nidaqmx.htm]. See [Notes on Architectural Changes|#ArchChanges].
* Automatic power adjustment during stack collection
* Export of line/frame/pixel clock signals
* External triggering enhancements, including _Next Triggering_
* Continuous file streaming improvements, including support for stacks and a configurable running data buffer
* Enhanced _User Functions_ capability, supporting a much greater number of _events_ during ScanImage operation
* Enhanced _Fast Configurations_
* Faster DAQ performance, due to [architectural changes|ScanImage r3.7 README#ArchChanges]
* Compatibility with latest Matlab (2010b) and [DAQmx (9.2.2)|http://joule.ni.com/nidu/cds/view/p/id/2215/lang/en] versions
* Compatibility with X series boards, for the 'second' DAQ board (for Pockels and/or clock signals)
{multi-excerpt}
h3. Other Enhancements
{multi-excerpt:name=OtherEnhancements}
* Finite LOOP acquisitions now possible
* Slider control adjustment of power (optionally) allowed during FOCUS operation
* Fractional zoom adjustment
* More image display colormap options, including option for user-defined colormap function
* Option to average, rather than sum, binned samples
* Support for case where shutter is located _before_ EOM/Pockels
* Ability to set root save file path for initial _Set Save Path..._ operation
* Separate mapping of 1) Channel 0/1 to X/Y scanners (*INI* file) and 2) X/Y scanners to Fast/Slow axes (*CONFIGURATION* dialog)
* External trigger timeout is now a *USR* setting, not an *INI* file variable
* Improved EOM/Pockels calibration robustness
* Support for 4096 pixels/line
* Improved default path handling for file selection dialogs
* Initial support for Sutter MPC-200 and Scientifica stage controllers
{multi-excerpt}
h3. Bugfixes
* FOCUS acquisition capability in midst of LOOP acquisition _Repeat Period_ has been restored
* PowerBox _BoxOff_ array values were not independent across beams
* Handle _Discard Flyback Line_ option correctly for Channel Merge display window
* Controls in *CONFIGURATION* window would move upward slowly when advanced controls were toggled on/off
{anchor:ArchChanges}
h3. Notes on Architectural Changes
ScanImage 3.7 makes significant use of the new [object-oriented programming|http://www.mathworks.com/company/newsletters/news_notes/2008/oop.html] features added first in Matlab release 2008a. The most notable uses are the device adaptor [packages of classes|http://www.mathworks.com/help/techdoc/matlab_oop/brfynt_-1.html], e.g. for the National Instruments [DAQmx driver|http://www.ni.com/dataacquisition/nidaqmx.htm] and Sutter linear stage controllers. Another example is the ScanImage _EventManager_ class underlying the improved User Functions capabilities in ScanImage 3.7.
With object-oriented programming, scripts/functions create (_construct_) handles to objects whose behavior is defined in [class definition files|http://www.mathworks.com/help/techdoc/matlab_oop/bree1u6.html]. The behavior consists of:
* _properties_ which can be accessed and modified
* _methods_ (functions) which can be invoked which operate on or pertain to the instance handle(s).
h5. DAQmx Device Adaptor Package
The DAQmx device adapter 'wraps' the DAQmx driver application programming interface (API) in the form of several classes -- _Task_, _Channel_, _Device_, and _System_ -- which correspond to concepts in the DAQmx API. Most of the functionality is made available through the _Task_ class.
The properties & methods defined for the _Task_ and other classes correspond to the properties and functions defined in the DAQmx API, used when programming National Instruments in C, but also corresponding to VI names and property nodes in [LabView|http://www.ni.com/labview/]. In this way, the DAQmx device adapter package comprises a 'scriptable LabView' -- it provides near-comprehensive access to DAQmx capabilities.
The DAQmx device adaptor package developed for and used by ScanImage 3.7 overcomes several limitations:
* Read access times are much faster
** DAQmx API allows reads in 'native' format (e.g. 2 byte format), in addition to 'scaled' format (double). The DAQ Toolbox only allows 'scaled' reads. By using 'native' format, read times are reduced ~4x.
{comment}** Read operations in DAQmx API adapter can be done in C (through a [MEX function|http://www.mathworks.com/help/techdoc/matlab_external/f7667.html]) rather than via Matlab function call. This further reduces read time.{comment}
* Access to NI [counter/timer|http://zone.ni.com/devzone/cda/tut/p/id/9376#toc3] channels not supported by DAQ toolbox. This is basis of two new features in ScanImage 3.7:
** Frame/Line/Pixel clock export
** 'Next' triggering feature
h5. Stage Controller Adapter Classes
ScanImage stage control code has been rewritten to use a generic Linear Stage Controller interface (an [abstract class|http://www.mathworks.com/help/techdoc/matlab_oop/brgxk22-1.html]), rather than directly communicating with [Sutter MP-285|http://www.sutter.com/products/product_sheets/MP-285.html] as in earlier versions. Specific device adapters have been developed as [concrete subclasses|http://www.mathworks.com/help/techdoc/matlab_oop/brgxk22-1.html] for the MP-285 as well as the newer [Sutter MPC-200|http://www.sutter.com/products/product_sheets/MPC-200-ROE.html] controller. In addition, an initial adapter/subclass has been developed for Scientifica controllers.
|