Jump to content
jgcode

[LVTN] LVOOP Assistant

Recommended Posts

Curious, why didn't you put the Theme Creator package in the vipc file?

Good question. A few reasons:

  • Traditionally dependencies go in the .vipc file only
  • I can't script a .vipc file, so dependencies are a "pre-made" file and during the build process the file is added to the zip just like any other support file, whilst the package gets created from a source distribution each time.
  • Majority of times people have the dependencies and just want the new package anyway
  • If I want the package in the zip, then having it in the .vipc file will add extra size.

But you are correct it is a valid way to distribute code, but I can't script it at this stage.

I am guessing you would prefer it in one file?

Share this post


Link to post
Share on other sites

I am guessing you would prefer it in one file?

Not at all, I was just curious. Had I been more familiar with vipc files I likey would have clued in to the dependency right away. If the zip file had contained only the vipc file (with the package inside) I *might* have figured it out. Once I saw the package in the zip file I completely disregarded the vipc file.

No need to change your distro. A better solution is to get smarter users.... :blink::lol:

Share this post


Link to post
Share on other sites

Not at all, I was just curious. Had I been more familiar with vipc files I likey would have clued in to the dependency right away. If the zip file had contained only the vipc file (with the package inside) I *might* have figured it out. Once I saw the package in the zip file I completely disregarded the vipc file.

No need to change your distro. A better solution is to get smarter users.... :blink::lol:

That's ok as VIPM 2010 will have a cool new feature that will have you covered cool.gif

Share this post


Link to post
Share on other sites

That's ok as VIPM 2010 will have a cool new feature that will have you covered cool.gif

VIPM will make me smarter? Sign me up for 11 copies!

Share this post


Link to post
Share on other sites

VIPM will make me smarter? Sign me up for 11 copies!

That is correct tongue.gif

Share this post


Link to post
Share on other sites

New Version

Version History (Changelist):

3.2-1 2010 07 20

- Fixed (): Caching the plugin caused an error whereby the QD'd VI's Reference become corrupted between application instances. This was fixed using VI Analyser functions (mad props to Darren who sorted this issue out for me).

Known Issues:

When the plugin is cached, the Getting Started Window (GSW) will not appear as a VI is still 'open'. I currently to do not have a work around for this, only to use (Ctrl + Shift + X) on a call to the plugin to uncache it and then the GSW will appear.

See this topic for more info on caching.

Share this post


Link to post
Share on other sites

Version History (Changelist):

3.3-1 2010 07 26

- Fixed (): Getting Started Window now shows when plugin cached in the background and no other VIs are opened

- Added (): Reset to Original Theme Color button

- Added (): Reset All Settings button

Share this post


Link to post
Share on other sites

Hey guys.

I have updated the LVOOP Theme Creator to LVOOP Assistant as I have added some cool new features.

Check out the vids below. Feedback much appreciated.

Enjoy!

Cheers

-JG

Intro

<object id="scPlayer" class="embeddedObject" width="1009" height="728" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/8105de4a-4418-472a-9e60-c8b013c6465c/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/8105de4a-4418-472a-9e60-c8b013c6465c/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/8105de4a-4418-472a-9e60-c8b013c6465c/FirstFrame.jpg&containerwidth=1009&containerheight=728&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/8105de4a-4418-472a-9e60-c8b013c6465c/LVOOP%20Assistant%20-%20Intro.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/8105de4a-4418-472a-9e60-c8b013c6465c/"> </object>

Rename LVOOP FP Object Labels

<object id="scPlayer" class="embeddedObject" width="1009" height="728" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/61961fba-3f9d-4c67-8f39-b1f586d1b70e/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/61961fba-3f9d-4c67-8f39-b1f586d1b70e/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/61961fba-3f9d-4c67-8f39-b1f586d1b70e/FirstFrame.jpg&containerwidth=1009&containerheight=728&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/61961fba-3f9d-4c67-8f39-b1f586d1b70e/LVOOP%20Assistant%20-%20Rename%20LVOOP%20FP%20Object%20Labels.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/61961fba-3f9d-4c67-8f39-b1f586d1b70e/"> </object>

Create Constructor From Template

