Preloading VIs into memory without executing

Hello.
I have a problem with preloading...
I've been using a dummy VI to keep important SubVIs in the memory in labview 10. Didnt even had to run it, just throw its reference into a global var. The SubVI was there, in memory, when some dynamic VI needed it.
After upgrading to labview 11 the memory management apparently changed and that method doesent work anymore. I trie to run the dummy VI continiously, but even if it runs, it's SubVIs are not in memory.
They only load if i have an eye contact with them, AKA open the block diagram.
All SubVIs are set to preload with caller, but they just dont... 
"When I need the side of a building to view all the code..." -Mark Yedinak
"...when you need a navagation window to view the navagation window..." -Jeff Bohrer
Solved!
Go to Solution.
Attachments:
with no BD.PNG ‏130 KB
with BD.PNG ‏126 KB

dan_u wrote:
Try using Static VI references.
I'll try that right away. Will it work if i copy whole program to a new directory?
Static VI references tend to rely on the full path, while my path should remain dynamic... (im calling on the parent VI by relative path, while SubVIs in it are relative path dependent too)
"When I need the side of a building to view all the code..." -Mark Yedinak
"...when you need a navagation window to view the navagation window..." -Jeff Bohrer

Similar Messages

  • How to preload sound into memory to improve performance?

    Hello all
    I have an application where it needs to play 4 different short wave files on some events. The wave files are small (less then 1 sec each) so they can be preloaded into memory. But I don't really know how to do that.. This is my current code... Performance is really important here, so the faster users can hear the sounds, the better...
    import java.io.*;
    import javax.sound.sampled.*;
    import javax.swing.*;
    import java.awt.event.*;
    public class PlaySound implements ActionListener
         private Clip clip = null;
         public void play(String name)
              if (clip != null)
                   clip.stop();
                   clip = null;
              loadClip(name);
              clip.start();
         private void loadClip(String fnm)
              try
                   AudioInputStream stream = AudioSystem.getAudioInputStream(new File(fnm + ".wav"));
                   AudioFormat format = stream.getFormat();
                   DataLine.Info info = new DataLine.Info(Clip.class, format);
                   if (!AudioSystem.isLineSupported(info))
                        JOptionPane.showMessageDialog(null, "Unsupported sound line", "Warning!", JOptionPane.WARNING_MESSAGE);
                   else
                        clip = (Clip) AudioSystem.getLine(info);
                        clip.open(stream);
                        stream.close();
              catch (Exception e)
                   JOptionPane.showMessageDialog(null, "loadClip E: " + e.toString(), "Warning!", JOptionPane.WARNING_MESSAGE);
         public static void main(String[] args)
              play("a wav file name");
    }     I would appreciate it if someone can point out how I can preload them to improve performance... Thanks in advance!

    The message above should be:
    OMG, me dumb you smart Florian...
    Thank you for your suggestion... It's not the best OR anything close to what I thought it would be, it's certainly one way to do it and better then what I've got now...
    Thanks again Florian, I really appreciate it!!
    BTW, is there anything that would produce the sound faster then this?
    Message was edited by:
    BuggyVB

  • Remote Panel: how to load a vi into memory without showing it on the screen

    Hi,
    I'm using the remote panel facility of LabView 6.1 to allow any user
    to control my instruments from within a web browser. However, in order
    for this to work, labview has to be running and the vi opened on the
    server, which i want to avoid.
    Is there a possibilily to enable the labview web server and load a vi
    into memory in the background, whithout showing it on the screen?
    thanks

    > Is there a possibilily to enable the labview web server and load a vi
    > into memory in the background, whithout showing it on the screen?
    >
    Not at the moment. The VI truly is running on the server and simply
    displaying on the remote machine(s). At the moment it also needs to
    have a display on the server. You probably could write a small VI to
    periodically look for open LV windows that have connections to them and
    minimize them. Then run that VI on the server.
    Greg McKaskle

  • Read a file without loading it into memory

    I have a VERY large file filled with words. I want to determine if a String in my program matches one of them. Loading the entire file into memory would take a long time and would use way too much memory. Is there some way to load just the part I need each time or make the comparison directly from the file on the hard disk?

    The file is static, so your plan seems to have merit.
    I've only used sequential files before, but I'm
    assuming this would require a random access file since
    you have to begin reading at a specified offset. Am I
    correct?Yes.
    In addition, if this file is fixed-length "records" so that you could programmatically determine the word offsets without having to keep a map of indexes in memory, you could just employ a search algorithm (I forget what this one is called) - you could start by defining 2 endpoints, initially at offset 0 and the offset of the last word.
    Iteratively read the word halfway between the 2 endpoints, adjusting the endpoints until a match is found or the endpoints converge.

  • How to find out memory consumption for table in HANA without load it into memory

    Hi,
    To determine the memory consumption for a table in HANA, you can query table M_CS_TABLES, however, it requires load table into memory first, I just wonder if there has another table store memory consumption information for all HANA tables regardless it load into memory or not. Below is screenshot for one of table in my system, since that table is partially loaded into memory, "Total Memory Consumption (KB):" tell me the memory consumption of the portion load into memory, what I am looking for is something like "Estimated Maximun Memory Consumption (KB)" which provides me total memory consumption for that table including portion doesn't load into memory, of course I can use this Esitmated information, but consider I have close to thousand tables in my HANA system already, it's not pratical to check tables one by one.
    Thanks,
    Xiaogang.

    Hi Xiaogang,
    Estimated Memory Size that you see in the Table Run time Information - same is available in M_CS_TABLES also
    If you don't get the size of any Table in M_CS_TABLES View, then the same will also not be available in Runtime information of the Table
    Even if tables are not loaded into memory, you can get the Estimated Size, just try running the query with filter LOADED = 'NO'
    Regards,
    Vivek

  • How To: Reference LabVIEW VIs in Memory from a Compiled Application?

    Hello all! This is my first post on these boards despite the fact that I have been doing LabVIEW for almost 8 years...so go easy on me!
    Basically my issue is this: I want to write a compiled application for my team to use to help us have a standardized tool to push VI help tip information. So I created a nice front panel, gave it memory storage via XML to remember info you might want to not have to type over and over again. I also gave it some formatting options, etc. Overall, a nice tool to speed up a repetitive task.
    However, it runs great as a VI, but compiled does not work at all and I am sure many of you can see where this is going. I have cobbled together some snippets of code found on these boards to collect a list of references and names of all the VIs in memory that are not currently running. Then I use a ring control to parse which VI I want to target and then push the parsed and formatted help tip to that VI. But the reality is apparently that LabVIEW and a compiled application do not share the same memory allocation, because they are separate application instances.
    Is there ANY way around this?
    I tried one thing that seemed to make sense, but so far has resulted in the same thing. I tried to do a type def call by reference with an asynchronous call and a wait on asynchronous call function to return the reference list. However, even though this bit of code is still a VI and NOT part of the compiled code, it still somehow picks up the application instance of the owning app, and therefore does not see any of the open VIs in memory that LabVIEW controls.
    Any help would be immense, as I am going nuts trying to figure this out!
    Info: LabVIEW 2012.f3
    I am also attaching a screen cap of the block diagram of the VI that collects the references.
    Thanks in advance!
    South West Applied Technologies
    Senior LabVIEW Developer

    Well you run into a security limitation of VI server here. Many methods and properties are not possible to be accessed through a remote application instance. Any Application instance that is opened with an address is considered a remote instance. Basically if you leave the address open in the Open Application, LabVIEW shortcuts to the internal instance. If you connect some address even if it is "localhost", LabVIEW goes through the TCP/IP socket for any and all methods and proeprties and the application instance is considered a remote instance.
    Open your floating help window, and place your cursor above your property. Notice the text in there: Remote Access disallowed: Yes.
    The reason for this is, that if this method was available over remote connections, anyone with access to your network could connect to that LabVIEW instance and basically discover any and every VI you have currently loaded and even download them to their own computer. And this can not be fixed. This security is not possible to circumvent other than hacking into LabVIEW itself.
    I guess this kills your entire idea. An executable can't connect to another executable or the LabVIEW development environment other than through a remote connection! That is due to strict process isolation rules in all modern OSes. The only possible workaround I could think is to create VIs for all remote access protected methods and properties, copying them to every LabVIEW installation you want to access with your shell (and that likely would have to be done through the network as the according methods in the VI server interface are also remote access protected) and then call those VIs through VI server.
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • IB Error: Unable to read symbols from "UIKit" (not yet mapped into memory)

    I created a simple view program for iPhone, using IB to add a button and a label, once the button is clicked, the label text is changed.
    I am able to compile it fine, and ran it. The program/view showed up. But when I clicked on the button, the console showed this message:
    This GDB was configured as "i386-apple-darwin".warning: Unable to read symbols for "/System/Library/Frameworks/UIKit.framework/UIKit" (file not found).
    warning: Unable to read symbols from "UIKit" (not yet mapped into memory).
    I checked UIKit info, it's physically (full path) at:
    /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/System/Lib rary/Frameworks/UIKit.framework
    The relative path to SKD is:
    System/Library/Frameworks/UIKit.framework
    I'm running the latest SDK beta 8, OS X 10.5.4 latest update.
    Anyone had this bizarre problem? I was able to run all Apple samples fine.
    Please help!
    THanks!

    The answer is mentioned in a few other posts, but I thought I'd repeat it here, so that it's easier to find this solution in the future.
    I got the same problem trying to build an iPhone-Simulator application using another build process -- in this case, Boost Build. When I tried to run the program, it gave me the same nonsensical dynamic-library error.
    The problem is that the application you built for the iPhone Simulator is NOT a real application, even though it looks like one. You need to run it from within Xcode.
    In my case, I got around the problem by building the GLPaint sample using Xcode, copying over the executable it generated with the one I generated via Boost Build, then running GLPaint (actually my program now) from within Xcode. Then it worked.
    So far, it seems that Macintosh and iPhone are very unfriendly platforms to someone that's trying to port an existing project. Any attempt to do something, without completely buying into the Apple way of doing everything, leads to a torrent of cryptic undocumented errors. Even an old Unix guru like me can't keep up.

  • How to delete confirmed schedule lines, without executing the ATP check?

    Sales and Distribution: Concerning ATP (product allocation)
    Situation:
    Step 1: An order is created with priority low. Quantities are confirmed for line items.
    Step 2: A second order is created with a higher priority. No confirmed quantities.
    Rescheduling program (SDV03V02) is then executed. This selects and sorts the orders in the correct order.
    The confirmed quantities for the first (low priority) order should now be freed up, to be able to allocate those quantities to the second (high priority) order.
    The problem I am facing is that the confirmed quantities are NOT released.
    We cannot use BAPI_SALESORDER_CHANGE or SD_SALESDOCUMENT_CHANGE to delete or modify the schedule lines, because these function modules execute the ATP check again. And when that happens, quantities are again confirmed and assigned.
    How can we get rid of the confirmed schedule lines, without executing the ATP check?
    Thanks,
    Edwin.

    Found a solution to the problem:
    In the Rescheduling program we export a parameter to the memory, to make it possible to delete schedule lines without executing the ATP check.
    Deleting of the schedule lines is done with a BAPI, which will call the ATP check automatically for ATP relevant materials. This we want to stop from happening (only when calling the BAPI).
    After the BAPI has been called we FREE the MEMORY ID.
    The parameter is imported again in Customer-Exit EXIT_SAPLATPC_001.
    Transaction.. SMOD
    Enhancement.. ATP00001
    Component.... EXIT_SAPLATPC_001,
    Include...... ZXATPU01.
    The customer exit is used in function AVAILABILITY_CHECK_CONTROLLER, just before calling function 'AVAILABILITY_CHECK'.
    Simply refreshing the ATP tables in the customer-exit, will prevent the ATP check from being executed (because we removed the list containing the materials for which the ATP check needs to be done). As a result, the function 'AVAILABILITY_CHECK' will not be processed.

  • How do I find out the exact path of each and every file that LabVIEW finds and loads into memory for a given top level vi?

    How do I find out the exact path of each and every file that LabVIEW finds and loads into memory for a given top level vi? There is probably a trivial, easy way to get this info, but I have not yet found it!  Thanks..

    Or if you want to grab all the paths programatically, try the attached VI.
    Open the top level that you want all the paths from and close all others, then open the
    attached and run it. It will return an array of all the VIs that the VI
    in question uses, including vi.lib VIs. You can filter these as well if
    you like.
    Ed
    Message Edited by Ed Dickens on 08-01-2005 07:01 PM
    Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
    Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
    Attachments:
    Get all paths.vi ‏29 KB

  • Testing RFC without Executing RFC in SAP R/3

    Hi All,
    Is it possible to test a sender RFC adapter to invoke Web service in SAP XI without executing RFC in R/3. I am facing problems when executing RFC in R/3. So would like to confirm that the other portion ie, from XI to Webservice is working fine. Any help would be much appreciated.
    Thx
    Deno

    Hi Deno,
    Just go in a stepwise manner and you will know here the error is.
    1. First execute RFC and see if it reaches SAP XI.
    2. Check in Transaction SXMB_MONI as to which step is going into error.
    3. If it's not reaching XI ythen there is problem with RFC destination or the RFC adapter config check that.
    Regards
    Vijaya

  • How to end a work item exlicitly without executing it?

    i want to find out how to end a workitem explicitly without executing it from the business workplace. we have created a dummy workitem and would like to end it when it is not needed.
    i have set up the terminating event in the workitem task but even though the event is raised the workitem is not ended and the workitem is still in the inbox. i was expecting that when the event is raised the event will end the workitem and it will move into the outbox.
    am i doing something worng? why isnt the workitem getting ended and move to outbox when the terminating event is raised?

    Hi Arghadip,
    thanks for your inputs. That was really useful but in my case i dont have the workitem ID. Actually here is my process, the system creates a workflow when a invoice is created and it is blocked for payment. When the invoice triggers a workflow it does two things in a FORK. One it sends an email and the second it sends a workitem. The workitem is a dummy workitem. When the user reply's to the email a RFC FM is called from the external system which will release the invoice in SAP. Now once this is done we would like to close the workitem which is lying in the business workplace. So i have implemented the terminating event however i guess that doesnt work. When the RFC FM is called externally it releases the Invoice using a BAPI and once it is done i am calling the FM SWE_EVENT_CREATE to raise the event to terminate the event.
    Am i doing something wrong?

  • Can I increase heap memory without specify any class or jar file??

    Hi,
    I tried to increase my heap memory in this way :
    java -Xms256m -Xmx256m
    but I got an error ... it's seem that I must specify a class java or a .jar file ...
    This is the error :
    Usage: java [-options] class [args...]
    (to execute a class)
    or java [-options] -jar jarfile [args...]
    (to execute a jar file)
    where options include:
    -client to select the "client" VM
    -server to select the "server" VM
    -hotspot is a synonym for the "client" VM [deprecated]
    The default VM is client.
    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
    A ; separated list of directories, JAR archives,
    and ZIP archives to search for class files.
    -D<name>=<value>
    set a system property
    -verbose[:class|gc|jni]
    enable verbose output
    -version print product version and exit
    -version:<value>
    require the specified version to run
    -showversion print product version and continue
    -jre-restrict-search | -jre-no-restrict-search
    include/exclude user private JREs in the version search
    -? -help print this help message
    -X print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
    enable assertions
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
    disable assertions
    -esa | -enablesystemassertions
    enable system assertions
    -dsa | -disablesystemassertions
    disable system assertions
    -agentlib:<libname>[=<options>]
    load native agent library <libname>, e.g. -agentlib:hprof
    see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
    load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
    load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
    show splash screen with specified image
    can I increase heap memory without specify any class or jar file??
    thx

    chiara wrote:
    Hi,
    I tried to increase my heap memory in this way :
    java -Xms256m -Xmx256m
    but I got an error ... it's seem that I must specify a class java or a .jar file ...
    This is the error :
    Usage: java [-options] class [args...]
    (to execute a class)
    or java [-options] -jar jarfile [args...]
    (to execute a jar file)
    can I increase heap memory without specify any class or jar file??The job of java.exe is to execute java bytecode.
    What is it supposed to do with your request to use 256m of memory for heap
    when you are not giving it a class or a jar to run?

  • Process of initalization of DB into memory for timesten

    Hi
    Can i know the internal process of initialization of DB into memory in timesten , when a new connection is establishing ?
    Will timesten create tables and indexes in RAM when first connection is established if the RAM policy is default?
    want to know the internal functional flow of timesten when any command is fired against it.
    Regards
    Siva Kumar

    TimesTen is a fully persistent database. The database contents, including tables, indexes and other objects along with the data exist both in memory (the operational database) and in the checkpoint files on disk (a persistent copy). When the database is started up (ramLoaded) the most recent checkpoint fikle is loaded into memory. There is no need to 'create' any structures etc. at this point since they are already present in the checkpoint image loaded from disk. Although it is possible to have a TimesTen database that gets loaded into memory when the first application connection occurs and gets unloaded from memory when the last application connection disconnects in general we recommend that you explicitly control when the database is ramLoaded/ramUnloaded using the 'manual' ramPolicy and the ttAdmin -ramLoad / -ramUnload commands. In this way you can avoid excessive loading and unloading of the database to/from memory.
    TimesTen works similarly to other databases; when a SQL statement is prepared (parsed in Oracle database parlance) the TimesTen optimiser used the information in the data dictionary tables to generate a query plan. There is no concept of a data dictionary 'cache' since all data in TimesTen is permanently in memory. Active query plans are cached within TimesTen memory since they are transient data. When executing a query (using a plan) TimesTen accesses index and table data directly in memory. There is no 'buffer cache' since all data stored in TimesTen is permanently resident in memory. In general, for OLTP type queries, a query is parameterised, prepared just once and then executed many, many times. This is the way to achieve maximum performance with any SQL database.
    As a result of these (and many other) optimisations/simplifications Timesten can achieve very high performance through simpler algorithms that require less CPU cycles to do the same work as in a more complex database.
    Does that help?
    Chris

  • Goes into shutdown without command

    machine goes into shutdown without being commanded to do so. machine has been cleaned and all motherboard and card connections have been renewed. not sure if it is a hardware or software problem. have run 3 different antivirus and registery cleanings. can anyone advise? machine may run 15 minutes, 1 hour, or a whole day before malfunction occures. boots right back up like there is no problem. no error messages, blue screened once, but i think i caused that. geek squad was a waste of time(?!?). no other quirks occur.

    Hi:
    I doubt it is a software problem.
    If you have not done so already, carefully inspect the capacitors (can shaped objects) on the motherboard for bulging tops/leaking electrolyte.  If you find one, that is probably the problem.
    If they all look OK, and you have more than one memory module installed, remove all but one and run the PC with the one chip in the required slot.
    If the PC shuts down or whatever, remove that memory module and replace it with one of the ones you removed.
    Keep doing that until you have tested all modules by themselves.
    You may be able to isolate a flaky memory module which for the most part runs OK, but has its moments if the PC runs fine with all but one or two modules.
    The only other thing I can think of that it might be, is the power supply has some kind of fault. 
    I don't know of any way to test that though.

  • Can I load a vi into memory programmatically

    Here's the situation (I'm programming in LV7.1)...
    I've got a program that runs, which uses the DSC.  I'm wanting to programmatically shut down and quit the Tag Engine when the program ends.  My problem is that when I use "Engine Shutdown.vi", all vi's that use the tag engine have to shutdown before the Tag Engine will completely shut down.  If I call this an wait (monitoring engine status for shutdown), then I get a deadlock error.  If I call this and end the program, then I get a pop up asking if I want to "Stop and close Tag Engine" (and for some reason an error afterwards as well, doesn't describe error, just that a log is being created.)  My goal is to have to pop up or dialog boxes appear that the user has to interact with when shutting down.
    So the solution that I believe would be appropriate for this would be to close the main program and have a separate vi (that is independant of the main program structure) call the "Engine Shutdown.vi", then quit itself, closing LV.  So I've been messing around with this...
    "Open VI Reference" with the vi path connected as an input (just a simple vi I made to kill the Tag Engine, wait until it falls, then kills Labview).  This is connected to an "Invoke Node" with the 'Run VI' method selected, property 'Wait until done' set to False, and 'Auto Dispose Ref' set to True.
    This works all fine on my developement machine, but I imagine I'm going to have issues when compiling this and installing it onto it's target machine.  How would I compile this?  If I add this vi to the build as a Dynamic VI will it automatically be loaded into memory when the program runs (on the target computer)?  If not, is there any way I can programmatically load this vi into memory in such a way where it is not a subvi to my program (else it will have same issues shutting down Tag Engine)?
    As always I appreciate everybody's help,
    Sean

    Mike, thx for your response.  Let me run this by you...
    So if I put Main.vi and Kill Engine.vi in the same folder on my developement machine, have the attached snippet of code execute when Main.vi is ready to shut down (very last thing to run, after all loops conclude) build the app (with Kill Engine.vi as a Dynamic VI), and install the app on the target machine, does it sound by you that this will work?  (Kill Engine.vi is the simple vi I made to shutdown and quit the Tag Engine, wait for this to conclude, then exit Labview).
    Thanks,
    Sean
    Attachments:
    snippet.JPG ‏8 KB

