Jump to content

Recommended Posts

When working with code that uses LVOOP property nodes, debugging becomes difficult because there is no easy way to go to the accessor code that runs when the property node executes.

So in order to alleviate this I created the Property Popper.

  1. Run this floater helper VI (leave running during development)
  2. When you want to get to an accessor, select the property node
  3. Click 'Get Properties' on Pop Property.vi
  4. Double click on the property you want to get accessor access to

Enjoy

~,~ The Captain was here

See Video Detailing this

<!-- copy and paste. Modify height and width if desired. -->

<object id="scPlayer" width="892" height="708" type="application/x-shockwave-flash" data="http://content.screencast.com/users/NJKirchner/folders/Jing/media/e7471e93-bf0b-4801-b050-8e7c58d7a0fc/jingh264player.swf" >

<param name="movie" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/e7471e93-bf0b-4801-b050-8e7c58d7a0fc/jingh264player.swf" />

<param name="quality" value="high" />

<param name="bgcolor" value="#FFFFFF" />

<param name="flashVars" value="thumb=http://content.screencast.com/users/NJKirchner/folders/Jing/media/e7471e93-bf0b-4801-b050-8e7c58d7a0fc/FirstFrame.jpg&containerwidth=892&containerheight=708&content=http://content.screencast.com/users/NJKirchner/folders/Jing/media/e7471e93-bf0b-4801-b050-8e7c58d7a0fc/2012-01-10_1033.mp4&blurover=false" />

<param name="allowFullScreen" value="true" />

<param name="scale" value="showall" />

<param name="allowScriptAccess" value="always" />

<param name="base" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/e7471e93-bf0b-4801-b050-8e7c58d7a0fc/" />

<iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/NJKirchner/folders/Jing/media/e7471e93-bf0b-4801-b050-8e7c58d7a0fc/embed" height="708" width="892" ></iframe>

</object>

pop property.vi

  • Like 2

Share this post


Link to post
Share on other sites

I really like this tool and so, as per the video, I went ahead and worked on it a little.

The attached version:

  • Opens only 1 VI - the correct Read or Write method, which matches the method on the property node selected
  • Contains error handling and user feedback
  • Attempts to remove the initial lag by initialising the listbox (need more feedback on this as to whether this has worked on other systems - please post)
  • I have added Read or Write in parenthesis for a listbox item, in the case where a PN may have both
  • You can re-click on the listbox to open another n properties (easy fix - the lvclass ref just needed to be cache'd back into the SR)
  • Opens FP and BD of method VI

One issue I am having trouble with is opening an overridden method for the correct data on the wire (which I have inquired about here).

If the wire's type is a Parent but a Child is the Actual Data Type and you have Retain Wire Values on, it would be nice if the Child's overridden method opens (for such cases), but at the moment the Parent's method will open.

The code is a bit smooshed and the BD is large, but I wanted to keep it on 1 VI for distribution at the moment.

LVOOP Property Popper.vi




			
		
  • Like 1

Share this post


Link to post
Share on other sites

Ok check this out!

<!-- copy and paste. Modify height and width if desired. --> <object id="scPlayer" width="1135" height="757" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/f39af9e0-aa03-4ae1-b2cf-af4dd76378b5/jingswfplayer.swf" > <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/f39af9e0-aa03-4ae1-b2cf-af4dd76378b5/jingswfplayer.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#FFFFFF" /> <param name="flashVars" value="thumb=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/f39af9e0-aa03-4ae1-b2cf-af4dd76378b5/FirstFrame.jpg&containerwidth=1135&containerheight=757&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/f39af9e0-aa03-4ae1-b2cf-af4dd76378b5/LVOOP%20Propery%20Popper%20-%20Override.swf&blurover=false" /> <param name="allowFullScreen" value="true" /> <param name="scale" value="showall" /> <param name="allowScriptAccess" value="always" /> <param name="base" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/f39af9e0-aa03-4ae1-b2cf-af4dd76378b5/" /> Unable to display content. Adobe Flash is required.</object>

From the help of my LAVA friends the tool is now able to open the correct override VI of a Child Class!

AQ provided the Get Name of Class Object VI.

I need to refactor the code to make it neater (backwards wire etc...) and would use subVIs to make this easier to read however, I wanted to post it in the easiest for anyone to test - but here it is.

App Vars.vi

Get Name of Class of Object.vi

LVOOP Property Popper.vi

Needs to be run in Project Environment.

Also, (if not open) probe window seems to flash briefly even tho it is set to hide, which is a cosmetic issue, no biggie.

WINNING!

P.S. - I will contact all authors and try to get this into a package, refactor it, then distribute it.

  • Like 2

Share this post


Link to post
Share on other sites

Suggestion: Shouldn’t the “Get Name of Class of Object” VI get a default value of the object before flattening it? Since you don’t need the actual data flattened and it could take a long time if the object data is very large.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
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.