Jump to content

Create XNode Properties/Methods


Recommended Posts

Without an XNode license creating a list of available properties and methods of the XNode and XNode Library classes is difficult.  It is similar to having private methods.  If you have a private property on the BD it works just fine and you can copy it and use it in other VIs.  Luckily NI has scripting functions for doing things like setting property nodes and finding what properties are valid for a specific class.

 

So with the help and collaboration with Jack Dunaway I've made a tool for getting the list of available property and invoke nodes for the XNode and XNode Library classes, and allow you to make those objects.  Now not all of the functions will work without a XNode License but I suspect most do.

 

Several abilities in an XNode return a XRef which is a reference to the XNode and is where these properties and methods could come in handy.

 

Also attached is a VI that just has all of the properties and methods for LabVIEW 2013 SP1, but the tool should be able to make any new ones in newer versions as well.

 

But all along we had the power to make these using native LabVIEW tools.  Quick Drop has the class browser function, with it you can set the class of objects and the properties of property nodes.  So following these steps will create an XNode property:

 

Drop a new property node on the BD.

Select the property node.

Invoke QD

Type "XNode" (without quotes)

Press CTRL+B

Select the property node

Invoke QD

Type "State" (without quotes)

Press CTRL+Shift+B

 

And lastly this is all very experimental.  Using undocumented XNode technology, along with private functions can lead to unexpected crashing and strangeness.  But for the most part these properties and methods have some level of documentation just don't be surprised if they don't work right, or don't do what you expect.

Create Methods Properties for XNodes.vi

All Methods and Properties.vi

  • Like 1
Link to comment
  • 1 month later...

They can be created using scripting, but I don't think if you click on an XNode Property node, that it will list the available properties.  The purpose of this was to essentially show what all properties and methods are available for the XNode and XNode Library classes.

Link to comment

Select the property node

Invoke QD

Type "State" (without quotes)

Press CTRL+Shift+B

 

And lastly this is all very experimental.  Using undocumented XNode technology, along with private functions can lead to unexpected crashing and strangeness.  But for the most part these properties and methods have some level of documentation just don't be surprised if they don't work right, or don't do what you expect.

And I finally learn what that QD shortcut does.

I'm also surprised you would need a license to view certain properties but I guess I will have to check that. Do they not show when Xnodewizardmode is enabled as well?

 

Edit: You are correct Hooovahh

Edited by jacobson
Link to comment
  • 8 years later...

Hello. I found my program lists (to a text file) a similar info that is shown by "All Methods and Properties.vi" - likely something was added since creating the VI - an excerpt from XNode property list:

 p: 632a804 Width 'Area Width' 'Bounds:Area Width'
  r: Width (U32)
 p: 632a817 DependNames 'DependNames' 'Dependencies:Found Dependency Names'
  r: DependNames (Array)
 p: 632a816 DependPaths 'DependPaths' 'Dependencies:Found Dependency Paths'
  r: DependPaths (Array)
 p: 632a815 MissingNames 'MissingNames' 'Dependencies:Missing Dependency Names'
  r: MissingNames (Array)
 p: 632a814 MissingPaths 'MissingPaths' 'Dependencies:Missing Dependency Paths'
  r: MissingPaths (Array)
 p: 632a808 GrpMbrRefs[] 'GrpMbrRefs[]' 'Group Member Refs[]'
  r: GrpMbrRefs[] (Array)

The attached ZIP contains the the program, the entire file produced by my program for LabVIEW 2018, and more. The file lists all LabVIEW classes found (287) and is over 100 000 lines long (it can be made much shorted by omitting properties/method inherited from parent of each class, but till now I didn't manage to perform the compression).

Class properties and methods information format:
😄 (class info)
 p: (property info)
  (t): (terminal info)
 m: (method info)
  (t): (terminal info)

For property, the (t) may be "r", "w", "r+", "w+", specifying read or write mode, and capability to change (e.g. "r+" means read that can be changed to write, "w" means write-only).

For method, the (t) is either "i" or "o", specifying input (host to method), or output (to host) terminal; note some terminals have empty names.

The file from the program contains 2468 different properties (i.e. w/ different names), and 1168 different methods. Its name "lv_classes+pmt.txt" stands for "LabVIEW classes + Property and Method Terminals".

lv_classes_mt_gt3.png

lv_classes.zip

Link to comment
  • 2 weeks later...

Hi, I made a Tcl script which compresses the property/method information for classes by removing everything inherited from a parent class (this reduces the file size to 18 304 lines); also, I selected classes suitable for FPGA VI - now the text file is below 7 000 lines, and I see no method or property duplicated there.

For full class set, 163 methods for VI-like classes weren't reduced because VI class used type LVObjVI and its children used LVObjUnknown; and some properties weren't reduced bacause a child has their access configured differently from its parent, like for both the property was read/write, but the default direction was different (this affects properties: 225 AutoLog.Path, 226 AutoLog.AtFinish, 227 AutoLog.PrintAtFinish, 242 Def Err Handling, 283 AutoPreallocate,  634640e Value, 6346410 DefVal, 6346411 Val(Sgnl), 23f44800 Name, 5436bc00 Texture Generator Mode, 5436bc01 Texture Generator S Plane, 5436bc02 Texture Generator T Plane, 7c86e800 TypeClass, 7c86e80a Value, 7c86e811 UserData).

lvc_tree.tcl is the script which can be run on the large (over 4MB) file in the lv_classes.zip I posted on May 18th; the 56kB text file is already "compressed".

I found 8 more classes used in FPGA VI-s - they aren't in the file:
 EIONode, EIOPropertyNode, EIOMethodNode, EIOGrowableMethodNode, LocalResourceManager, niFpgaContainer, nifxpmath_Interpret, niFpgaIPINode.
 

fpga-cl-known-xf.txt lvc_tree.tcl

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.