LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Deploy a program to customers with different hardware

Solved!
Go to solution

Hi all,

 

I have a general problem with customers with different hardware. I would appreciate any advice on the subject.

 

For example, I have two customers with two different cameras. I wrote an object-oriented camera module, the parent Camera, and children Camera1 and Camera2, so that the same logic works for both cameras. I would like to deploy the program to both customers, but in order for it to run at both customers, I need to install the drivers for both cameras at both customers. Is there a way to keep the code object oriented and modular without installing all the possible hardware drivers at all the customers?

 

In the case of two cameras it isn't such a big deal, but my program is more complicated than that and it interfaces with tens of spectrometers, cameras, and scanners. I don't want to install at each customer the drivers for all of the possible configurations. Is there a way around this?

 

Thanks,

Danielle

"Wisdom comes from experience. Experience is often a result of lack of wisdom.”
― Terry Pratchett
0 Kudos
Message 1 of 8
(2,933 Views)

Check out the white paper "How to Mitigate Hardware Obsolescence in Next-Generation Test Systems" in the DevZone.  Since you're using OO you're already most of the way there.  Unfortunately the paper stops short of discussing the things to watch out for when you try to include this in a built application.

 

I used this approach in creating an app where we could add a new piece of equipment to the existing system by installing only the new device specific class.

 

It gets a little tricky when you want to build/install an application.  I ended up with an exe and separate library.  Never followed through to try and put everything in the exe so I don't know if that's possible.

0 Kudos
Message 2 of 8
(2,906 Views)

Hi Danielle, 

 

If I am understanding correctly, you are wanting to have one installer that can know which drivers each of your customers need, since they are only using certain drivers and partial functionality of your application. Unfortunately, there is not currently a way to do that. In order to accomplish what I think you are wanting, you will have to either create different installers that only include the needed drivers specific to each customer, or create one installer that includes all of the drivers. I understand how this could be frustrating. I hope this answers your question, though I trust it is not the answer you were hoping for. 

Best Regards,

Thomas B.
National Instruments
Applications Engineer
0 Kudos
Message 3 of 8
(2,873 Views)
Solution
Accepted by dsavir

Another alternative would be to use a plugin architecture for your customer specific items. Create a general installer for your application and a camera specific driver for the plugin. Each plugin will be specific to a specific camera type and include the appropriate drivers. Granted this requires your customer to use 2 installers but only the appropriate drivers will be installed. You might be able to package this up as a single installer that runs the camera install after the aplication installer. Your actual installer would have all of the supported drivers but the user would be prompted for which camera they are using.



Mark Yedinak
Certified LabVIEW Architect
LabVIEW Champion

"Does anyone know where the love of God goes when the waves turn the minutes to hours?"
Wreck of the Edmund Fitzgerald - Gordon Lightfoot
0 Kudos
Message 4 of 8
(2,845 Views)

Hi,

 

Thanks for your answers!

 

DAD, I downloaded the example, I'll check it out. Thanks for the suggestion.

 

Thomas B., that isn't the problem. The problem is that in an object-oriented hierarchy, for the camera module to load it needs to load all the children and drivers. The program simply won't run if all the drivers aren't installed. So I have to install all the drivers for all possible equipment at every customer. My program is already ridiculously large because of it and I have to add two new spectrometers in the next month alone.

 

Mark, I was afraid of that... I had some really bad experience with a plugin architecture using lvlibp's a while back and I was really hoping to avoid it in some way. But you are right, it seems to be the most efficient and elegant solution. Do you have any links to a *deployable* plugin architecture? The previous one worked fine as long as I didn't try to install it on a computer without LabView. It's also extremely difficult to debug. Any suggestions on how to ease the pain this time around would be appreciated 🙂

 

Thanks all,

Danielle

 

"Wisdom comes from experience. Experience is often a result of lack of wisdom.”
― Terry Pratchett
0 Kudos
Message 5 of 8
(2,820 Views)

I would take a look at some of the examples posted in the "LabVIEW Development Best Practices" community group.



Mark Yedinak
Certified LabVIEW Architect
LabVIEW Champion

"Does anyone know where the love of God goes when the waves turn the minutes to hours?"
Wreck of the Edmund Fitzgerald - Gordon Lightfoot
0 Kudos
Message 6 of 8
(2,806 Views)

Thanks Mark!

 

I already know/have tried most of them. In my experience they work great uncompiled but compiling and deploying them is a headache. However, into the flood again...

 

Thanks again!

Danielle

"Wisdom comes from experience. Experience is often a result of lack of wisdom.”
― Terry Pratchett
0 Kudos
Message 7 of 8
(2,785 Views)

Hi DAD,

 

I looked at the example and I didn't understand how you managed to install only the device specific class. This is similar to what I have, and if any DSSP VI exists in the project to build, it loads all the DSSP's children. If one of these children needs a driver for a specific camera, it will not install the program without this driver, even if the camera class isn't in the xml file listing the classes. How did you circumvent this problem?

 

Thanks,

Danielle

"Wisdom comes from experience. Experience is often a result of lack of wisdom.”
― Terry Pratchett
0 Kudos
Message 8 of 8
(2,723 Views)