Need Advice about PPL Usage

LV 2013, LVRT 2013 (PXI), Win 7
I'm an old hand at LabVIEW, but I'm new to using Project Libraries (.lvlib) and Packed Project Libraries (.lvlibp).
I'm hoping someone with more experience can offer some insight and guidance.
At first blush, it looks like PPLs can solve a problem of mine.
My project is large: 500 channels from 20+ different domains: plugin boards, networked devices, etc.  Lots of data analysis and reporting.  There are 30+ cells with a copy of this, it has to be EXE and RTEXE files, not just LabVIEW DevSys.
It's been working for 10+ years, we are now doing a rewrite, so that DAQ is happening all the time, rather than on demand.
My client wants to have "addons", so that when a new Gizmotron 9000 comes along, we don't have to add to the main program, we write an "addon" to handle the Gizmotron.  This "addon" would have a UI, and be able to share VIs from the main host, and data, but not require any changes to the host code. Eventually, these should be capable of being written by someone other than me, an engineer (in some other field) with fewer LabVIEW skills than me.
Using a VI for this would work, but is kind of fragile.  If this VI uses a VI in the host, then it's path-dependent.  Moving the VI to a different folder would at best, cause a SEARCH box to come up, and at worst, break things.  I'm not even sure if the SEARCH box would come up, in an EXE.  And if I want a given host VI to be available to these addons, I have to make sure that it's not stripped by the BUILD process.
So, I looked at making a DLL. Yuck. Double Yuck.  I'm not about to make the client have to edit C header files, just making the "wizard" import a DLL that it just made is a nightmare. 
So, i found PPLs.  It looks like they're the answer.
I've already implemented a system where a given PPL has a "Description" VI, and a "Work" VI. If you choose a given PPL, it runs the "Decription" VI and obtains a text decription (that the maker writes) of what the package does.  If you choose this one, then it takes the "Work" VI, creates a new window with a subPanel to fit, and installs the "Work" VI in it. A string notifier sends messages to it.  The host provides Preferences save / restore functions.  The window can be hidden and shown. It can do anything as far as UI that it needs.  
I can move the PPL from the ADDONS folder to the ADDONS\GoodStuff\2015\May folder.  My menu system will offer it, and if you choose it, it still works. It is self-contained, it just works.
But being self-contained has a "small" downside.  I have a fair number of FGVs: Functional Global Variables.  I call them "managers" - the idea is that they keep info in Shift Registers, and a caller calls them with some function to perform using that info.
For example, one might keep a TCP Connection ID in such a ShiftReg and have CONNECT, DISCONNECT, and various SEND and RECEIVE functions which use that ShiftReg.
Without attention, that pattern doesn't survive the move to PPLs.  Because of the "self-contained" aspect, there are actually TWO instances of the manager, with TWO separate dataspaces. So, if the host calls it, and the PPL then calls it, they don't share the same info.
Here's where my understanding of this gets dicey.  If I create a separate PPL just for this manager, then that's an answer.  If everybody calls the PPL version, then there will only be one instance, and all is well.
But what's the best way to do that?
I can put the LVLIB into the master project, and then add a Build Spec to make the LVLIBP, I found out I have to actually put the PPL itself into the project to get it to work.  But that means there are TWO copies of the VI in the project.  The only way I can get it to work is to specify to use the copy from the PPL, and NOT use the one that's in the host already.
So, to avoid temptation, should I move all these manager things into one separate project?  Should I move them into individual separate projects?  Should I just remove the components from the main project after building the PPL? (no, I can't do that - that would make it impossible to update the PPL).  What's the best strategy, and why?
Another thing I don't understand is the physical handling of the PPL.  Does it have to actually exist?  
Apparently not - I did a test:
--- Create a LVLIB for one of these managers.  It lives in the ADDONS folder.
--- My HOST code (in an EXE) initializes it, and stores a value.
--- One of the ADDONS from a PPL reads that value and displays it.
--- It works.  The data is shared.
--- I moved the PPL file to a different folder, inside the ADDONS folder.  It works.
--- I moved the PPL file to my desktop.  IT STILL WORKS.
--- I changed the PPLs file name .  IT STILL WORKS.
--- I deleted the PPL file.  IT STILL WORKS.
So, apparently the PPL was incorporated into the EXE.  But I didn't specifically include it - the only SOURCE code I specified was the host main VI.
Is that what happened? Am I understanding it right?
But if that's what happened, then how does a stand-alone PPL know that it's there?  Because my standalone PPL accessed it just fine, even though it's in an EXE.
Do I have to deploy the PPL file alongside the EXE? or just ignore the thing.  I just don't quite understand how it works.
Steve Bird
Culverson Software - Elegant software that is a pleasure to use.
Culverson.com
Blog for (mostly LabVIEW) programmers: Tips And Tricks

CoastalMaineBird wrote:
But if the path is important, then this is not solving one of my problems, the portability of the addons.
If your problem is "how do I find plugins not included in my EXE as a plugin architecture".  By relative path is the only simple method.  If the plugin architecture uses VIs, or classes, or PPL, you will always need to enumerate the plugins not included in the EXE.  The easiest way is to enumerate a folder of files and say each one is a plugin.
Alternatively you could have something in the middle like a text file that says where to find the plugins, or a registry to read that says where they are as an absolute path.  But then you have another place where the fragility of the system could be seen.  In addition to the plugins not being where they should be, your text file could be broken, or missing.  At least with a PPL, or LLB, or Class you have a single file that is seen as the main which references the others.
As much as I resist classes complicating things, this is a prime example of where they should be used.  I don't want to change your design if it is too late, but you should  at least take a look at the Hardware Abstraction Layer.
http://www.ni.com/example/31307/en/
https://decibel.ni.com/content/docs/DOC-15014
Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

Similar Messages

  • Need advice about zip rar files

    Here's wishing you all a very happy New Year!! Mr Greenhorn is back again! I have a question about zip and rar files. As some of you may remember, this is my first Mac, so I'm used to using the zip/rar programme on my old Windows O/S. Now I receive zip/rar files and can't open them. What is anyone's advice about downloading the zip/rar programme onto my Mac? Any particular pro's and con's? Any particular site to download from? Now my Mac has a compression programme included which converts files to zip files, but is that compatible to the actual zip/rar programme? And finally, where is the advantage to compressing files? Is it only for uploading or is there some benefit to having files 'compressed' on your actual laptop?

    Hi There
    Mac OS X has a built in Archive Utility which doesn't support .rar files. To uncompress rar files you will need a utility like RAR Expander or Stuffit Expander both are free. I suggest doing a search on MacUpdate (http://www.macupdate.com) or VersionTracker (http://www.versiontracker.com) to find a programme that you like.
    I personally don't see any advantage with keeping compressed files on your laptop (unless the archives being used often for emailing, uploading to websites etc). Compressing files does save disk space but if you get to the point where you need to compress your files to gain disk space then I suggest buying an external HD or a bigger internal HD.
    Hope this helps
    J.C

  • Need advice about coalesce and deallocate unused space

    Hi experts;
    Here looking for an advice about coalesce and deallocate unused space.
    I got this tablespace with 87% full, one of the table in that tablespace has 1,150,325 records.  I'm going to delete 500,000 records from that table, but to release the space used by those records I understand that I need to execute other procedure. I was reading about coalesce tablespace and deallocate unused space.
    I found that apparently, both process can help me to free space. If you want to share with me your comments, about  advantages or disadvantages about them, in order I can take the best solution?
    Thanks for your comments.
    Al

    Hi
    after deleted rows, the high water mark is still the same and so the size of the table. you need to bring down the water mark
    here is what you need to do to bring down the high water mark. We do this monthly for performance purpose.
    This is an EBS R12 system  but the procedures are the same for EBS database or non EBS database.
    After you purge or delete data in a table
    1) alter table APPLSYS.WF_ITEM_ATTRIBUTE_VALUES move; <-- this operation will invalidate all indexes attache to the table
    2)select owner, index_name, status from dba_indexes  -- list all invalid object for user APPLSYS
    where table_owner = upper('APPLSYS')
    and
    status NOT IN ('VALID','N/A');
    3)spool idxrebuild.sql --generate script to rebuild indexes.
    select 'alter index ' ||owner||'.'||index_name ||' rebuild online;'  from dba_indexes
    where table_owner = upper('APPLSYS')
    and
    status <> 'VALID';
    4) run idxrebuild.sql   -- to rebuild indexes.  -- at this point if you check spaces on the table, it is still the same, you need to run #5
    5)exec fnd_stats.gather_schema_stats ('APPLSYS');  --fnd_stat is for EBS system you can replace with the database equivalent command.
    use this statement to count the block before and after the operation to see the different.
    select DISTINCT(SEGMENT_NAME), count(blocks) "Total Block" from dba_extents
    where
    owner IN ('APPLSYS')
    AND segment_name = 'WF_ITEM_ATTRIBUTE_VALUES'
    Hope this help.

  • Need advice about headphones and splitter for HP EliteBook

    Hello,
    I would like some advice about what headphones and headphones splitter I should use for an HP EliteBook. I am going on a plane trip with my kids, and I plan to get them both Leapfrog headphones. However, I need a headphone splitter so that they can both watch a movie on the same computer.
    Does anyone have any suggestions for a splitter for an HP EliteBook? I tried Amazon but couldnt find anything.
    Thanks
    This question was solved.
    View Solution.

    Hi,
    The following one is for more than 2:
        http://www.officeworks.com.au/shop/officeworks/belkin-rockstar-headphone-splitter-bef8z274
    and the following one is from Amazon:
        http://www.amazon.com/Belkin-Speaker-and-Headphone-Splitter/dp/B00009WQSR
    Regards.
    BH
    **Click the KUDOS thumb up on the left to say 'Thanks'**
    Make it easier for other people to find solutions by marking a Reply 'Accept as Solution' if it solves your problem.

  • Need advice about transfering files

    Hello. I just got a new mac through an education deal at school. I hate this process of transferring files from one computer to the next but have never done it from one Mac to another before so thought it would be pretty smooth. Im new to the whole Migration Assistant and so need some advice about what to do next.
    I tried using migration assistance upon first turning on my new mac but was using wireless and it just wasnt working. My computer kept saying my new mac wasnt responding and I kept having to select ok or cancel every minute and with 15 hours to go, i thought f^*# it. So I decided to just start the computer up and manually transfer files. Then I found an ethernet cable, turned file sharing on and am using my public folder to transfer but its turning into The Most Tedious task and things arent transferring properly (like certain folders arent copying contents, just the folder itself).
    Now Im wishing I could have used migration assistant from the start but what can you do. I cant just re-install the mac os software and try again because before we got our new macs they installed some programs for us, like Logic, and I dont really wanna mess with that.
    Whats my best option at this stage? Ive transferred about a gig of pictures and documents over so far (and I think my old hard drive is about 60 gig full) but theres a bunch of other little things like iphoto, imovie, garageband, stickies, as well as big folders of music (and itunes - playlists etc) that I wanna make sure get copied in entirety. Will migration assistant handle that? Is it best to delete the stuff Ive transferred so far and let it start fresh? What would you do?
    Sorry my post is so long
    Message was edited by: girrrl

    Also, now that I have an ethernet cable, if I go ahead and use migration assistant to transfer the account from my old computer, will Logic only be available through the new account I have set up on my new computer? Would I have to log out of one account and into the other and back and forth to access the different files/programs? Any help would be much appreciated

  • Need advice about making a application log over every task succsessfully done to a target

    Hi!!!
    I need an advice about how to make an application log over every task succsessfully done to a target with an unique ID.
    I have developed an application with several tasks on the menu which have to be done in a certain order to program and test a target board,
    and the user want a log about which tasks are done to the target, so it is easy to know which step is next on the menu (It is a very routinebased  job).
    Do somebody have any good advice on how this can be done in a cleaver way ?
    Best regards,
    A

    Also, now that I have an ethernet cable, if I go ahead and use migration assistant to transfer the account from my old computer, will Logic only be available through the new account I have set up on my new computer? Would I have to log out of one account and into the other and back and forth to access the different files/programs? Any help would be much appreciated

  • I need advice about being part of the Twitter Army of Awesome Help

    I am grateful for the fact of Mozilla and I use Twitter a lot.
    Although I am not technically competent, I do have experience of using Mozilla and Thunderbird for quite some years and am willing to share my experience.
    I obviously do not want to make matters worse for questioners and need some advice about how to begin.
    Is there a Forum where Folk such as me can share experiences of answering Tweets and also just be given examples how the system works, please, or might it be better for me to resign before I start rather than cause complications for anyone?

    Thanks - I hope to have a check there, when I have more time, meanwhile I see that separately I have been sent an email asking for my experience etc.. -
    I plan to attend to that when I am less pressed for time, it may not be for some while though - my spirit is willing but resources few, but if I just learn to do some small things it spreads the load - and I guess I have made a very small start - I have wondered about it for years but that Awesome Tweet was the prompt that got me this far!

  • Need advice about certification: do J2SE 1.4 or wait for 1.5 to go out?

    I need advice here! I am studing for Java Programmer certification (310-035) and I know now that the certification does not have any expiration date, instead it's version based. So, if I get now a J2SE 1.4 certification, soon it will be outdated... I guess!
    Does anyone know or have any ideia of WHEN java 1.5 sdk will be avaliable, and anyone can tell me how long it will take for a new 1.5 programmer certification be avaliable for general public?

    Do both. 1.5 is far enough away that you do not want to wait for it.
    And besides, 1.5 has enough new stuff in it that you'll want to recertify anyway.

  • Need advice about a WiFi set-up

    Dear Gang,
    I want to have a pure 802.11n network using the 5 ghz spectrum and the wide array setting. However, I have one desktop computer that is 802.11g. I'd like to run a 25 ft. Cat 5 cable to one of the LAN ports on the TimeCapsule and then shut-off the WiFi on this computer. However, strangely enough, I've always had all my computers (even desktops) networked via WiFi so I don't know how well using the LAN works.
    What are the thoughts of the group?
    I know that ethernet should give me greater speeds to the TC's hard drive and should solve my problem with bringing a non-802.11n machine in to a "pure" network, but I don't want to do so if the set-up is arduous or if doing so makes me lose a lot of features that I get in an all WiFi network.
    TIA,
    Mark

    dwb,
    I'll definitely take your advice about the ethernet cables - thank you.
    Your info is reassuring as it means that my dual G5 will get a little more life out of it by connecting it in to my "pure" system via ethernet.
    Two other quick questions:
    -should I connect my new iMac via ethernet to the router, too, even though it's capable of going on my system in 802.11n 5ghz?
    -also, as an aside, I'm trying to figure out if my new 802.11n network will equal my current 802.11g network in terms of distance as I have an Apple TV that's a few rooms over. That Apple TV gets about 4 bars of signal from my current network. Do you think that 802.11n at 5 ghz will have an equivocal range?
    Mark

  • Need advice about best characterset for XMLDB

    Hi,
    Oracle 9.2.0.5 Windows 2000
    Please, give me an advice about best character set
    configuration for XML DB.
    During installation Oracle istallator suggests
    charset =AL32UTF8 for multilingual data and ncharset=
    AL16UTF16.
    Is it good settings for database, which will be
    used for usual multilingual data and XML DB ?
    Thanks,
    Viacheslav

    Yes, we strongly recommend the use of AL32UTF8 for XML DB.

  • Need advice about proper JSP usage

    I have to create a JSP which will have 3 IFRAMEs (each IFRAME has its own JSP). So total 4 JSPs. Each JSP has to access some java component. What is the best way to tackle this situation?
    One solution i can think of is each jsp calls the server code seperately. The other solution is that main jsp calls a server code which passes html code for all jsps in a Map. Then the main jsp distributes the html code to respective jsps.
    i am looking for an elegant and best performance solution.
    Thanks

    I would have separate JSP pages for the main page and each frame. Keep the parts separate, that makes it easy to make changes or swap out one part for others later if needed.

  • Need advice about H.264 and Apple ProRes 422.

    When exporting a "master file" I can encode the video as H.264 or Apple ProRes 422 (etc). The H.264 is more compressed but still in 1080p? Does this mean that I do not have to compress the file with "Compressor"? What is the advantage of using ProRes and what is the advantage of using H.264? I want of course the files to be as small as possible but still at the best quality. Any advice?
    Thanks.

    ProRes is an editing format. If you are archiving a finished project, you can create an extremely high quality "print" with H.264. ProRes 422 will use approximately three times as much memory. ProRes 422(HQ) roughly four times and ProRes 4444 up to 10 times (compared to the size of the file FCPX will export as H.264). 
    FCPX exports (shares) H.264 in highest quality (over 45Mbits/sec [if needed] for 1080p), you have no options to adjust for smaller files (or lesser quality from FCPX.)
    To get "as small as possible," you'll need to learn more about compressing video. As a comparison (to FCPX), YouTube limits a maximum bandwidth of 8Mbps (used to be 5Mbps -- I *still* compress to 5Mbps before uploading.) Even compressed this highly, H.264 provides excellent results. [Compressing in ProRes is going from 4444 down to 422 Proxy (not to be confused with proxy media used in FCPX which is 1/4 resolution, i.e. 960x540 for 1080, ProRes 422.) You cannot compress each of the different ProRes flavors individually.]
    You'll need other software to compress further than FCPX.  I use Quicktime 7 Pro. Compressor is another way to go (Compressor will let you set "compression markers" so you can vary the bitrates through various sections of your work).  The way to figure out your compression level is to find a section (less than a minute) with the highest motion high contrast (and/or changing gradients) and export at different bitrates. Watch for "jpeg artifacts" (blocking) and once you've gotten past that, that's the bitrate you should compress to. (I've had some clips that required at least 20Mbps.) It just takes a little practice to get a feel for it.

  • Need advice concerning memory usage

    Hi all,
    i have a class that represents a hexagon map (extends JPanel). This map is usually put in a scrollpane.
    In the paintComponent method of the class the hexagons of the map are painted. For good scrolling and painting performance i use the clipping region to paint only the hexagons that are currently visible.
    For that purpose i call "hexBounds = hex.getBounds();" to get the bounds of the hexagon. Then i check whether the hexagon's bounds intersect with the clipping region to decide whether the hexagon needs to be painted (see the code below).
    The "problem" is that lots of Rectangle objects are created (and memory allocated). So when i render a large map and do some excessive scrolling (which causes lots of repaints) for let's say 1 minute, there are several hundred thousand Rectangle objects that have been allocated (but are no longer referenced) and are occupying up to 20-40 MB of memory. I used the profiler with the following parameters:
    -Xint -Xrunhprof:heap=sites,depth=10.
    My question is: Do i need to worry about this or will the garbage collector take care of it when it needs to? I could call the garbage collector manually at the beginning of the paintComponent method so that all old, unreferenced Rectangle objects are garbage collected but i've read in several articles that calling the garbage collector manually is generally a bad idea.
    What is the best practice in such a case?
    Here is the painting code:
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D)g;
            Rectangle clipBounds = g2d.getClipBounds();
            Rectangle hexBounds = null;
            Iterator<Entry<HexagonCoordinates, Hexagon>> iter = hexagons.entrySet().iterator();
            while(iter.hasNext())
                Entry<HexagonCoordinates, Hexagon> entry = iter.next();
                Hexagon hex = entry.getValue();
                hexBounds = hex.getBounds(); // <-- problem
                // Paint only if neccessary
                if(clipBounds.intersects(hexBounds))
                    g2d.drawPolygon(hex);
                hexBounds = null;
            }

    I've run several tests now and it seems as if the garbage collector takes care of the problem as expected. But what if someone would scroll excessively for many minutes (hey, you know users do strange things sometimes). This would result in more and more memory being allocated in a very short time period. My guess is that the garbage collector would free the occupied memory before the VM runs out of memory, right?
    Then everything would be fine.
    Any other suggestions on improving my painting code are greatly appreciated.

  • New to Mac computers-need advice about hardware

    I purchased a Mac computer on eBay knowing that the mainboard needed to be replaced. I purchased it for the software on the hard drive. I need to replace the mainboard and do not know anything aside from that the bottom is white, round, and has a silver apple on it. I need to purchase a mainboard for the older computer, and don't know what to ask or search for and I would like to know who I could purchase a mainboard from. Any advice would be appreciated. The serial number for the computer is QP30837HNHX and was initially purchased from Apple in Feb. 2003. I've noticed that these computers have models named after large cats, i.e. Jaguar, Tiger, etc. I don't know what mine is, other than it has an 80G HD, 1Ghz G4. Any advice would be appreciated.

    Hello! Here is a rundown of the computer.
    Serial number: QP30837HNHX
    Name: iMac G4 (Early 2003)
    Model: M6498 iMac G4 1.0GHz
    Bus speed: 133MHz
    Screen size: 17 inch
    Factory: QP (USA)
    And also look HERE for additional info concerning iMacs like yours.
    You may find a logic board HERE.
    Tom

  • NEED ADVICE about Inserting a custom formula column in EXPANSION memberset

    Dear all:
    I am asked to create a report with TIME(col), ACCOUNT(col), PRODUCT(row), where ACCOUNT stores Beginning Inventory Amt, COS, etc.
    The problem I am having is that the user requests to have a place to show COS ratio column. COS ratio value is derived from ACCOUNT COS and ACCOUNT NETSALES of my ACCOUNT MEMBERSET.
    I tried various ways but was unable to keep the formula in EVDRE so this COS ratio column's formula goes with the rest of the expansion.
    The result I want is something like below, where NETSALES and COS are my dimension members and RATIO is Excel formula STDCOST/COS... As the report expands by different TIME hierachy (i.e. 2008.total, 2008.h2, 2008.q3), RATIO is expanded accordingly.
    Is this doable in EVDRE?
                                       2008.10                                      2008.11                                      2008.12
                    NETSALES     COS     RATIO         NETSALES  COS   RATIO          NETSALES   COS      RATIO
    PRODUCT1
    PRODUCT2
    PRODUCT3

    Sarcasm?
    You can create a hundred different evdre templates and still not know everything about evdre and its functionality keeps growing. Nothing beats experience here. Iu2019m not able/allowed to provide examples, perhaps one of your colleagues? Or another forum participant?
    1) The online help is good and the Best Practice guide is also very good. I canu2019t send the evdre guide and it is not published by SAP. You can get the BPC for Office Useru2019s Guide;
    Support Portal u2013 Release & Upgrade Info u2013 Install & Upgrade Guides u2013 SAP BPC u2013 (Select your BPC release)
    Office User Guide
    https://websmp101.sap-ag.de/instguidescpm-bpc
    Grab the BPC 7 version as well, it has some better samples.
    To fully capitalize on the fullness of evdre you also need an expert level knowledge of excel, (and I donu2019t mean lots of experience). Evdre is the combination of BPC functionality and excel working in union with each other. VBA is also important in very complex situations.
    2&3) This is one approach. One of the nice features in evdre is the ability to insert excel formulas within a data range. You may need to adjust your row/col key range to address your needs.
    There is nothing really wrong with using dimension logic. Itu2019s important to understand you will take a performance hit somewhere and you should test to determine if the performance hit is within an acceptable range. I have one client with a few hundred accounts with formulas and there application works great and the performance is not to terrible.
    Also look at the following;
    How to Maximize Advanced Formatting for BPC 5.x
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/70573b01-657a-2b10-a2b2-ec54bb0a9c8c
    SAP Business Planning and Consolidation 7.0 - Excel Reporting Using EVDRE
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/30d193bd-26e8-2a10-719c-cea716a1a418
    Best Practices for Reporting within SAP Business Planning and Consolidations 5.0
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/2006e603-ac28-2a10-e589-db05ca5210b7

Maybe you are looking for