Nimbus FAQ

What is Nimbus? > What kind of drivers can I develop with Nimbus? > Which IVI-defined instrument classes does Nimbus support? > Can I evaluate Nimbus before buying? > Is training available for Nimbus? > Do I need to be a C++ or COM expert to build drivers with Nimbus? > How does Nimbus compare with other available IVI driver tools? > What is Nimbus code round-tripping? > What are the runtime requirements for users of drivers built with Nimbus? > Does Nimbus support the development of LXI-compliant drivers? > Does Nimbus support special IVI driver features such as state caching, range checking, and coercion? > How does Nimbus allow for the development of simulation support in IVI drivers? > Does Nimbus generate drivers that require the .NET framework to be installed? > Do I need to have the .NET Framework installed to use Nimbus? > Does Nimbus generate IVI.NET drivers? > Can drivers built with Nimbus be used in .NET client applications? > What's the difference between MS Help 1.x and MS Help 2.0? > Isn't some kind of engine required to perform state caching and range checking? > Can I use Nimbus to build drivers for register-based instruments? > Do I need to purchase any third-party software to build help files, unit tests, and installation programs with Nimbus? > Can I build custom instrument class definitions with Nimbus? > Do I need to buy a copy of Nimbus for each developer working with it? > Is there a limit to the number of drivers I can develop with a Nimbus license? > Can one licensed copy of Nimbus be installed on more than one PC? > Does your licensing policy require run-time or distribution fees? > What does subscription mean? > Do I need to buy subscription when I buy a product? > Does Pacific MindWorks offer a volume license discount? > How do I buy Pacific MindWorks products? >

Driver Development:

For what types of instruments can you build IVI drivers?

Our team has experience with a wide variety of instrumentation -- from simple digital multi-meters to complex network analyzers. We can build drivers for digital instrumentation, like switches and digital word generators, as well as drivers for RF instrumentation, like spectrum analyzers. Additionally, we have worked extensively with PC and VXI-based data acquisition equipment.

back to top

Do you use fixed-price or time-and-material contracts for driver development?

All of our driver development contracts are performed on a fixed-price basis.

back to top

How long does it take to develop an IVI driver?

The time it takes to deliver an IVI driver depends upon a number of factors, such as:

  • The size and complexity of the instrument
  • Whether the instrument is register-based or message-based
  • Whether both an IVI-COM and IVI-C driver is desired
  • Whether a LabVIEW driver is desired
  • Whether an IVI class-compliant interface is to be supported

Not surprisingly, the total time it takes to develop, document, and validate an IVI driver varies widely. Nevertheless, our experience shows that a complete driver package for a medium size instrument can be delivered in 6 to 8 weeks.

back to top

Does Pacific MindWorks develop IVI-C drivers? What about LabVIEW drivers?

Yes. Pacific MindWorks routinely builds IVI-COM, IVI-C, and LabVIEW drivers. We have years of experience building all three types of drivers for some of the biggest names in the test and measurement industry.

back to top

What kind of IVI driver do I need - IVI-COM or IVI-C?

Much debate has raged over this exact issue for a long time. Our experience has shown (and many of our customers now agree) that you likely need both. Why is that?

Some customers make the mistake of basing their IVI-COM versus IVI-C decision on the expertise they have in-house. In other words, companies with C++ experience develop IVI-COM drivers and companies with C experience lean towards IVI-C. However, this is not the right criterion on which to base an IVI driver strategy. Rather, the deciding factor must be the development environments that the end user possesses. Microsoft environments are becoming increasingly important to test and measurement customers. Unquestionably, IVI-COM drivers provide the best experience in Microsoft environments, including Visual Basic 6, Visual C++ .NET, C#, and VB.NET. Some may find it surprising that IVI-COM drivers even provide a better end user experience in LabVIEW than IVI-C drivers. If you give a C# end user an IVI-C driver only, then they will certainly not be happy, as the integration of IVI-C drivers with .NET is much more tedious than integrating IVI-COM drivers.