<object id="scPlayer" class="embeddedObject" width="1009" height="728" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/a58b5ff7-11f6-4d50-a9c3-b008e0af3e99/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/a58b5ff7-11f6-4d50-a9c3-b008e0af3e99/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/a58b5ff7-11f6-4d50-a9c3-b008e0af3e99/FirstFrame.jpg&containerwidth=1009&containerheight=728&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/a58b5ff7-11f6-4d50-a9c3-b008e0af3e99/LVOOP%20Assistant%20-%20Create%20Constructor%20From%20Template.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/a58b5ff7-11f6-4d50-a9c3-b008e0af3e99/"> </object>

Create Scoped Virtual Folders

<object id="scPlayer" class="embeddedObject" width="1009" height="728" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/14f3684e-d9fd-4152-b393-ef6843deb121/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/14f3684e-d9fd-4152-b393-ef6843deb121/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/14f3684e-d9fd-4152-b393-ef6843deb121/FirstFrame.jpg&containerwidth=1009&containerheight=728&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/14f3684e-d9fd-4152-b393-ef6843deb121/LVOOP%20Assistant%20-%20Create%20Scoped%20Virtual%20Folders.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/14f3684e-d9fd-4152-b393-ef6843deb121/"> </object>

Methods Sandbox (Batch Create Static and Dynamic Methods from Template)

<object id="scPlayer" class="embeddedObject" width="1009" height="728" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/c0a6f59c-b35d-422e-8e1c-4c1e1705dcaa/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/c0a6f59c-b35d-422e-8e1c-4c1e1705dcaa/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/c0a6f59c-b35d-422e-8e1c-4c1e1705dcaa/FirstFrame.jpg&containerwidth=1009&containerheight=728&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/c0a6f59c-b35d-422e-8e1c-4c1e1705dcaa/LVOOP%20Assistant%20-%20Methods%20Sandbox.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/c0a6f59c-b35d-422e-8e1c-4c1e1705dcaa/"> </object>

Tools Menu Plugin (in addition to Quick Drop Interface)

<object id="scPlayer" class="embeddedObject" width="1009" height="728" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/270c6792-6600-4f99-b197-00c665092661/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/270c6792-6600-4f99-b197-00c665092661/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/270c6792-6600-4f99-b197-00c665092661/FirstFrame.jpg&containerwidth=1009&containerheight=728&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/270c6792-6600-4f99-b197-00c665092661/LVOOP%20Assistant%20-%20Tools%20Menu.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/270c6792-6600-4f99-b197-00c665092661/"> </object>

Unsaved Class Use Case

<object id="scPlayer" class="embeddedObject" width="1009" height="728" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/8aeafd6a-7cb4-459d-834c-4d62b8e6e25d/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/8aeafd6a-7cb4-459d-834c-4d62b8e6e25d/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/8aeafd6a-7cb4-459d-834c-4d62b8e6e25d/FirstFrame.jpg&containerwidth=1009&containerheight=728&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/8aeafd6a-7cb4-459d-834c-4d62b8e6e25d/LVOOP%20Assistant%20-%20Unsaved%20Class.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/8aeafd6a-7cb4-459d-834c-4d62b8e6e25d/"> </object>

Currently, some options are hard-coded to my style but there is no reason I can't open all this up if anyone wants me to e.g.:

Link to your own Static/Dynamic method (.vit) templates

Create your own Virtual Folder names etc...

  • Like 1

Share this post


Link to post
Share on other sites

Public Service Announcement

<object id="scPlayer" class="embeddedObject" width="378" height="333" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/3cd7631c-c3b5-4dda-8550-d8774d332741/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/3cd7631c-c3b5-4dda-8550-d8774d332741/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/3cd7631c-c3b5-4dda-8550-d8774d332741/FirstFrame.jpg&containerwidth=378&containerheight=333&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/3cd7631c-c3b5-4dda-8550-d8774d332741/L-VOOP.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/3cd7631c-c3b5-4dda-8550-d8774d332741/"> </object>

  • Like 1

Share this post


Link to post
Share on other sites

Nice job Jon! LVOOP Assistant is now my second favorite user contributed tool. (Hard to dethrone CCT, though I will definitely use this more than CCT.)

"Link to your own Static/Dynamic method (.vit) templates

Create your own Virtual Folder names etc..."

Both of these occurred to me while watching the videos. Being able to set my own templates would be more useful for me than defining custom virtual folder names. I tend to create virtual folders on an as needed basis depending on the class requirements rather than use a pre-defined set of folders.

"Public Service Announcement"

Since LabVIEW is a contracronym is the first place, shouldn't it be LVIEWOOP? Or just LOOP? :)

Share this post


Link to post
Share on other sites

Feature Request: Clone a Method VI

