Jump to content

jgcode

LabVIEW Tools Network
  • Posts

    2,397
  • Joined

  • Last visited

  • Days Won

    66

Posts posted by jgcode

  1. Personally I find the use of polymorphic VIs (The ones with drop-down list, not auto-selecting ones) with LVOOP because it gives a one-stop shop for the API, not neccessarily the underlying objects.

    Yes, I also do this. Although in the above implementation, it was for wrappers that support datatypes.

    ...The input class is obviously always dynamic dispatch, thus unifying the advantages of both. This is all pre-2010. ....

    How do you get this to work?

    AFAIK Polymorphic VI cannot have DD inputs?

  2. Why are you using polymorphic VIs? blink.gif They are data bound. Shouldn't you be using dynamic dispatch or some other dark magic to choose the instance at run-time?

    Yes, the reason I use the Polymorphic VI is to provide easy access for datatype conversion, just like other functions in LabVIEW or OpenG (it is just wrappers of the main code). In this case, I didn't have to use Class Library, but chose to, because I like it.

  3. I am just posting a link here to ni.com for an issue I recently had that got CAR'd (thanks Gmart) in case anyone else runs into it.

    Classes added to Library with protection property and set to locked generates an error at build time.

    At the link there are example files and a video demonstrating what I am seeing: Locking LabVIEW Project Libraries and Building Applications

    Cheers

    -JG

  4. Ok, this one got me late last night:

    I have a Polymorphic VI as a member of a LabVIEW Project Class Library that I want to form the API of the Class.

    I don't want users to place specific instances of the methods in the Polymorphic VI on the BD, only to use the Polymorphic VI itself.

    So I make the methods Private Scope and the Polymorphic VI Public scope... ...everything is all good running from source.

    Build time comes around and I start getting build errors (see below of the description), it doesn't point to the Class Library directly, but as it turns out, the calling VIs of the Polymorphic VI.

    An error occurred while saving the following file:C:\Users\developer2\Desktop\Private Polymorphic Class Members\[b]main.vi[/b]Visit the Request Support page at ni.com/ask to learn more about resolving this problem. Use the following information as a reference:Error 1502 occurred at AB_Source_VI.lvclass:Close_Reference.vi -> AB_Build.lvclass:Copy_Files.vi -> AB_Application.lvclass:Copy_Files.vi -> AB_EXE.lvclass:Copy_Files.vi -> AB_Build.lvclass:Build.vi -> AB_Application.lvclass:Build.vi -> AB_EXE.lvclass:Build.vi -> AB_Engine_Build.vi -> AB_Build_Invoke.vi -> AB_Build_Invoke.vi.ProxyCallerPossible reason(s):LabVIEW:  Cannot save a bad VI without its block diagram.

    So, after I was able to figure that out out I changed the calling method's scope from Private to Public and then everything was ok when building.

    I then played some more today and found out that if I uncheck Remove unused polymorphic VI instances in the Build Spec, the error goes away.

    post-10325-050085300 1285652594_thumb.pn

    I have attached some code if anyone wants to replicate it. Just toggle the VI.vi Scope from Private to Public or change the Build Spec as above.

    post-10325-076873600 1285652994_thumb.pn

    Thoughts?

    Is there a problem doing what I was doing? Or Is this a bug? If so, is it a known issue?

    Cheers

    -JG

    Private Polymorphic Class Members LV2009.zip

    
    
    						
  5. 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?

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

  7. Ya, but it gets kinda silly when I have to download a 1 Gb driver installer. Don't ya think? I know, I know. You pay for the convenience. But it's still insane.

    Ha! I never mentioned the size of that connection... :)

    Yes, you are right, to use DAQmx as an example: whilst the size has not increased dramatically in the last few releases - like it was doing previously (it may be ever so slightly shrinking as well) - I would love to be able to have the ability to be able to scope support to single devices so I can limit the size of my installers. (~150MB for the LRTE and) ~150MB for DAQmx Core drivers is cumbersome, we obviously can work with it, but I would like to know if anything could be done for it - maybe I should post this on the Idea Exchange?

  8. I have never understood those people who always go for the cheapest DAQ just because its the cheapest.

    IMHO, the most powerful thing about NI is not their hardware and not LabVIEW (don't get me wrong these are both fantastic), its their Drivers - the connection between the IDE and the hardware.

    Again, IMHO, for the extra cost upfront of going with more expensive hardware, you are going to save a bucket load of time (and therefore money) by having a reliable Driver set e.g. standardization/familiarity, support, flexibility, upgrades etc...

    So a lot of the time (for what we do) it makes sense to choose NI. (However, we are also an Alliance partner, so we are bias)

    :)

  9. [Duplicate Thread]

    Hi Karasi

    As you are new to LabVIEW and will be using NI-DAQ Hardware (e.g. USB-6008) I would suggest checking out Getting Started with DAQmx as well as any general LabVIEW topics.

    I don't think anyone will do your homework for you (who knows? maybe you will get lucky) but if you post specific questions of the problems you are having, along with example code as to what you have tried and where you are stuck, you will be more likely to get a response.

    Cheers

    -JG

  10. Does this mean I can't create separate tasks in Max that all use the same physical channels, even though I'll only be using one task at a time?

    Of course you can, otherwise the Task-based API would be pretty useless.

    As long as you don't run two tasks at the same time that share the same physical resources you are fine.

  11. Hi Martin

    A few ideas tossed around if you can't get the Tab to go:

    Why not just use one graph that is set to fit to pane and if the user selects a different graph (view) then just write this data to this graph.

    This is assuming you have your own buffers and are not using the graph's, and the graphs are the same types.

    Otherwise, if not, use multiple graphs (with fit to pane set) and just stack the graphs on each other and just make the active graph visible.

    Cheers

    -JG

×
×
  • Create New...

Important Information

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