However, if many of your end users rely upon C-based environments such as LabWindows/CVI, then they will certainly want to have an IVI-C driver. IVI-COM drivers do not integrate cleanly with LabWindows/CVI, and end users will not be familiar with how to overcome the obstacles they encounter trying to integrate IVI-COM drivers. By contrast, IVI-C was in many respects designed with LabWindows/CVI in mind, so users have a very clean and rich experience with IVI-C drivers in this environment.

For an in-depth discussion of this issue, see the whitepaper "Navigating the Landscape of IVI".

back to top

What deliverables are included in a typical driver development package?

A driver "package" from Pacific MindWorks includes much more than the driver DLL. All of the following are provided with a typical IVI driver project:

  • IVI-COM driver DLL
  • IVI-C driver
  • .NET driver (wrapper) DLL
  • Help file (HTML 2.0 format - for VS.NET)
  • Help file (HTML 1.X format - for VS6 and other IDEs)
  • IVI-compliant installer
  • Unit test for every driver method and property

All of the above items are provided in source code format, so that the customer is able to maintain any of the components themselves, if desired.

back to top

Can Pacific MindWorks port an existing VXI Plug-n-Play driver to IVI?

Yes. Indeed, Pacific MindWorks has extensive experience in doing just this. An existing VXI Plug-n-Play driver can be used directly in the implementation of a new IVI driver or the source code for the existing driver can be directly translated, thereby eliminating the need for the Plug-n-Play driver altogether.

back to top

Does Pacific MindWorks build drivers for register-based instruments?

Yes. Pacific MindWorks has extensive experience building drivers for both message-based and register-based instruments.

back to top

Do I have to buy Nimbus to maintain a driver developed by Pacific MindWorks?

No. All of the deliverables from a driver development project can be maintained with Visual Studio .NET. The driver project and installer project are standard Visual Studio C++ projects; the help file is built from a standard Visual Studio Help Project; and the unit test is a simple Visual Studio C# project. Source code is provided for all components of the driver package.

back to top

Does Pacific MindWorks offer .NET driver development services?

The IVI Foundation has yet to complete the specification for building IVI.NET drivers. Thus, there currently is no such thing as an "IVI.NET" driver. Nonetheless, IVI does include specifications for building .NET wrappers for IVI-COM drivers. These .NET wrappers give end users seamless access to the underlying IVI-COM driver when working in any .NET language, such as VB.NET and C#.

Every IVI driver package from Pacific MindWorks is delivered with a complete IVI-compliant .NET wrapper.

back to top

Does Pacific MindWorks provide maintenance and update services for drivers after delivery?

Yes. Every driver is delivered with a 60-day warranty against bugs - at no additional charge. On-going maintenance, including the addition new capabilities, is available as an option. Thus, customers can choose to maintain the driver themselves or they can free themselves from driver development duties altogether and have us maintain it for them.

back to top

What information must be provided to obtain a driver quotation?

Formal quotations for drivers are typically generated from an instrument programming manual. In the absence of this, quotations can often be generated from a list of instrument commands. Information should also be provided on the optional features desired, such as an IVI-C driver, a LabVIEW driver, example end-user applications, etc.

back to top

Nimbus:

What is Nimbus?

Nimbus is the first fully integrated development environment specifically constructed for IVI drivers. Nimbus provides an integrated environment of cross-functional capabilities for the full lifecycle of IVI drivers -- design, development, test, validation, documentation, and even deployment.

Nimbus includes a stand-alone Driver Designer for constructing everything from the simplest IVI driver to a multi-model, multi-personality compound instrument driver. Unique to Nimbus is a suite of tools and Code Wizards that directly integrate with the Visual Studio environment, providing developers a single platform for developing everything from fundamental driver implementation, to MS Help documentation, to MSI installers.

back to top

What kind of drivers can I develop with Nimbus?

