Drivers and Libraries
OmniDriver is our standard one-size-fits-all device driver providing precise control of our full range of spectrometers and programmable accessories. No matter whether you’re “a PC or a Mac” or even a Linux iconoclast — whether you rock .NET or Java or take your C straight-up — OmniDriver provides bindings for your compiler of choice. (Yes, we even remembered LabVIEW and Delphi…welcome to the fold!) Best of all, OmniDriver underlies our very own OceanView analysis toolkit, so you can trust that anything OceanView can do, you can call from your own application code.*
* some programming required…but that’s what we live for, right?
If OmniDriver tries to “be all things to all people” — a monolithic binary capable of supporting every possible combination of spectrometers and features, quite likely more than you’re actually planning to use on any given system — SeaBreeze takes the alternate approach. Targeted for embedded system development in resource-constrained environments, SeaBreeze lets you tailor, prune and optimize to your heart’s content. Written in C/C++ and published under the open-source MIT license, this is a driver framework which you can extend and customize to meet even the tightest performance and sizing budget (even cost!).
Some people like writing their own linear regression and LU decompositions, some prefer to pull a tested implementation from a DLL or jar. Some can breeze through u’v’ and CIE L*a*b* transforms, while others would as soon call a handy function. Whenever you’d like a breather, feel welcome to lean on SPAM‘s industrial-strength signal-processing and colorspace routines to make spectral processing a point-and-click exercise. Fully LabVIEW compatible, and available in all your favorite .NET, .so, and .dylib flavors.
Scripting the Jaz
The Jaz is unique among our spectrometers in that it is more than just a peripheral to hang off your PC: the Jaz incorporates its own built-in microcomputer running an embedded Linux distribution. That means that while you can control the Jaz via our standard OmniDriver and SeaBreeze device drivers (via USB, RS-232, or even ethernet)…doing so kind of misses the point. The magic of Jaz is that you can run free and untethered, with nary a serial cable to trip you up or tie you down.
Therefore, when you talk about programming the Jaz, you aren’t really talking about device drivers commanding peripherals over cables: you’re talking about programming the device itself, running your code directly on the spectrometer. And that’s a little different, and takes a little getting used to, but trust us: it’s a fun ride!
The Jaz comes with a simple scripting language which lets even non-programmers (or programmer-wanna-be’s…cough) describe simple spectroscopic procedures in high-level language, and copy those scripts onto the device using a standard SD memory card.
Or if you’re really hard-core, why not dive into the Jaz C API, which lets you run compiled C executables right on the Blackfin microprocessor? Take full advantage of the uClinux environment to grab direct control of the LED display, gamepad interface, network ports, local filesystem, lamp shutters, multi-channel synchronized acquistions…whoa boy, now I’m getting excited!
A programmable Jaz stack is an optical hobbyist’s dream, providing everything you need for a full range of experiments right in one mobile battery-backed unit, with full C control and a Linux environment to boot…what’s not to love?