Combining LVOOP DVR with Asynchronous Dynamic Dispatch and Preserve Run-Time Class

OK, the title sounds like a cornucopia of LVOOP terms.  But there's a reason.  This is in a way an extension of THIS thread.
What I'm doing recently is creating a LVOOP approach to loading Completely Asynchronous UI elements into subpanels.  This I have combined with a global repository for the objects (which are essentially singletons with a UI functionality) which are shared via DVR, thus eliminating a lot of synchronisation headaches).
This means that I can ahve a universal framework for launching the UI elements into a subpanel.  The changes made on the Object there are automatically reflected in the global repository.
So far so good.
What I don't like too much is a combination of two seemingly awkward code constructs I need in order to keep things running.
Weird construct 1:
I have defined a "Launch UI" function in my parent class which is Dynamic Dispatch (Allowing each object to take care of launching its own UI).  This takes a parent object DVR as a second input which I make sure is of the exact same type as the object type being invoked by using the code shown below.  The ACTUAL Type of both inputs to the launch VI within the IPE are identical.  This is guaranteed because I require each new class to override this function.
Here I pass the DVR from outside the IPE to the "Launch" VI but the Object obtained within the IPE retains information required for DD thus ensuring that the VI called for launching the UI is identical to the ACTUAL object type in the DVR.  This works OK and by placing this weird construct WITHIN the parent class, abuse is minimised, it works fine and seems to have no major side-effects.
So now we have a VI running asynchronously in the background which belongs to a specific object but has a DVR which it *thinks* is of a Parent Type but, because of the steps taken earlier, is actually of the same type as the object itself.
In order to make use of the functionality defined in this actual object type, I need to continuously re-interpret the Object within the IPE as shown below.  Otherwise only the Parent functionality is available.
If I am accessing only methods of the parent class, then the Preserve functionality is not needed.
Is there a more elegant way to do this?  I find the net result of this code and type-juggling to be really useful and much easier to manage than the non-DVR route since the synchronisation issues disappear.  By making the IPE usage near-atomic we remove the chances of deadlock.
All editing done in the UI of the asynchronous VI is reflected automatically in any subsequent usage of the DVR.  Even if the DVRs are not shared between VIs, this makes (for me) the headache of synchronisation easier.  If you start expanding this beyond the limits of a single VI, the benefits in Synchronisation become really huge.  You can even have multiple UI objects operating on the same data in the background without extra synchronisation needs.  The only synchronisation required is a global "Data updated" for the object in question whereby the UI elements simply update their indicators and controls from the DVR again.  This is trivial.
Thus I am convinced that the net result of this is very beneficial.
My question is if there's a better, safer or more "official" way to do this?
I was about to start a new Idea for combining the "Preserve Run time Class" and the DVR Terminal of the IPE so that the casting is done automatically.  We could then have a double input to the IPE, the DVR (of base type) plus the ACTUAL Type of the object but of course returning an error if the types are incompatible.  It would be like an "Imposter" DVR input for the IPE which allows a re-interpretation of the object type.
Would all of this go away if we allowed Dynamic Dispatch to work with DVRs?  Probably.
Shane
Say hello to my little friend.
RFC 2323 FHE-Compliant
Solved!
Go to Solution.

You guys rock!
I didn't even think of casting the DVR like that.  Kinds stupid of me but I never would have thought it would work.  Cool.
Also, Yeah, the limitation of no IPE in the Launch VI was one I spotted quite early on.  this is why my Launch VI also doesn't accept more data than is absolutely neccessara because a DVR access in that VI will of course cause a lockup.  I have the system so far now that I can have a SINGLE Launch VI (Which is NOT overridden, so the limitation refers to only a single VI now which is certainly better.
So again guys, thanks for helping out an old newbie.  I've been around for quite a while, have made many posts but I love the way I just keep learning from others in the Forum.  This is just why I absolutely LOVE it here. 
Shane.
Say hello to my little friend.
RFC 2323 FHE-Compliant

