Isomet Modular Synthesiser (iMS) API  v1.4.2
iMS API
iMS Library and API Documentation

Contents

Overview

The iMS (Isomet Modular Synthesiser) System represents an expansive range of hardware devices and software interfaces designed to permit the rapid development and integration of Acousto-Optic (AO) technology into end-user systems.

By modularising the hardware components and supplying a well defined application interface, the systems integrator only needs to specify the required iMS hardware configuration, select an RF amplifier and AO device, and begin writing application software at a high level of abstraction. All the fundamental details of underlying host communications protocols and I/O data formats are handled internally by the software leaving you to concentrate on the elements of the design that matter to your application.

Application software communicates with the iMS System through the Application Programmer's Interface (API) which is supplied by Isomet along with compiled library objects for a number of different platforms, documentation and examples as part of the iMS Software Development Kit (SDK). The API can also be used without accompanying iMS hardware to develop applications that create iMS compatible data such as Image Files and Compensation Tables.

In addition to the API and accompanying C++ library, the SDK also includes software utilities and script wrappers that allow you to get up and running quickly without having to write any software at all, or to set up complex tasks using a few simple scripting commands.

This documentation covers all of the files, classes and other constructs made available to the application programmer through the API. It also provides some background detail on the key concepts and software architecture of the library to help facilitate understanding.

There are numerous code examples given throughout the documentation to explain how to perform particular operations. You are allowed and encouraged to copy these examples as a basis for developing your own applications.

What's Included

The core of the Software Development Kit is the C++ iMS library and API. All interaction with iMS hardware ultimately passes through this API. However we have also provided a number of other software utilities and wrappers that allow you to use the iMS System at a higher level of abstraction.

Included in the SDK are:

Application Programmer's Interface

For full control of an iMS System, we encourage users to develop their software applications in C++ using the iMS defined API and linked against the supplied library files. The libraries are extensively used and tested and provide access to every available feature on the hardware.

Every class and function in the API is documented within this documentation set and Isomet are happy to assist your development through examples, walkthroughs and design assistance or consultancy.

.NET Wrapper

A .NET wrapper (iMSNET.dll) is supplied that encapsulates the C++ binaries and provides access to nearly all functionality in a convenient format for development of .NET graphical applications on Microsoft Windows.

Most classes and functions exposed through the .NET wrapper have the same or similar naming and functionality to those presented by the C++ library .dll although there are some differences to both.

At present, support for iMS application development using the .NET wrapper library is good but experimental and documentation is limited. See, however .NET Wrapper

Platform

The iMS software library and API has been written purely in native ANSI-C++ with some use of features introduced in C++11 (ISO/IEC 14882:2011), including the C++ Standard Library. There is no use of features associated with the updated C++14 or later specifications.

There are no dependencies on external dynamic libraries other than those supplied as part of a normal OS distribution.

The compiled library code is currently supplied as a Windows-only .dll dynamic library. It is sufficient in your application development to reference the accompanying .lib file in your linker script and ensure that the .dll can be found by the executable at run-time either by placing it in the same location or at a location discoverable in the %Path% environment variable. A walkthrough of this process is given in the SDK tutorials.

The library has been compiled and released using Microsoft Visual Studio 2013 (v120), 2015 (v140) and 2017 (v150) for Windows 7 Professional 32-bit and 64-bit and also using Microsoft Visual Studio 2015 (v140) and 2017 (v150) for Windows 10 32-bit and 64-bit. We do not recommend using earlier versions of Visual Studio as we cannot guarantee their usage and we explicitly do not support earlier versions of Microsoft Windows (Vista/XP/2000 and earlier). You may use alternative IDE development tools at your own risk although if you contact us we may be able to assist with any issues discovered. Windows 8/8.1 support is believed to work but is unverified.

Toolset_compatibility.gif
Cross-platform support for other OSes is underway. Support for the QNX Neutrino 6.6 RTOS is available.

Included in the SDK are .dll's for 32-bit and 64-bit applications along with standard (release mode) libraries for your application deployment and debug libraries (suffix _dbg.dll) for your own development.