Nimbus provides rich support for building IVI-COM and IVI-C drivers. Moreover, Nimbus can be used to generate either class-compliant or custom IVI drivers. Nimbus includes pre-built code for implementing many of the IVI-required interfaces.

back to top

Which IVI-defined instrument classes does Nimbus support?

Nimbus supports all currently approved IVI instrument driver classes.

back to top

Can I evaluate Nimbus before buying?

Nimbus is available for download for a 30-day evaluation period. The download is the fully-functional product version. Should you choose to purchase Nimbus, you need not download anything further - you need only supply the serial number provided to you at the time of purchase.

back to top

Is training available for Nimbus?

Yes. Pacific MindWorks offers an onsite IVI Jumpstart Training Course with 1-day, 3-day, and 5-day curriculums. For more information, click here.

back to top

Do I need to be a C++ or COM expert to build drivers with Nimbus?

Absolutely not. One of the principal benefits Nimbus provides is that developers are shielded from having to know the details of C++, COM, or the IVI specifications themselves. Indeed, folks turn to Nimbus specifically because they are not experts in any of these technologies, yet they need the ability to build fully compliant IVI drivers. Users coming from a background in C programming or VXI Plug-n-Play driver development will find themselves very comfortable using Nimbus to build IVI-COM and IVI-C drivers.

back to top

How does Nimbus compare with other available IVI driver tools?

Nimbus is unique in a wide variety of ways. For instance, Nimbus is the only product that generates both IVI-COM and IVI-C drivers - all from a single implementation. Nimbus also produces the most complete driver "package" - including both prominent help file formats (HTML 2.0 and HTML 1.X), a fully IVI-compliant installer, ready-to-use client programs, and even C# unit tests that integrate with the popular NUnit testing framework. Automatic code round-tripping is a feature only found in our Nimbus product and pays huge dividends in time savings when driver designs evolve over the course of a driver project or new features need to be added after implementation.

For a direct comparison of Nimbus to other driver tools, see the "Nimbus Feature Comparison Chart".

back to top

What is Nimbus code round-tripping?

Code-roundtripping is a feature unique to Nimbus that allows developers to make changes to their driver design after generating the driver implementation code. Nimbus integrates Code Wizards into the Visual Studio Environment so that developers have the same editing capabilities during implementation as they have during the design phase. The Nimbus Code Wizards provide intuitive dialogs for doing something as simple as adding a method, to something as complicated as completely rearranging the driver hierarchy. All of the C++ code manipulation to effect the desired changes is performed by Nimbus.

back to top

What are the runtime requirements for users of drivers built with Nimbus?

There are no additional runtime requirements for drivers built with Nimbus beyond those requirements imposed by the IVI Foundation, such as the presence of the IVI Shared Components. Unlike drivers built with every other toolkit, Nimbus-developed drivers do not rely upon any separate "engine" components or wrappers.

back to top

Does Nimbus support the development of LXI-compliant drivers?

Yes. In fact, Pacific MindWorks was contracted by the LXI Consortium to develop the LXI specification. When you run the IVI Driver Wizard in Nimbus, you can simply check a box to include support for LXI and all of the

back to top

Does Nimbus support special IVI driver features such as state caching, range checking, and coercion?

Yes. In fact, all of these features can be incorporated into the driver without requiring any user-written code. For example, the Nimbus user interface provides an intuitive way to establish state cache couplings to represent real couplings between instrument settings.

back to top

How does Nimbus allow for the development of simulation support in IVI drivers?

Nimbus provides a simple, intuitive editor that allows independent control of the simulation behavior of each driver property. Nimbus ensures that no I/O communication is performed when the driver is running in simulation mode. Nimbus also generates code that stores the last value sent to the instrument so that it can return the same value when the user queries the property, thereby more accurately emulating a real instrument.

back to top

Does Nimbus generate drivers that require the .NET framework to be installed?