I have updated the repository with a new version - you can now easily clone a method using this tool.

Supported Templates include:

4815 - 4x2x2x4

4833 - 5x3x3x5

4834 - 6x4x4x6

4835 - 8x4x4x8

(Assumes any other LVOOP Class Control is a data member or parameter).

<object id="scPlayer" class="embeddedObject" width="1113" height="737" type="application/x-shockwave-flash" data="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/a4f9ea3b-9061-4523-88b1-452d556909df/jingswfplayer.swf"> <param name="movie" value="http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/a4f9ea3b-9061-4523-88b1-452d556909df/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/a4f9ea3b-9061-4523-88b1-452d556909df/FirstFrame.jpg&containerwidth=1113&containerheight=737&content=http://content.screencast.com/users/jgcode/folders/LAVA%20CR/media/a4f9ea3b-9061-4523-88b1-452d556909df/LVOOP%20Assistant%20-%20Clone%20Method.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/a4f9ea3b-9061-4523-88b1-452d556909df/"> </object>

This feature was sponsored by:

post-10325-096941000 1284820155_thumb.jp

Where drinking from a camouflaged can... ...makes you look tough. tongue.gif

Share this post


Link to post
Share on other sites
This feature was sponsored by:

post-10325-096941000 1284820155_thumb.jp

Where drinking from a camouflaged can... ...makes you look tough. tongue.gif

Firstly, it was "Miller High Life", and secondly, it was in a camo can so people wouldn't know that I was drinking it :P

Feature Request: Clone a Method VI

I have updated the repository with a new version - you can now easily clone a method using this tool.

