05-22-2018 08:37 AM
I am developing a Hardware Abstraction Layer (HAL) for DMM at the moment. The parent implementation (DMM) is empty and has a single Dynamic dispatch member VI for acquiring data from the instrument. The output datatype however can differ such as a Number,numeric array or a waveform. The type of acquisition is configured using a enum early on from Teststand. The child class implementation (NiDMM) also has a single Acquire VI which runs a case structure to determine the type of acquisition based on the enum, and the data is written to the DMM class's private cluster. If I want to use this acquire VI within teststand in a Limit test step, I have to also call an accessor VI with in the wrapper VI to access the saved data at the end of the acquisition process.
Is there a better work around for this?
05-22-2018 08:58 AM
@GoKu25 wrote:
If I want to use this acquire VI within teststand in a Limit test step, I have to also call an accessor VI with in the wrapper VI to access the saved data at the end of the acquisition process.
I also use a wrapper library for TestStand to call. I do not know of any other way to get around this since TestStand cannot do the dynamic dispatch directly with a VI call. So each of my top level instrument libraries have a private Action Engine and a wrapper VI for each of those main function calls.
08-01-2018 06:45 AM
In the case of mesurement with a DMM, the value being read could be a single point(DBL), multipoint (Array of DBL), or a waveform type. Under such circumstances I have to create similar wrapper VIs and replace the last accessor VI according to the datatype or unbundle all three datatypes with in an accessor. I couldn't understand how I can use an action engine in this case.
08-01-2018 07:15 AM - edited 08-01-2018 07:16 AM
@GoKu25 wrote:
I couldn't understand how I can use an action engine in this case.
I just use the AE to store and get the objects of my instruments. My wrapper VIs then call the class functions.
These functions do not update anything in the object, so no need to write them back into the AE.