Determine if a control reference is a strict type definition

If a VI is passed a control reference it can determine the VI Server Class using the ClassName property but how can it determine if the control reference is from a control which is based on a strict type definition?

That a pretty neat little VI you've found, Darren. Kudos!
The solution that Darren presents, however, will not tell the difference between a typedef and a strict typedef (unless I'm missing something). If you have VI Scripting enabled (see attachment for where to enable this in the Options menu), you can expose the Is Typedef? property. 
This returns an enum with the following values (as pictured)
not a typedef
typedef
strict typedef
class private data
Although this property is not settable in a VI at run-time, it should be readable.
Below is a picture of the Options menu where you can enable VI scripting
Mitch
Attachments:
VIScripting.PNG ‏33 KB

Similar Messages

  • Control Value:Set [Variant] Method - how can i use this with strict type definitions?

    I want to pass default values to a strict type definition from a mainVI to a subVI, but I'm not allowed to use the "Control Valueet [Variant] Method" invoke node to do it.  How else can I achieve this?
    thanks,
    Z

    Hi Z,
    If you use strict type defintion references you can use Call by reference Node. Depending on the connector pane for the subvi which is referenced you just wire your data to the corresponding terminals. I attach an easy example which dynamically opens and writes to an arbitary number of a template.
    Hope it helps
    Pelle S
    District Sales Manager
    National Instruments Sweden
    Attachments:
    Call by reference node.zip ‏20 KB

  • Coercion dot and strict type definition

    Hello,
    I seem t be having some problems learning how to use strict type defined controls, would someone please help?
    Will you please tell me why the coercion dot is on the subVI's?
    Will you please tell me how to link the  'CtlsToWLp Cluster' from Main.vi and the 'Clust Refnum' from the WLp2.vi to the same .ctl? 
    Thanks,

    This is a duplicate post, being answered on
    http://forums.ni.com/ni/board/message?board.id=170​&message.id=191715

  • Can strictly type refnum control do type coercion?

    Hi all,
    Can strictly type refnum control do type coercion? NI says yes:
    A control refnum terminal that is strictly typed can only accept control references that are strictly typed to a compatible type. For example, if a subVI expects a control refnum of type Slide(Int32), you can wire a control reference of type Slide(Int32), Slide(Int8), or Slide(DBL), but not of type Slide(Cluster of DBLs). Wiring in the Slide(Int8) or Slide(DBL) will result in type coercion (no error) and thus a coercion dot as these representations are being coerced to Int32. Wiring the Slide(Cluster of DBLs) will result in a type conflict (error) and thus a broken wire. This is because the Int8 and DBL are numerics like the Int32 and can thus be coerced to be of Int32 representation. The Cluster of DBLs however, is not a numeric, but a totally different data type. Therefore, a cluster being of different data type than the numeric will result in a type conflict if wired together. Strictly typed references are most beneficial when you know exactly what type of data you will be using.
    http://zone.ni.com/devzone/cda/tut/p/id/3159
    I have seen this help file for long time, and been confused by it for long time. I don't think strictly type refnum control can do type coercion. If I put a U8 Enum refnum control on subvi's front panel, I can't connect it with a U16 Enum refnum control.
    I don't know if I am right. 

    What is an "enum refum control"? Can you attach a small VI containing the various controls?
    steady wrote:
    Besides, I don't know what Slide(Cluster of DBLs) is. I can't generate such data type.
    A slide control with multiple sliders is a cluster datatype. One cluster element per slider.
    Just place a slide, right-click it...add slider. Voila!
    LabVIEW Champion . Do more with less code and in less time .

  • Setting control to default value when it is a strict type def

    If my subVI has a control that happens to be a strict type defined cluster and I have saved the values in the control as the default values, how can I change them back to the default values of the type def (which are empty).  Because it is a strict type definition, i cannot click on the elements inside the cluster and modify them (e.g. click on an array inside the cluster and do an empty array operation.)
    In the attached screenshot, the control "BLE Meters To Test" is just an array of clusters and I was able to empty the array.  The control "Capture Data" is a strict type def.  I would like to clear the contents of this control without having to delete the control and add it back with a new instance of the same strict type def.
    Solved!
    Go to Solution.
    Attachments:
    screenshot.PNG ‏33 KB

    are you talking about edit mode or run mode?
    You could temporarily add a second instance of the typedef (all empty), then change it to a constant. Whenver you need to reset at run time, write the new digram constant to a local variable of the control.
    glstill wrote:
    Because it is a strict type definition, i cannot click on the elements inside the cluster and modify them (e.g. click on an array inside the cluster and do an empty array operation.)
    Make sure to click on the array container, not on the array elements.
    LabVIEW Champion . Do more with less code and in less time .

  • About Strict Type def

    Hii
      i have created a cluster of ring control as a strict type def.Also i have used a constant of that cluster in my program where  i need.Now am changing the items in that ring control by opening the strict type def.I am giving Apply changes , save and all.Now the cluster in my program is changed.But my constant remains unchanged.;..How can i update a constant...

    The wonders of searching (and that's just one of the results for my simple search).
    Try to take over the world!

  • How can I change the numeric and enum default values in a Strict Type Def Cluster?

    I have a Strict Type Def cluster that contains 10 Numerical controls and a number of enums.  I have edited default values of the numerical controls in the Strict Type Def, in customize mode, performed a "Make Current Values Default"  and have done a "Apply Changes"  and saved.
    This cluster is used in various locations throughout the project and have not found a way to make the cluster default values change downstream.  The Strict Type Def (STD) Control appears to have the right values on the front panel.  But if I place an instance of this on a blank front panel, and run a wire from it in the block diagram with a probe and indicator, I still get the old default values being passed from the STD.  
    Solved!
    Go to Solution.

    There Are No Strict Type Definition Constants
    "Even though typedefs only update when types change, instances get cosmetic changes from the definition whenever they update. So one trick to "push" changes to typedef instances is to change the data type, apply changes, and then change the data type back. [edit, March 26 - Note that the typedef instances need to be in memory when you use this trick]."
    From Eyes on VIs, here.
    http://blog.eyesonvis.com/
    I love this article.
    Jim
    You're entirely bonkers. But I'll tell you a secret. All the best people are. ~ Alice

  • Reference behaviour of strictly typed controls

    I have a question regarding the bahaviour of a user-made cluster which I have set to strictly typed.
    I am using a reference to this cluster (Which in turn contains other clusters) to automatically read an ini file. I also have an array within one of these sub-clusters (Main Cluster - Sub-Cluster - Array). I want to set the values within this array (The elements of which are also clusters) using only the reference to the control. This works fine, except for the fact that I cannot programatically set the index of the array if my control is strictly typed. If I change the control to type-def, it works.
    Is this normal behaviour, and if so, can someone please tell me why? Does it have to do with altering the appearan
    ce of the control?
    Thanks in advance
    Shane.
    Using LV 6.1 and 8.2.1 on W2k (SP4) and WXP (SP2)

    I assume you mean "strict" type-def.
    Go to www.ni.com
    Search for "Application Note 159" (including quotes)
    Look at http://zone.ni.com/devzone/conceptd.nsf/2d17d611efb58b22862567a9006ffe76/a9fbcaa7a3d7922186256a3000652b56?OpenDocument#10
    Look at http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/1b04fd6a11e6f17286256c6300588bfa?OpenDocument
    Steve Bird
    Culverson Software - Elegant software that is a pleasure to use.
    Culverson.com
    Blog for (mostly LabVIEW) programmers: Tips And Tricks

  • Given array control reference, how do I obtain array size programatically

    If an array control reference is passed to a sub-vi, how do I obtain the current length of the array within the sub-vi?  I've tried two properties:  "NumRows", which as documented, contains the visible number of rows in the array control.  "IndexVals" contain the indices of the array element in the upper left corner of the array control.  There seem to be no methods for obtaining the current array length.  I tried changing the class of the array reference to cluster then using the "Controls[]" property... but this generated a runtime error.  What am I missing?  Thanks.
    Solved!
    Go to Solution.

    Taki1999 wrote:
    There's a lot of casting going on in your subvi.
    What is the actual use case?  There might be a way to do this which doesn't require the casting and you could work just with the reference that is passed in.
    For your method you need to wire in a strict class specifier into the To More Specific Class conversion.  I'm not sure how to make the strict class specifier.
    I can help with that but first...
    Working with arrays on unknown data types is no esy task and determining the size is a special challenge and I did just that in this Nugget that talks about using control references. This task is much easier when you know at development time what is in the array. That is where the strict type casting comes into play.
    What I would do...
    1) Make sure the contents of the array is a type def (to support data strcuture changes in the future).
    2) Go to the FP of the VI that has the array in question and drop a generic control ref control.
    3) Ctrl-copy and drag the array in question INTO the the generic ref (still working on the FP). You can tell when you find the "sweet spot" in the ref control because it will switch it appearence. See this mini-nugget for an image where the same thing can be done with que refs.
    4) Make the now strict ref a type def.
    5) Use the type-def'd ref from step #4 in the sub-VI as the proptype used by the "To More Specific...."
    After those changes you should be able to work with array in the sub-VI as if it were in the top level.
    BTW:
    Doing the above on the control in the sub-VI that brings in the ref would allow skipping the "To more Specific..."
    Have fun!
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Difference control refnum and control reference

    Hi guys.
    I am new on labview reference, can you explain difference between control refnum and control reference. 
    Gary Wang

    Are you sure you don't mean "refnum control"? That is a front panel control that can be selected as a reference to any one of several data types such as application, VI (including strictly typed), control or indicator. Whereas the "control reference" is a block diagram object that points to a specific control on your front panel (it can also be "linked" to other objects so it is similar to a "refnum control" in that respect).
    “A child of five could understand this. Send someone to fetch a child of five.”
    ― Groucho Marx

  • Can you use a control reference for a graph with two channels of data?

    when i try to wire a 2-D array of data to the value property of a graph(strict control reference), it shows a conflict. The value data type only shows up as accepting a 1-D array input. I want to use control references to pass the chart data to my main vi. Will I have to change the waveform graph control reference into an array control reference to make this work?? This would require adding a while loop in the main vi to read the array data and update the graph data??

    > when i try to wire a 2-D array of data to the value property of a
    > graph(strict control reference), it shows a conflict. The value data
    > type only shows up as accepting a 1-D array input. I want to use
    > control references to pass the chart data to my main vi. Will I have
    > to change the waveform graph control reference into an array control
    > reference to make this work?? This would require adding a while loop
    > in the main vi to read the array data and update the graph data??
    I think the problem is that your waveform graph is set to take one type,
    a 1D array of doubles, and you are wiring a different type. While
    charts adapt to type when the data is wired to their terminal, they do
    not adapt to data wired to their value property. If you change the
    datatype of the graph from its terminal, then you should see the value
    property change type also and you are set.
    Greg McKaskle

  • Get All Controls References

    Hi all
    If somebody know how can i get all controls references of VI (including controls that founds in Tabs and Clusters). I need generic method, because i haven't information about VI (reference to VI i get only at run-time).
    Thanks, Nadav

    To include the controls on Tabs, pass the array from my previous answer into a for loop, use auto-indexing. Place a Class Specifier Constant in the loop, right click on it and set it's type to a Tab Control. Place a "To More Specific Class" function below the constant, and wire the constant into the top.
    If the control from the array that you pass in is a Tab Control, "To More Specific Class" will NOT return an error. Use a case statement and use the No Error case to expose the Tab Control properties. Return the "Pages" property (an array) and pass this into a for loop. Connect a property node to the indexed pages, then select Controls On Page to return an array of controls ON EACH PAGE. You need to set up a shift register and use build array to return all of the controls from all of the pages. Make sure you close the Page Reference.  You can concatenate the array of Tab Control Page items with your original FP Controls.
    Now is the right time to use %^<%Y-%m-%dT%H:%M:%S%3uZ>T
    If you don't hate time zones, you're not a real programmer.
    "You are what you don't automate"
    Inplaceness is synonymous with insidiousness

  • Data acquisition with control references

    I'm a new LabView user and I would like to acquire data in a subVI and display that data in the main VI. I think that I need to use control references and refnums, but I just haven't been able to figure it out. I would GREATLY appreciate any help I could get.
    Thank you!

    From your description I would guess that the "subVI" has a loop in it that repeatedly reads the FP hardware, and the indicator is inside the loop. Right?
    The thing to do is move a lot of the logic in the subVI up to the Main VI--or add the Main's added logic to the subVI, whichever is easier. In the first case, the subVI would go away, in the second, the subVI would become the Main VI.
    If you're confused, post your code in V6.0 format and I'll show you what I mean.
    Mike...
    Certified Professional Instructor
    Certified LabVIEW Architect
    LabVIEW Champion
    "... after all, He's not a tame lion..."
    Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps

  • Data is not updating in calss & Convert vi reference to strictly type reference vi

    Hi,
    In the attached project file there is a Class called 'ClassSample.lvclass' having 3 different data types Boolean, Numeric and Variant(not really sure, Variant can be use for strict data type reference). From this three we careated the 'VIs for data member access' you can see them in project file
    My questions are,(Please refer attached screenshot)
    1. Though member of same class, why value is not updating at probe 16 ?
    2. How to convert vi reference to strictly type reference vi ?
    Thank you.
    Attachments:
    Capture.JPG ‏426 KB
    ClassSample Project.zip ‏116 KB

    It depends a bit on your final intention. Bascially you have a shared state that you want to access asynchronously from different places. If you know that the actual object is only created once (terminilogie here is a bit shaky as every wire split would create a copy of the LVOOP object but I hope you know what I mean), you could use a global or Action Engine to store the state. Using a DVR for this state and adding the DVR to your object class data is however a more scalable approach as it will allow you to instantiate more than one object of that class and each one will contain its own DVR that will reference the same value for the specific object instance even if you split the object wire, creating actually two copies of that object (but for the purpose of this discussion they would be still the same object instance).
    Queues could work if you create a single element queue but you would always need to use Preview Queue rather than Dequeue in order to maintain the value in there.
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Price Determination (Pricing) Date Control - Purchase Order

    Hi,
    We are exploring the Price Determination (Pricing) Date Control in the Purchase Order.
    Clientu2019s requiring  is, correct me if it is a wrong requirement:
    We have created Tax Codes:
    C2 -  CST 2% valid from 01.04.2010
    C3 -  CST 3% valid from 01.04.2010
    We have created a purchase order with Tax Code C2 - CST 2% on 30.03.2010 as we are in doing back log entries. Since the tax code is valid from 01.04.2010 only , the purchase order is not displaying the Tax Code Value .
    Now we are doing the Goods Receipt on 01.04.2010, the system will not pass the entry for the CST as at time of GR, the System picks up the Tax data from the Purchase Order.
    Now we want that the System should pick up the Data at the Goods Receipt, not from the Purchase Order. Some one advised me to use put GR Date in Pr. Date Cat. Under Item-> Condition Control tab. We are able to view the Pr. Date Cat by changing the Screen Layout of ME21N.
    We want to know what use of the same & under what condition is, we use this.
    Our suggestion:
    1. We are of the view that we should create the Tax Codes with Valid Date from 01.01.2010 (not from 01.04.2010 as currently maintained)
    2. Or since we are doing the back log entry, we should create all the Open Purchase Orders dated 01.04.2010.
    Is this the correct way which we are suggesting?
    Please note that we are dealing with Excise Materials also?
    Please guide.

    Thanks for the reply,
    While testing the same, I also encountered the somewhat same problem.
    You are suggesting that we should change the Tax Code Valid From Date.
    What do mean by the follwoing:
    Pricing date category "GR date" can't be set in PO if price is entered manually (with condition type PBXX). This also means manually entered conditions at Po will not be used.
    Regards,

Maybe you are looking for

  • How to find the list of all queries on each and every cube in the system???

    Hi All, I need some method to get all the reports(queries)(technical name and description),run on all the infocubes in the system. The number is very huge...roughly...on each cube there are near about 40-50 reports and the number of cubes is also too

  • How to deactivate one of our computers that has been destroyed by a tornado.

    I have one computer that I have the cloud on and works fine but my other computer got sucked up by the tornado. How do I deativate a computer I don't have in order to put it on a new one.

  • Anyone else have an iMessage bug in iOS 7 where it shows a person tying back when actually they aren't?

    I have an issue with iOS7 where it will show that the person I am messaging is typing a reply or a second message when the actually are not. I know this because a couple times I have sent a message while it shows the typing icon to a person who has r

  • Toolkit license issue

    Hi all, Am owning LabVIEW 8.6 license, I am trying to install sound and vibration toolkit with some other license. Is it possible to use different license toolkit with my labview license? Thanks in advance!

  • Delta in COPA

    Can somebody explain me how Delta works in CO-PA? How is Delta behave in Account based and Cost based? What is meaning of Init load and Delta in this process? Documents and OSS notes (392635) say delta and init load works in Line item, Segment level