I like it (not sure why that functionality isn't there in base LabVIEW, although I usually use the Endevo GDS for cloning), but I'm not sure it's intuative. For example, you're opening your tool and cloning a method from one class to another, but I find it difficult to know which method I'm cloning once I'm in the assistant. I guess project explorer integration would help this (eg: right click on a method and choose "Clone", then have a dialog that lets me select the target class <- that's how the Endevo GDS works). This would men breaking up your assitant's functionalites to groups (no longer a monolithic UI), but I think that would be more intuative in the long run.

I like it (not sure why that functionality isn't there in base LabVIEW, although I usually use the Endevo GDS for cloning), but I'm not sure it's intuative. For example, you're opening your tool and cloning a method from one class to another, but I find it difficult to know which method I'm cloning once I'm in the assistant. I guess project explorer integration would help this (eg: right click on a method and choose "Clone", then have a dialog that lets me select the target class <- that's how the Endevo GDS works). This would men breaking up your assitant's functionalites to groups (no longer a monolithic UI), but I think that would be more intuative in the long run.

btw: The reason that I'm suggesting changes is that I think that this tool has a real future - as I said, there's some stuff in it that I think should be included in LabVIEW by default, so I think it's probably a good time to start discussing use cases outside of your own, writing down features and planning out medium-term goals for it.

Share this post


Link to post
Share on other sites

I like it...

I like it...

Chris Relf... a man whose wisdom runs so deep he quotes himself! :D

Share this post


Link to post
Share on other sites

but I'm not sure it's intuative.

Agreed.

Sorry, I was out most of the morning, so I didn't spend as much time on feature some of it as I wanted to.

But wanted to get it out for feedback

My first goal was proof of concept (that I could script it).

I can always give it a facelift, now that I have the functionality.

So at the mo, you are cloning the active VI, i.e. QD'd VI.

I tossed up separating the functionality into another tool (but didn't for whatever reason) - so I have thought about that it may not be best suited where it is.

So for now (no proj int):

Maybe a dropbox of all VIs in the Class would have made more sense too? You could clone multiple methods at once, but that is not my usually use case.

I could make it a separate Tools Menu action that operates on the Active VI - that might make more sense?

Share this post


Link to post
Share on other sites

Nice job Jon! LVOOP Assistant is now my second favorite user contributed tool. (Hard to dethrone CCT, though I will definitely use this more than CCT.)

Thanks Dave

"Link to your own Static/Dynamic method (.vit) templates

Create your own Virtual Folder names etc..."

Both of these occurred to me while watching the videos. Being able to set my own templates would be more useful for me than defining custom virtual folder names. I tend to create virtual folders on an as needed basis depending on the class requirements rather than use a pre-defined set of folders.

My next step is to open this up.

The settings are what I like, but obviously people would have their own templates that they like - so I can point to those.

[Virtual Folders] The LVOOP Assistant gives me the option of adding my favorite folders anytime to the Class without the need to worry about syntax or scoping etc... (and if they already exist it just ignores it). You can start with a few and as your Class changes over time you can bang in more.

"Public Service Announcement"

Since LabVIEW is a contracronym is the first place, shouldn't it be LVIEWOOP? Or just LOOP? :)

I don't want to get bashed, so I am going with L-VOOP :)

Share this post


Link to post
Share on other sites
Chris Relf... a man whose wisdom runs so deep he quotes himself! :D

My wisdom is both reentrant and reentrant.

Maybe a dropbox of all VIs in the Class would have made more sense too? You could clone multiple methods at once, but that is not my usually use case.

Yeah, that's a very rare use case for me. It's more of a clone class than a clone method.

I could make it a separate Tools Menu action that operates on the Active VI - that might make more sense?

I guess, but I ultimately want Project Explorer integration - so I can right click on a method and clone it <- make it happen.

Public Service Announcement

You're welcome.

Share this post


Link to post
Share on other sites

Feature Request: Clone a Method VI

I have updated the repository with a new version - you can now easily clone a method using this tool.

Supported Templates include:

4815 - 4x2x2x4

4833 - 5x3x3x5

4834 - 6x4x4x6

4835 - 8x4x4x8

(Assumes any other LVOOP Class Control is a data member or parameter).

Where drinking from a camouflaged can... ...makes you look tough. tongue.gif

Error occurs!

LV could not find addons\_ICON Library\scripting\_icon_lib_scripting.lib.

  • Like 1

Share this post


Link to post
Share on other sites

Error occurs!

LV could not find addons\_ICON Library\scripting\_icon_lib_scripting.lib.

Thanks huotom.

Sorry, some files were missing from the build.

The new version (0.14.1) is up on LAVACR and has fixed this issue.

Cheers

-JG

Share this post


Link to post
Share on other sites

Shortcut to download latest version here

Changelist:

0.15-1 2010 09 26

- Added (): Name of Method VI being cloned is displayed on Clone Dialog

- Fixed (): Order of Virtual Folders in GUI did not match script

- Fixed (): Creating Constructor from Template did not replace Class Input Control (caused by refactoring for Clone method support)

post-10325-011527700 1285550415_thumb.pn

Share this post


Link to post
Share on other sites

This is for 2009 only? I'm not given the option to install the package for 2010.

Share this post


Link to post
Share on other sites

This is for 2009 only? I'm not given the option to install the package for 2010.

Hi Dave, as per the Readme, only 2009 is currently supported at the moment.

One of the next things I will be doing is testing it in 2010, to make sure its all good.

Are you moving up to 2010?

Share this post


Link to post
Share on other sites

Hi Dave, as per the Readme

You mean I'm actually supposed to read that? I suppose you faithfully read all the terms and conditions when you install new software too? ;)

Are you moving up to 2010?

Already have, except for reuse code. Still doing that work in 2009.

Share this post


Link to post
Share on other sites

Hi neil

This tool rocks!

Thanks for the kind words.

Ammendment to my previous comment: all newly created classes have correctly sized banner text when set via the LVOOP Assistant

However, a class I created previously (when I still had the font size set to 10 in the Icon Editor) seems to still be using the using the old font size.

I set the Class to defaults (8) if the IE2009 (layer) data was empty, and I always use 8 internally (so this hasn't cropped up for me).

The other reason is I decided to leave all other settings that exist alone is - in case they have been set for a particular reason.

But I could override the 10 to an 8 if this is always preferred (like I do currently for Caps)?

Also, would you mind posting a screenshot of what it looks like?

Cheers

-Jon

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.


  • Similar Content

    • By Ryan Vallieu
      I have seemingly found an issue with the shipping example code for Nested Malleable VIs.  Another user has verified that he saw the same behavior in 2019.
       
      I am working through the examples and the presentation from NIWeek 2019.  In running the Lesson 2b code (C:\Program Files (x86)\National Instruments\LabVIEW 2019\examples\Malleable VIs\Nested Malleable VIs) I found the Equals.vi in the class was not being leveraged and the search failed.  When I went to my LabVIEW 2018 machine and ran the Lesson 2b.vi the code worked to find the element by correctly leveraging the in-class Equals.vi.
      One difference I see is that in the 2018 example the Equal.vi is in the example folder with the code, and in 2019 the Equal.vi has been moved to VI.lib - otherwise the code looks to be the same.  The Equals.vi code looks identical, and the calling VIM look identical.  I posted on the LabVIEW NI.com forum here: 
      https://forums.ni.com/t5/LabVIEW/LabVIEW-2019-Malleable-VIs-Shipping-Examples-Lesson-2b-Nested/m-p/3966044/highlight/false#M1129678
       
      I am trying to determine what may have broken or changed between the implementation in 2018 and 2019, visually the code looks the same.
    • By Voklaif
      Hello all,
      I am programming with LabVIEW for around 2 years and was recently stumbled upon LVOOP.
      I am required to write a communication protocol to work with a micro-controller, which later will be also used for ATP and debug purposes.
      I want to build the program "correctly" from the beginning so it will be maintainable and flexible to additions and changes.
      My natural way of building a program would have been a queued state machine, with several loops, each loop is in charge of a different module (one for GUI obviously), but as I stated in the beginning, I want to use LVOOP.
      Does anyone have a LVOOP project I can use as reference? I've searched online and found some nice examples, but they are small and teach you the basic stuff.
      For me it's important to see the how to use the project tree wisely, where to place the classes, see the managing loop and to learn as much as possible before I create one of my own.
      Thanks in advance,
      Voklaif
    • By GregFreeman
      I have an array of classes, let's call the object TestPass, of size 1 (but it is an array because it can scale out to multiple test passes). In this class, there is one other nested class which is not too complex, then various numeric and string fields to hold some private data. There is also an array of clusters. In this cluster there is a string, two XY pair clusters, and an integer. Not very confusing.
      This array of clusters gets fairly large, however, upwards of 80-100k elements. What I am finding is when I index the array of pass classes it is crazy slow. On the order of 30 ms. Doesn't seem like much, but we are indexing the array in our method to "Get Current Pass" which is used in various places throughout our code. This is adding potentially hours to our test time over the 80k devices we are testing. 
      So, I started digging. When I flatten the class to a string and get the length, it's 3 mb. But, when I run the function with the profiler is is allocating close to 20 mb of memory!
      My gut feel was that the string is causing the issues. So I removed the string from the cluster and the index time went to 0 ms. 
      Luckily we can normalize a bit and pull the strings out of the cluster since a lot of them are duplicates. But it makes our data model a bit uglier. 
      Has anyone seen these kind of performance issues before? I saw them in 2013 and 2017.
    • By ted Francis
      I am new to LVOOP and have jsut started writing my first LVOOP program which I have attached.
      I would appreciate greatly help with the question I have
      Thank you in advance 
      Ted
      This vi will perform two tasks 
      1.Generating Report data sheet for metrology 
      2. updating the scales in a MAX .nce file
      1. Metrology will input calibration information into the tables on the tabs
      Metrology will then click "Update Tables" then "Create Report ( create report section of code is not yet written
      Update Tables will write all information entered in the tabs to class varaibles and will also delete current Max informatiomn
      2. Metrology will click "Load NCE Scale"
      vi will prompt for nce file to load and then once file is selected, display existing scales for two channels (Current Motor 1 and 
      Current Motor 2)
      Metrology will then click "Update Scales"  the program will replace the existing scales with those entered in Step 5.14 and 5.15
      from the tables on the tab
      Question 1.  Steps 5.14 and 5.15 are needed by both classes ( Table Variable and MAX) - what is the best way to share this information
       
      CAT0000032 Class Version.zip
    • By shoneill
      I was browing through the actor framework discussions on the NI site yesterday and I came across a statement by AQ.
      Never inherit a concrete class from another concrete class
      I had to think about that for a second.  The more I think about it, the more I realise that all of the LVOOP software I have been writing more or less adheres to this idea.  But I had never seen it stated so succinctly before.  Now that may just be down to me being a bit slow and all, but in the muddy and murky world of "correct" in OOP-land, this seems to be a pretty good rult to hold on to.
      Are there others which can help wannabe plebs like me grasp the correct notions a bit better?  How about only ever calling concrete methods from within the owning class, never from without?  I'm learning for a long time now, but somehow, my expectations of LVOOP and the reality always seem a little disconnected.  AQs statement above helped crystallise out some things which, up to that point, had been a bit nebulous in my mind.  Well, I say I'm learning..... I'm certainly using my brain to investigate the subject, whether or not I'm actually LEARNING is a matter for discussion... The older I get, the less sure I am that I've actually properly grasped something.  The old grey cells just seem to get more sceptical with time.  Maybe that in itself is learning...
×
×
  • Create New...

Important Information

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