Similar Messages

  • Dynamic Query and default run-time values

    I am trying to build a dynamic query within dreamweaver and
    retain access from the bindings panel.
    here is a simple pseudo-query I want to expand on.
    "SELECT object FROM objects_table WHERE widget_number =
    widgets"
    widgets is set up as a variable with a run-time value that
    relates to $_GET['widgets']
    this works fine but now i want to expand on this so the query
    returns all results if $_GET['widgets'] is undefined. I was hoping
    I could set the default value for widgets to equal widget_number so
    I would get....
    "SELECT object FROM objects_table WHERE widget_number =
    widget_number" but the runtime query is actually
    "SELECT object FROM objects_table WHERE widget_number =
    'widget_number' " which obviously doesn't work.
    I can alter the query manually from the code view but then I
    lose access to the bindings panel as dreamweaver doesn't parse the
    query properly.
    Any pointers?
    Thanks in advance
    - Andrew

    Andy Millne wrote:
    > That will work fine server-side yeah but dreamweaver
    cannot parse the code at
    > design time so by altering the code in this way you lose
    access to the bindings
    > panel and all the server behaviours that depend on the
    recordset have
    > exclamation marks alongside.
    This is simply a question of organizing your workflow. As you
    have
    discovered, Dreamweaver no longer recognizes a recordset if
    you make
    changes to the basic structure of the code. The answer is to
    use
    Dreamweaver to construct your page using an unaltered
    recordset. Once
    the design stage is complete, make the changes required by
    inserting
    your conditional statement. Yes, the fieldnames disappear
    from the
    Bindings panel, and you get exclamation marks in the Server
    Behaviors
    panel, but that's not important. If you need to restore them
    for any
    reason, just wrap the changes in /* */ comments. Remove the
    comments
    when you have finished.
    David Powers, Adobe Community Expert
    Author, "The Essential Guide to Dreamweaver CS3" (friends of
    ED)
    Author, "PHP Solutions" (friends of ED)
    http://foundationphp.com/

  • LVOOP DVR with non-blocki​ng Dynamicall​y-dispatch​ed calls

    OK, obscure question time again.
    I have a current architecture where I have several different self-displaying classes inheriting from a common parent class.  I have a dynamic dispatch method defined within the parent class which calls a UI specific for the class which enables me to present the user with the correct UI for edtiing the object properties depending on which object type is currenly being used in my software.  Each class may or may not have different methods for manipulating the data, it's not just the UI which changes, the method of editing the data changes also so a common UI is impossible.
    I have a central repository of these objects (instantiated according to the Factory method).
    What I would like to do is have a method to retrieve the current selected object (Class unknown but certainly an ancestor of the common parent), call the "show" function (Dynamic dispatch) which then opens up the specific UI for editing.  I can get this part working OK and have shown that the "By Ref" design is inherently working.  But....
    I want the editing of the object parameters (Within the Dynamically dispatched VI) updates to run asynchronously with the repository.  I want to have the UI be able to run indefinitely but have the values cahnged be reflected in the repository, thus saving a huge amount of headaches in synchronising.
    Class 1
    Show()
    Class 2 (Child of Class 1)
    Show()
    I want to store a DVR for Class 1 (Edit-time Class 1: Run-time: Class 1 or Class 2), retrieve the DVR, call the Show() method in an unblocking way (i.e. not simply calling Show() within an IPE) so that any changes made on the respective UI will be reflected imemdiately in the repository.
    Any ideas?
    This (Image below) is all I can come up with but I don't know if this is legit or not.  I would have to add some checking for a destroyed DVR int he editor to cover a change oy repository object type at run-time.
    Shane
    Say hello to my little friend.
    RFC 2323 FHE-Compliant

    Ben,
    I will always take time to try to understand what you mean, guaranteed.  Either way, I think anyone who takes the time to try and understand MY posts (which can be severely rambling at times) deserves an award!
    Shane.
    PS Here's an updated version where each object signals its own changes via user events so that all editors (there may be many active at once, even with different UIs perhaps) stay current.
    PPS the Clue is that I use the IPE to give me the ACTUAL object type without using the data within.  The DVR passed to the same function is my gateway to the class data, thus I can call the editor asynchronously and have parallel synchronised editors running.  This is cool, I think I'll be using this a lot.
    Say hello to my little friend.
    RFC 2323 FHE-Compliant
    Attachments:
    DVR Dynamic dispatch (2).zip ‏167 KB

  • Whenever i start my macbook pro the screen remains gray with the apple symbol and the circle timer below. The screen stays this way even if i leave it for hours.

    When i turn on my macbook a box appears telling me i need to restart my computer (in different languages) and in order to do so i have to press on the off button for a lil while. Even after doing this the same box appears and it never restarts correctly. This box appears every single time. I rarely turn my computer off. I just place it on sleep mode and restarts it only when i get prompted to. I brought it to genius and they couldnt figure out what the problem is so i was told it needed to be shipped to get fixed. I didnt have anything backed up. All i want saved are the pictures because i went to 2 events where i was the assigned photographer and i didnt get to save it to an external memory. Genius said that when shipped i cant give instructions like make sure to save the pictures and if they are unable to, call me if they should go on with the process. I was wishful thinking that to fix the problem they might not even have to touch the pictures memory part. I brought my MBP back home hoping it will miraculously starts and id be able to back it up but now all it does when i turn it on is the screen remains gray with the apple symbol and the circle timer below. The screen stays this way even if i leave it on for hours. Please help me fix this!!! cant i really specify to the technicians at apple  to please make sure not to erase the pictures? Is there no other way to turn on my mac? I only need it to work ones.

    There is no limit to the number of times you can re-install Office on the same computer.
    You can activate by telephone:
    The last paragraph is the relevant bit

  • The screen on my Mac is white with the apple icon and the spinning timer and won't boot up

    The screening on my Mac is white with the apple logo and a spinning timer and won't boot up

    Take a look here to see if any of the suggestions help:
    http://support.apple.com/kb/TS2570

  • Labview 7.0 is compatable with Labview Imaq6.1 , vision builder 6.0 and Imaq run time engine 6.0.

    Sir,
    My system is PXI 8174 and i an using NI 1411 card for my application. I want to know the compatability of the softwares. Whether Labview 7 is compatable with Labview Imaq 6.1 , vision builder 6.0 and Imaq run time engine 6.0.

    Hi,
    Assuming you meant IMAQ Vision 6.1 instead of IMAC 6.1, this software was intended to run on LabVIEW 5.1, 6.0, and 6.1.  I have heard of it being used with LabVIEW 7 on occasion, so it may be possible to make it work, but this has not been tested and is not officially supported.  Vision Builder 6.0 should run; however, it was developed long before LabVIEW 7.x and will not generated code for LabVIEW 7.0 and later.  The Vision RTE version should correspond to the version of Vision you are using.  For instance, if the program was developed with Vision 6.1, the computer should have the Vision 6.1 RTE installed.  With this being said, if you plan to use LabVIEW 7, I recommend updating your other software.
    Regards,
    Ryan M.
    Applications Engineer

  • New help with my mac air and airport extreme time capsule dont know how to save to time capsule and use as a external hd

    new help with my mac air and airport extreme time capsule dont know how to save to time capsule and use as a external hd would like 2 store my home videos and pictures on the time machine (ONLY) as the MAC AIR has storage space limited space please help. THANK YOU.

    See the info here about sharing or using the TC for data.
    Q3 http://pondini.org/TM/Time_Capsule.html
    It is extremely important you realise.. the Time Capsule was never designed for this.
    It is a backup target for Time Machine.. that is the software on the computer that does backups.. it has no direct connection to the Time Capsule.
    It has no ability to back itself up.. unlike all other NAS in the market. It is therefore likely one day you will lose all your files unless you seriously work out how to backup.
    The TC is slow to spin up the hard disk and fast to spin down. iTunes and iPhoto will continually lose connection to their respective libraries.
    iPhoto in particular is easy to corrupt when you move photos over wireless into the library.. once corrupted all is corrupt. A single photo will ruin it all.. so backup is utterly essential.
    Time Machine cannot do backups of network drives. ie the TC. You will need a different backup software like CCC. You will then need another target to backup to..

  • Planned order creation with sale order assingment at the run time of MRP

    some material item not planed with sale order stock in MRP run time. all setting in material master are corrected as i knowing.having some mistake in setting other configuration.

    Planning strategy is Make to order individual collective as individual but still come as make to stock plan orders
    Incase of Header material- Plan order is creating in MTS
    Check the sale order procurement tab, Is The requiremnt type is relevant to your Stratergy?, if not chnage it to correct requiremnt type and rerun MRP again
    Incase of component material- Plan order is creating in MTS
    Check for the component material MRP 4 View, individual/Coll.req- as 1. If not set as 1 and rerun the MRP again

  • References​: Appearance different in Developmen​t System and in Run Time System

    I noticed a difference the references appearance in Development System and in Run Time System.  It seems to have no effect in the executable version but, per curiosity, someone have an explanation?
    Development System
    Run Time System
    Jean-Marc
    Jean-Marc
    LV2009 and LV2013
    Free PDF Report with iTextSharp
    Solved!
    Go to Solution.

    tst wrote:
    When LabVIEW builds an executable, it removes the parts which are not needed from the VIs (like BDs, or FPs of VIs which will not be opened). I'm assuming this is an extension of that where the icon is not copied over. Another option is that the RTE is simply missing the code necessary to display this specific this.
    In any case, I would say it's a bug, albeit a minor one.
    I don't think this is a bug, the references refere to a given CTL file, which is not present in the RTE, I think LabVIEW disconnects the reference form the typedef and only saves the properties needed.
    Ton
    Free Code Capture Tool! Version 2.1.3 with comments, web-upload, back-save and snippets!
    Nederlandse LabVIEW user groep www.lvug.nl
    My LabVIEW Ideas
    LabVIEW, programming like it should be!

  • I have a problem with the touchsmart 420pc, after a running time (2 hour approx) is turned off,

    good afternoon, I have a problem with the touchsmart 420pc, after a running time (2 hour approx) is turned off, probably warming, but this rare, is suddenly going slow parapadear and image.
    also sounds like when damaged ballasts for lamps,
    ANYONE know what could be the cuasa and / or what is causing this.
    greetings and thanks in advance

    Hi,
    Please write your TouchSmart model number, which system are you using and country of purchase.
    Resource:
    How Do I Find My Model Number?
    ** Say thanks by clicking the "Thumb up" icon which is on the left. **
    ** Make it easier for other people to find solutions, by marking my answer with "Accept as Solution" if it solves your issue. **

  • List of BO reports failing daily and schedule run time

    Hi,
        Our BO reports are scheduled to refresh daily early mornings 2 - 6 AM and around 280 reports run daily. We want to know list of failed reports daily and measure run time differences for each report in different days and run time for all 280 reports.
    1. List of failed reports (to check if same reports are failing daily)
    2. Total run time for all reports
    3. Change in run for each report on different days.
    Could you please let me know how this kind of report can be generated.
    Regards,
    Nanda Kishore B

    Hello Nanda Kishore,
    Check below two links which can be helpful:
    For query builder, below link has a 4 part series of queries. You can find the other links at the bottom on the page
    BusinessObjects Query builder queries
    If you are using BI 4.x, then below link has a set of sample auditing universe and reports.
    I'm sure you can find the required reports in the attachment:
    Sample Auditing Universe and Reports for SAP BusinessObjects_4_x
    I think auditing would be the best way to get the information required.
    I hope this helps!
    -V

  • I have an old Minimac with a 100GB HD. I run Time Machine to an external HD. I want to update my Lion software but need 8GB of HD capacity to do this. I only have 5GB. My photo library is 4GB so since this is backed up I deleted this to Trash. But I still

    I have an old Minimac with a 100GB HD. I run Time Machine to an external HD. I want to update my Lion software but need 8GB of HD capacity to do this. I only have 5GB. My photo library is 4GB so since this is backed up I deleted this to Trash. But I still have only 5GB of capacity on the HD. Why ?

    You need to empty the trash to get the space back.

  • Custom Installer with Inno Setup (reduce size of Run-Time and VISA RT)

    Hi,
    we are using Inno Setup to install our Application. Up to now i include the full LabView 2009 SP1 Run-Time and the full VISA-RT
    (that are 302 MB). I have also made an installer using the internal tools of LV and the setup is only 163 MB. The LV removes
    some parts of the RunTime libraries.
    We are using only these parts:
    p0 MetaUninstaller\
    p1 VC2005MSMs\
    p10 NI-RPC\
    p11 XercesDelayLoad27\
    p12 NI-ORB\
    p13 NI-DIM\
    p14 NI_TraceEngine\
    p15 NI-PAL\
    p16 NI_Logos_XT\
    p17 TDMS\
    p18 MDFSupport\
    p19 MKL_900\
    p2 VC2008MSMs\
    p20 NI_Logos\
    p21 RT\
    p3 NI_Certificates\
    p4 NI-VISA_Runtime\
    p5 LabVIEW_RT_NBFIFO_90\
    p6 Service_Locator\
    p7 LabVIEW_Web_Server_RTE_90\
    p8 LabVIEW_WebServices_RTE_90\
    p9 mDNS_Responder\
    1. Is it allows to do that also using Inno Setup? I mean, am I allowd to do that? The license from
    NI etc. are all included. I want to save disc space...
    2. Is that wise? If not, why?
    Thanks

    Hello sjunge,
    basically there should be no problem installing the software with Inno Setup as long as you do not violate the License Agreements.
    But keep in mind that there could be dependencies between the installers you install and those you don't and you may run into trouble with the software later on
    Kind regards
    Carsten

  • Error involving Report Generation Toolkit and Labview Run Time Engine

    Developed an application using LabVIEW 6.1 and LabVIEW Report Generation Toolkit for Microsoft Office 1.0.1. From there, tried to build a shared application for use with the LabVIEW Run Time Engine. The Run Time version functions properly until "New Report.vi" is called and then an error is generated, code 7, calling out "Open VI Reference in New Report.vi" could not be found. When building the application, I did include the "NI Reports Support" in the advanced installer options. The machine used for original development and application build is running Windows XP Pro and Office XP. Any suggestions??

    I am having the exact same problem but with LV 6.1 and M/S WORD 2000. It appears that the "New Report.vi" is trying to open "C:\APP.DIR\Word_Open.vi" and "C:\APP.Dir\Word_Open_Document.vi" by reference. The "OFFICE 2000.TXT" says that "_exclsub.llb and _wordsub.llb must be added as support files when building an application or a dynamic link library with the application builder." I added them as Support Files and I copied them to the "C:\TESTER\" where the TESTER.EXE is and I still get ERROR 7 in "NEW REPORT.VI" at VI OPEN REFERENCE.
    Do I need to make a "C:\TESTER\DATA\" sub-dir and put the support files there?
    I am building on MY COMPUTER on F: Drive on a network and transporting files to the real Tester.
    I displayed my App.Property of APP.DI
    R at start up and it is C:\TESTER\ ! How would my application know that "Word_Open.vi" and "Word_Open_Document.vi" are actually inside the _wordsub.llb?
    Any ideas ?
    Greg Klocek

  • How to dynamically validate users at run time using connection pools ?

    Hi Folks
    We are facing a peculiar situation . We have established connection to our
    oracle 8i database using Oracle Thin driver using conenction pooling at the weblogic
    server . We set up connection pools at the console to set up connections to thge
    oracle 8i database. However the user name and password is always static when
    we create the connection pool at the console .
    How do i dynamically validate other users using the same connection pool ??
    Eg - The connection pool at design time in the console uses user A and password
    - passA . Now at run time lets say I prompt the user for a login screen and want
    to trap the user id and apssword parameters entered by the user and use it with
    the connection pool created earlier . I tried using the below code snippet :-
    Properties props = new Properties();
    props.put("connectionPoolID", "Oracle_Thin_Driver_Pool");
    props.put("user" , userId );
    props.put("password",userPass);
    myDriver = (Driver) Class.forName("weblogic.jdbc.pool.Driver").newInstance();
    conn = myDriver.connect("jdbc:weblogic:pool", props);
    But always it connects to the database using the userid and password set in the
    console while creating the connection pool . So how i get the connection pool
    to validate my current userid and password entered through the login screen ??
    Thanks in advance
    Keith

    Hey Bob.
    So I assume you're -completely- working with built executables?  You're not going to work in the editor environment to modify your projects at all?
    If this is the case, then having a generic deployment phase at the beginning of the executable (with a "setting up hardware for your app" splash screen) isn't a bad idea -
    Check the binary on the target, ensure it matches the binary you have on the host machine (in case you ever decide to update).
    If they don't match, FTP the new file down to replace the old one.
    FTP the ni-rt.ini file, ensure the startup exe is enabled and is pointing to the correct location.  
    If it's not enabled or not pointing to the correct startup file, modify the .INI file and FTP back to the target.
    If you had to update the INI file, ask target to reboot itself.  Wait 30 seconds, and wait for target to become available again.
    Connect to the target. If you cannot connect, reboot target.  If the target comes back and you still cannot connect to the app, notify user.
    That's almost exactly how we handle installation and deployment via MAX.  
    The big assumption here is that the built executables were all built with the same version of LabVIEW Real-Time.  If not, you'd need a system replication step in there to make sure the proper version of LabVIEW is on the target before launching the built .rtexe.  
    -Danny

Maybe you are looking for

  • Adding music to a PSE 11 slide show

    When I try to add MP3 music to a slide show in PSE11, I get an error message that I am missing a codec. I have installed two codecs without any success. Wil this problem go away if I use tthe premier version?

  • Re-install after system restore

    I had to do a system restore on my computer and now I can't access my Adobe apps nor can I re-install them. I can only updte which obviously always fails. What do I need to do to re-install my programs?

  • Freely Programmed Search help in Std Comp

    hi, Is it possible to add freely programmed searh help in standard SAP Component. I have dynamically assigned Freely search help to Context attribute using  set_attribute_value_help method. Now new component to be used in seach help is made in differ

  • What is up with the iOS 6.1.3 not allowing me to charge my iPhone 5?

    Does anyone else have this error when using ANY charging cable? Charging not supported with this accessory.

  • Solved Error 2123

    I followed the advice someone gave on the forum and got rid of the Error 2123 I used to get when burning a CD in iTunes. It seems like many people have this problem. Here is what I did (again someone whose alias I don't remember posted this somewhere