Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

  • In some cases, a property "does not apply" to a device. accelerationRaw, for example, does not apply to the MP285. To make MP285 a concrete class, accelerationRaw must be defined somewhere in a properties block; however, this property doesn't do anything (its get-method always returns NaN, and there is no set-method). Your device LSC subclass may similarly "omit" inapplicable properties. Note however that the ScanImage application will expect certain properties to be present and working. See #Minimal LSC Implementation for ScanImage below.

...

The LSC interface includes more than is absolutely required by ScanImage, because it was designed with the idea that it would provide a stage controller interface that would to be generally useful, independent of any single application.

That said, you are probably reading this page because you are a ScanImage user with a custom stage. At the moment, ScanImage requires the following properties and methods of LSC to be implemented/functional:

Properties

  1. nonblockingMoveCompletedDetectionStrategy
  2. isMoving (get only)
  3. positionAbsoluteRaw (get only)
  4. positionDeviceUnits (get only)resolution (get only)

Methods

  1. moveStartHook

...

  1. getResolutionBestHook (This method has a default implementation in LSC, but if the default method doesn't apply to your device then you should provide an override.)

Testing

When your subclass is complete, it is critical to test its operation with real hardware in a "safe" setting before live use. Implementing an LSC subclass involves a fair amount of complexity and some amount of testing/debugging time will likely be necessary to ensure reliable operation. Using an LSC without proper testing could lead to wild stage moves and damage to your rig.