No. Nimbus-developed drivers are conventional Windows unmanaged COM components. They are not .NET managed components nor do they include any .NET code. However, the .NET wrappers generated by Nimbus can be used on .NET target machines to provide those users with seamless access to the driver from languages such as C# and VB.NET.

back to top

Do I need to have the .NET Framework installed to use Nimbus?

Yes. Nimbus is a .NET application. However, drivers built with Nimbus are pure unmanaged code and do not require the .NET Framework to be installed on the target machine.

back to top

Does Nimbus generate IVI.NET drivers?

No. There currently is no such thing as an IVI.NET driver, as the IVI Foundation has not yet completed the specifications defining what an IVI.NET driver should look like or how it should be constructed. The Foundation has formed the IVI.NET Working Group, which is tasked with defining specifications for building IVI.NET drivers in the future. This Working Group has also released wrappers, called Primary Interop Assemblies, for all of the IVI-defined classes that allow IVI-COM drivers to be used from .NET applications seamlessly. This has been shown to provide a very good experience for the end user building test applications with .NET client code and IVI-COM drivers.

One of the truly unique features of Nimbus, however, is that it is already designed with IVI.NET in mind. When you create a Nimbus project now, that same project can be used to generate an IVI.NET driver when the IVI Foundation releases the appropriate specifications. Pacific MindWorks is spearheading the work of the IVI.NET Working Group, and we have already used Nimbus to generate prototype .NET drivers. This means the work you invest today in building IVI-COM drivers with Nimbus will be completely reusable when building IVI.NET drivers in the future.

Nimbus also provides a very important and unique capability to support .NET applications. Each time your Nimbus driver is built, Nimbus automatically generates a .NET wrapper (interop assembly) that complies with the guidelines laid out by the IVI.NET Working Group. No extra effort is required on the part of the developer to export their Nimbus-developed IVI-COM driver to .NET clients.

back to top

Can drivers built with Nimbus be used in .NET client applications?

Yes. The .NET platform provides rich support for integrating conventional COM components, like IVI-COM drivers. Wrapper components, known as interop assemblies, are used to access IVI-COM drivers from .NET clients, such as C# and VB.NET. The IVI.NET Working Group within the IVI Foundation has released interop assemblies for all of the IVI-defined instrument classes. Moreover, Nimbus provides built-in support for automatically generating interop assemblies for instrument-specific interfaces (those interfaces not defined by IVI).

back to top

What's the difference between MS Help 1.x and MS Help 2.0?

MS Help 2.0 is the new Microsoft Help format that you see with MSDN. Nimbus directly supports generating MS Help 2.0 documentation for your IVI-COM driver. This format allows the most consistency with the Visual Studio documentation users will most likely be using when writing applications with IVI drivers.

Using Help 2.0 allows direct integration of IVI-COM driver help documentation with MSDN documentation, so that users can access all of their help documentation in one place. A unified index, table of contents, and search feature makes accessing help documentation much more convenient for the end user. Also, popular and convenient features like Dynamic Help are available with MS Help 2.0 documentation.

MS Help 1.x is the older-style format for help documentation. A number of tools exist, both within Visual Studio and from third-party vendors, for converting between Help 2.0 and Help 1.x.

back to top

Isn't some kind of engine required to perform state caching and range checking?

No. Unlike other driver-development tools, Nimbus-generated drivers do not rely upon any "engine" component or other runtime DLL for features such as state-caching and range-checking. Each driver has "baked" into it all of the standalone capabilities that the driver developer specified.

back to top

Can I use Nimbus to build drivers for register-based instruments?

Yes. Pacific MindWorks has used Nimbus to build drivers for various register-based instruments. With Nimbus, you are free to provide as much custom low-level logic in your implementation as you need. All of the unit testing, help generation, and installer generation features work just as well for register-based instruments as they do for message-based instruments. Features such as simulation, range checking and state caching also work in precisely the same way for register-based instruments as they do for message-based instruments.

back to top