Maybe you are looking for

  • Missing privilege - DELETE statement in procedure

    Hello experts, I am facing a problem for my procedure. I am not able to active the procedure if I use DELETE statement in the produce. When I use only selects, it is working fine. The SYSTEM user has access to the schema with full rights, including D

  • Macbook OSX 10.5.8- cant download update for new trackpad!?!?!?

    Hi. I just spent 80 EUR's on a new apple trackpad and its a nightmare to upload which i never thought would happen with Apple. I am on 10.5.8 on a macbook and cannot update to 10.6.4 which is required. My system cannot see any updates. I have backed

  • USING LSMW TO UPDATE VENDOR BANK DETAILS

    Hi SAP gurus I have used LSMW for mass updates of vendor bank details by recording the Tcode FK02 But the problem is .. after I load the data, its replacing the old bank details with the new one which Im updating with. I want to keep the old bank det

  • How to recover undo tablespace in 9i

    How can i recover undo tablespace 9i.Can any provide step by step recovery process

  • Where can I download 8.1.7.2 patch?

    Needed: Oracle 8.1.7.2 patch for 8.1.7 For: O9iAS compatibility Platform: Pentium 4 Where else can I get this beside metalink? I am evaluating O9ias. Apparently O9ias wont work without the patch from 8.1.7 to 8.1.7.2 Thanx.