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