Do I need to purchase any third-party software to build help files, unit tests, and installation programs with Nimbus?

No. Nimbus generates code that can be compiled within Visual Studio .NET for the main driver DLL, the driver help file, the unit test, and the installation program. Only a few freely available components are used to building the driver package:

  • NUnit -- for the unit test
  • VSHIK - (Visual Studio Help Integration Kit) - for the help file
  • WIX - (Windows Installer XML) - for the driver installation program

back to top

Can I build custom instrument class definitions with Nimbus?

Absolutely. This is also one of the more unique and popular features of Nimbus. If the IVI Foundation has not defined an instrument class for a series of devices that are important to your company, then you can reap many of the same interchangeability benefits by defining an instrument class of your own. Nimbus provides a specialized wizard for exactly this purpose.

Once the custom instrument class has been defined, then new instrument drivers that implement the class definition can be developed in precisely the same fashion as if the class definition had been supplied by the IVI Foundation.

back to top

Do I need to buy a copy of Nimbus for each developer working with it?

Yes, you will need to purchase a licensed copy of Nimbus for each developer working with the product. However, recognizing that developers often need to work at home and on a notebook computer, a single licensed copy of Nimbus enables you to install the product on a work machine, a home machine, and a notebook computer.

back to top

Is there a limit to the number of drivers I can develop with a Nimbus license?

No. A single Nimbus license can be used to develop and ship any number of drivers. There are no runtime or distribution fees associated with the drivers you develop with Nimbus.

back to top

Can one licensed copy of Nimbus be installed on more than one PC?

Yes. We recognize that a single developer may work on a home PC and on a notebook, so the Nimbus licensing agreement allows a single licensed copy of Nimbus to be installed on a work PC, a home PC, and on a notebook computer.

back to top

Does your licensing policy require run-time or distribution fees?

No. The drivers you develop with Nimbus are your own to distribute as you wish. Any number of drivers may be shipped to your customers with no distribution fees.

back to top

What does subscription mean?

A subscription to a Pacific MindWorks' product entitles you to updates and technical support for the duration of the subscription. Nimbus is an ever-evolving product, as it aggressively tracks the IVI and LXI standards as well as the latest Microsoft technologies, such as new versions of Visual Studio .NET.

back to top

Do I need to buy subscription when I buy a product?

The initial purchase price of Nimbus includes a one-year subscription to the product. Subscriptions for subsequent years can be purchased at any time.

back to top

Does Pacific MindWorks offer a volume license discount?

Yes. Nimbus can be purchased in 5-license packs for a 10% discount. Subscription renewals for subsequent years are also offered in 5-license packs for the same 10% discount.

back to top

How do I buy Pacific MindWorks products?

Pacific MindWorks' products are obtained through purchase order. After receipt of a purchase order, you will receive a registration code that will allow you to unlock the software.

back to top

IVI Classroom:

Are there any public IVI training classes available?

No. The IVI Jumpstart Training Course is currently offered only at the customer site.

back to top

What qualifications are recommended for course attendees?

Course attendees should have some experience in structured programming, such as C, C++, or Visual Basic. They should also be familiar with basic instrumentation and driver fundamentals.

back to top

How many students can attend the course?

A flat tuition covers up to 5 attendees. Each attendee beyond 5 can be accommodated at an additional cost.

back to top

What topics are covered in the course?

See the IVI Jumpstart Training page for full details on the course.

back to top

What classroom equipment is required for the course?

The only required equipment is a computer projector capable of displaying at least 1024x768 resolution. Since the course does not include instructor-led lab exercises, the course attendees do not need any computer equipment or instrumentation.

In the 4 and 5 day versions of the course, where the instructor assists in the development of a real instrument driver, then the customer must provide all required instrumentation, software, and interfacing hardware. The instructor will be equipped with a standard Windows notebook computer.

back to top

Microsoft case study features Pacific MindWorks unique customer support

What our customers have to say