VI, stuck to the call by reference

Hello

I currently have a problem of Subvi "call by reference. I am currently working on a datalog VI that takes a cluster (hidden as a Variant) and the writing of the elements in a text string. If the cluster contains a cluster VI datalog is called. When all the elements are written in the text string is written to a file and the text string is disabled.

Here, I need reentrante run - so I am currently using property VI "re-entrant execution clone shared" and a "call by reference" with "Reload every call" to call him VI self. This was work up very well, but yesterday, after about 5 hours, the program is stuck at "call by reference. Have I set up correctly?

Concerning

Mark


Tags: NI Software

Similar Questions

  • Threading and reuse of the node to call using reference of buffers (of the required adhesive tape)

    I tried to get the following information in the public domain for years and now that I have the answers, I'll share with those who might be interested.

    Caveat!

    Wrap your head in tape before reading just for the sake of security.

    My two questions were;

    (1) may LV re - use tampons of VI calling when you use VI serve call by reference?

    (2) is used when the use of call by reference UI thread?

    1 when you call a VI using the call through the reference node, the data in the pane of the copied or is node connector - this online as it would be with a Subvi properly implemented?

    Short answer: it's somewhere between the two.

    Long answer:

    The compiler does not know what will be called VI, but there a hint:

    the reference connected to the node of the call by reference. He uses to get the 'Prototype' for the call. Therefore, for optimal performance, use a prototype that has the same 'characteristics placeness' as it is called VI. That said, users don't know what are the "characteristics of the placeness.

    Before getting into the details, I will say that the overhead of these copies should not matter much unless it's a large data structure (a table with lots of items.) or a cluster/class with many fields or containing large networks etc..

    Example 1:

    If the prototype does not change the data, then the compiler assumes that the crux of the call by reference will not alter the data. However, at runtime, a check is made to see if the real called VI will modify the data. If Yes, then a copy is made and past so that the original data can be modified.

    Example 2:

    If the prototype contains an entry that is wired through an exit so that both input and output terminals can use the same buffer memory, but running an audit determines that the real called entry and exit VI do not share a buffer, then a copy will be made from output of the actual call to the original screws (combined input and output) buffer.

    I should also mention that, even with this behavior "are trying to get along with the prototype", it is not always possible to obtain good performance as a Subvi ordinary call. For example, if you have a situation where the prototype does not change the data and passes it through to an exit and then the compiler must assume that the data is changed (because, as in example 2, there are screws that may change even if the called real VI is not).

    And there are a few caveats:

    (1) this behavior "using a prototype" was new for 2009. Before that, we used a method more naïve data of passage that took all the entries will be changed and no outputs don't share a buffer with an entry.

    (2) this behavior can be changed in future versions, if we find additional optimizations.

    (3) this behavior is the same that we use for the dynamic distribution live (when you use the classes in LV)

    (4) If you want to create a VI can be used as a prototype, you can use the features of the Structure in Place to control the "characteristics of the placeness', namely the element nodes in and out of the border, the function"Mark as modifier"border nodes (note the pencil icon on the item), and the node always one copy.

    (5) the prototype is only the first reference ever connected to the node of the call by reference. So if you make a new prototype VI, you can just make a reference out of it plug into the crux of the call by reference. I suggest to remove the node from the call by reference and file a new.

    (6) for remote calls, we still "making copies" by transmitting data over a network.

    I hope that this helps, if you want information/clarification, so feel free to ask.

    2 - is the call made by the reference to run in the user interface thread node? If the call is made by a remote machine via ethernet, thread that host (the computer that makes the call by reference) runs on and thread that executes the target (the machine that contains the file VI) on?

    In the case of premises, the appeal made by the reference node does not require the user interface thread and may work in some thread the VI wants to run in.

    When you call a remote VI, the appeal made by the reference node uses the UI thread (detailed below) on both the client and the server.

    The client uses the UI thread to send the request to the server and there still when the response comes back. The user interface thread is not blocked during the time between the two.

    The server receives the TCP message in the UI thread, and then starts the call to the UI thread. The server also uses the user interface thread to send the response to the client. The user interface thread is not blocked on the server during execution of the VI.

    I hope that people find it when they need it!

    Ben


  • Main vi sharing of sub vi with call-by-reference - how?

    Hello

    as mentioned in another thread (http://forums.ni.com/ni/board/message?board.id=170&thread.id=390355), I have a main vi with a stop button and a under vi, who needs a few seconds to complete.

    During the execution of the Sub vi, I want the stop button in the main vi take effect immediately, which means the sub vi must stop immediately.

    I know that I can exchange data between screws somehow by a call to reference, but all the examples I found, to transfer data from the sub to the main vi vi, but I want the other way around.

    Given that I've never used the call by reference, I have no idea how I can do it.

    Attached you find, what I've done so far.

    I would be very happy if you help me and show me how to use the call by reference correctly.

    Johannes

    LabVIEW 7.1 (I used to program in C and Labview 6)

    Win XP

    Johannes

    I solved it!

    A reference and a property node t - it.

    See attachment

    Johannes

  • Data transmission between screws using call of reference without actually executing the vi

    Hi, I was wondering if you can pass data between the screws by using call of reference without actually executing the vi (ie: not having the façade appears during execution). Is this possible?

    While I'm here I might ask as well on the transmission of data between the screws I'm trying to pass a flag to a vi value to another. Because of the way the program is setup, I can't wire this value directly. Y at - it another (fast/efficient) way to pass data between two screws during execution (other than shared variables). For what it's worth this application will be built into an executable file, so data transiting will have to work for it as well.

    Thank you

    Vlad

    Vlad P wrote:

    While I'm here I might ask as well on the transmission of data between the screws I'm trying to pass a flag to a vi value to another. Because of the way the program is setup, I can't wire this value directly. Y at - it another (fast/efficient) way to pass data between two screws during execution (other than shared variables). For what it's worth this application will be built into an executable file, so data transiting will have to work for it as well.

    You have the choice:

    • shared variables (as you mentioned)

    • global variables

    • queues

    • notifiers

    • control references and properties of the value

    • action motors

    • ...

    Tell us a little more about your applications. What should do?

  • Open the Panel front of the Subvi, which is called by reference in the EXE

    I want to open the façade of a Subvi when it is called. This sub - VI will open the façade of a Subvi third level. So, I want to go back to the main.vi the output of the subVIs.
    I can do successfully in the development environment.
    I call on the reference asynchornously screws. If the screw load when they are called and the calling VI awaits the release of the subvi.

    I am attaching the screenshot of the window subVIs properties customize.

    When I build the application, the executable file could not be opened the Subvi front panel, even if the paths of the subVIs are related.

    I also put the subVIs in the field "Always included" the build properties and the box "Remove front panel" is not selected.

    I join the project and screenshots of the parameters.

    If you had used the dialogues of error, you would have seen the paths of access to the VIs you build are not valid.  The screws are always included in the EXE file, so you don't have to do any special stripping of the VI EXE path.  A fake wire to your case structure determine the path, and it works perfectly.

    Just dual-band is the path if you try to get the EXE directory.

  • Reference of the called VI VI call

    Hello

    I have a main VI which calls one under VI. I'm using call in Subvi chain to get the reference of the main VI but sends output as a Subvi. Is this so call chain works because I had the feeling that call the string returns to the caller name Vi.

    Please help me if someone knows something about it or guide me in the case have another solution to make better since adding a terminal and passing the reference to sub - VI is not our requirement.

    Thanks in advance

    Kind regards

    Vivek

    Hey Vivek!

    Is this something like that you try to do?

    Concerning

    / Thomas

  • check the type VI for call by reference node

    Hi Ppl,

    I call a set of VI dynamically using call-by-reference node. And I have a type specifier linked to a component of a particular type connector. But at the time where the VI prototypes do not math I get the error from the open VI reference node. Is it possible to check if the components of connector VI matches before opening the refrence with the specifier of type VI?, or by using the error code is the only way to check if there was miss match to component connector VI.

    Thank you

    But what is the problem with error control?

    For example, I use the code like this in my application to detect what type of Dynamics VI should be used (decision based on the error output):

    Andrey.

  • Tungsten E2 - HotSync stuck to the appointment.

    All the previous sessions of the hot sync were no problem.   HotSync full this time, but showed the synchronization of the Agenda has been abandoned.  All the data calendar on the desktop was lost.  I tried to sync again.  Then he got stuck on the agenda and would not continue.  So had to interrupt the it.  Have not been able to get it back again.  Anyone would solve this problem?

    I use bluetooth for HotSync.

    My Tungsten E2 is pocket computer.

    I use Windows 7 Home Premium on my PC,

    Palm desktop 6.2.2 Access

    HotSync Manager 7.0.2

    There may be the database at the source of the problem. Click on the following link for the program called DbFixiT. This program has a trial version that you can download and install on your Palm OS device. The trial version will search the database and then to declare the corruption. You can then search records at the origin of the problem and fix them yourself or you can buy the program and do it automatically repair records.

    http://www.pimlicosoftware.com/dbfixit.htm

    To install the program, the value of all lines of "doing nothing" except quick installation or install if you use Palm desktop 6.2.

    After installing the program on your handheld, the scanner and scan also to BLOBs in the calendar.
    After you clean up the database on the handheld, set the conduit in hotsync for handheld overrides desktop and perform a hotsync.

    If you use Win7 64-bit, you can download and install the drivers USB 64-bit for this version.

    Here is the link to the post on the forum with the link for the drivers.

    http://forums.hpwebos.com/T5/Windows-HotSync/64-bit-Palm-Desktop-drivers-are-here/TD-p/337516

    The best way to protect your data is to export the data in each category of Palm Desktop in a separate folder on your PC.

    Create a new folder on your PC somewhere that suits. Name it something like Palm Desktop data. Click on the link below and follow the instructions on this page for the export procedure.

    http://KB.hpwebos.com/wps/portal/KB2/common/article/28734_en.html
    Make sure you only select everything for the beach in the export window.

    With the data stored in the created folder, make a copy of this file and save it on a USB key, cd - rw or external hard drive.

    Whenever you change in Palm Desktop, export the data that has been changed in this file and save again to external media.

    With this process you can always import the data in Palm Desktop, whenever you have a problem with the data in Palm Desktop, or if your computer/hard drive/device crash.

    Another backup option is to use NVBackup and backup on a SD card on your E2. Google search for NVBackup for PalmOS, and if you have a 1 GB SD card, you can save the map for disaster recovery.

    Here is a link to a post on the forum about nvbackup.

    http://forums.Palm.com/Palm/Board/crawl_message?Board.ID=hardware&message.ID=49854

    For reference purposes, click the following link to the support page for your device on the kb.hpwebos.com Web page.

    http://KB.hpwebos.com/wps/portal/KB/na/Tungsten/E2/unlocked/home/page_en.html

    There are links on the page the user Troubleshooting Guide, how to, downloads, etc.

  • 7520 new stuck in the installation phase. Print head move load ink cartridges

    I'm stuck in the new phase of printer configuration. After running through the commissioning of questions and I opened the cover to charge the ink cartridges and the print head did not move. I ran across several reset process... Unplug the printer. Wait 60 seconds and plug it in again. Browse the configuration... Unplug the printer... more.

    This printer does not seem to be any cartriages.

    Hey JohnTT,

    Sometimes, these printers come with packaging that holds the printhead completely to the right at the gas station.  This avoids damage to the product during shipping.  You see all plastic parts orange that it may contain in place or Blue Ribbon?

    So, have you tried the carriage to the right hand?  Can it be moved or is it blocked?

    If the printer still will not release the print carriage after the power cycles and move it by hand, then I suggest you return the product and return to the retailer of purchase or by calling the HP Technical Support to see about a replacement.  The phone number for the USA / Canada residents is 1-800-474-6836.  If you are not in this region, click here.

    I hope this helps.

  • Support for HP Officejet 6500 is stuck to the right

    My HP Officejet 6500 cartridge cradle is stuck to the right and won't spend. It also reports a paper jam, although there is no jam. I use Windows 7.

    I tried the tips in the videos of support, but it does not help.

    Please notify.

    Hello Kristen,

    Sorry for the late response - I see your message until now.

    I hope that you have already found a solution now, but in case you haven't:

    As I remember, I just searched the Web for HP authorized service providers.

    In my country (Israel), there were only 2, so it was not difficult to choose :-) and then I just called them.

    Moreover, in my case the repair cost about half the price of a new printer, a newer model, which comes with ink cartridges and arrives at your House. Because I needed the printer of emergency for commercial purposes, I chose to fix the damaged, but if I didn't need it right now, I would probably chose to order a new, rather to bother with going to the service provider with the printer, and then goes again to pick up the printer fixed.

    Hope that helps.

    Roy

  • My phone is stuck on the black screen

    Hello! I own an iPhone 6 hours while I used it began to freeze, and the screen went black. It can vibrate even when people call me or send me messages but that's it. This happened a week ago except that my phone is stuck on the home screen and I could always turn on the light, wifi, bluetooth and all that. After an hour it turned off its own well, and after that it worked normally again. Except that this time that is not turning off on its own... what should I do?

    Press and hold home/sleep set button until you see the apple logo and then release, then wait for the bot device upward.

  • Generation of multiple reports in subdirectories with the calls of the nested sequence

    I would like to generate different paths for multiple sequences, which are each managed in respect of execution of their own.  The following text displays the desired hierarchy:

    YYYY. MM DD. HH.mm.ss_MainSequenceFileName\Test [email protected]
    YYYY. MM DD. HH.mm.ss_MainSequenceFileName\YYYY. MM DD. HHmm.ss_SequenceGroup1\Sequence group [email protected]
    YYYY. MM DD. HH.mm.ss_MainSequenceFileName\YYYY. MM DD. HHmm.ss_SequenceGroup1\Test tswan.html
    YYYY. MM DD. HH.mm.ss_MainSequenceFileName\YYYY. MM DD. HHmm.ss_SequenceGroup2\Test tswan.html

    where:

    Summary of the test contains only steps of the MainSequence of the MainSequenceFile
    SequenceGroup1 is a step of calling in MainSequence with new execution sequence (to generate a separate report).
    Note: The subsequences of the SequenceGroup are stored in a different sequence file.

    Example of a hierarchy:
    MainSequence-> SequenceGroup1-> SubSequence1, SubSequence2, SubSequence5
    MainSequence-> SequenceGroup2-> SubSequence2, SubSequence3, SubSequence4

    Would result in the following files:
    2010.08.18.10.00.00_MainSequenceFile\Test [email protected]
    2010.08.18.10.00.00_MainSequenceFile\2010.08.18.10.05.00_SequenceGroup1\SequenceGroup1 [email protected]
    2010.08.18.10.00.00_MainSequenceFile\2010.08.18.10.05.00_SequenceGroup1\Test1.html
    2010.08.18.10.00.00_MainSequenceFile\2010.08.18.10.05.00_SequenceGroup1\Test2.html
    2010.08.18.10.00.00_MainSequenceFile\2010.08.18.10.05.00_SequenceGroup1\Test5.html
    2010.08.18.10.00.00_MainSequenceFile\2010.08.18.10.40.00_SequenceGroup1\SequenceGroup2 [email protected]
    2010.08.18.10.00.00_MainSequenceFile\2010.08.18.10.40.00_SequenceGroup1\Test2.html
    2010.08.18.10.00.00_MainSequenceFile\2010.08.18.10.45.00_SequenceGroup1\Test3.html
    2010.08.18.10.00.00_MainSequenceFile\2010.08.18.10.45.00_SequenceGroup1\Test4.html

    My plan was to specify the base path using the StationGlobals (for support through several files), and then use the ReportOptions reminder in the file of the main sequence and the sequence of group file.  However, the recall of ReportOptions occurs only in the file in the main sequence.  If I create a ReportOptions reminder in the sous-suite file, it will never be called.  The ReportOptions of the MainSequenceFile callback is only called (since that's where the new run is launched I guess).

    In my view, that this hierarchy could be created using what follows:
    In the ReportOptions callback, get a reference to the sequence of the appellant step and determine if it is a SequenceGroup_SequenceCall (a type of special stage that I created), if so then use a different expression to generate the name of the subdirectory and report.  If this isn't the case, then use the expression of the main sequence.

    It would take to what follows the ReportOptions in MainSequence reminder:

    1 get the reference to MainSequence path of the report generated from the process template.  This could be done by storing the RunState.Root.Locals.ReportPath in a StationGlobals variable before the new sequence.

    • Is it possible to do without StationGlobals?  A SequenceCall parameter is most appropriate?

    2 get the reference to the call of the sequence step

    • Not sure what the best way to achieve this.  Please notify.

    3. date format
    The statement to get the start time of the SequentialModel is not called that after ReportOptions recall and the path of the file Expression determine report.  This is why the name of the report file timestamp may be different from the header of the report.

    • Why the statement to get the start time is not called as the first step of the sequence, and what are the consequences of this change in the sequential model?

    My questions are indicated by bullets that precedes.  Any help would be greatly appreciated!

    Hello

    I created a small example that should full fill your requests.

    Note: I have only tested in Mode Single Pass (No. Serialnumber request!)

    No StationGlobals when used. To get the parent folder data two queues when used in ReportOption callback

    Hope this helps

    Jürgen

  • Store the Teststand ActiveX reference in the LV shift register

    It is posted here

    I'm trying to store the references TestStand ActiveX in a shift register not initialized a VI.  In my case, the references are passed into the TestStand VI (not created from in VI).  If I call the same VI to the next step (same sequence and execution of the previous step), since the shift register ActiveX references are not valid.

    The VI remains reserved to run during these two stages and is not unloaded from memory, so the shift register data should remain intact (in fact, the numerical values of the references are actually kept).  LabVIEW is still trying to close any ActiveX reference, even if they were not created from the VI?  Is there a way around this problem?  Or I'm just something wrong?

    jsiegel-

    In general, when the code is passed a COM reference and code is to keep the reference to a global or shift register, even after his return from the call, the code must add a reference to the object so that the object server knows that the object must be destroyed not. It is also the responsibility of the code that fits on the reference in the world or a register shift to release the reference to the object when it is no longer necessary.  LabVIEW is not different from any other language.

    So, here are more details. TestStand application LabVIEW for run the VI, TestStand after the reference as a parameter to the method of the server to run the LabVIEW VI. COM creates a proxy for reference and give the reference of proxy for the code module. Your VI then stores the value of the proxy reference in the global or the shift register. When your VI ends and returns to TestStand, COM releases the proxy reference, the value in the global or the shift register is no longer valid.

    Basically, you need to add or duplicate the reference to the object passed in LabVIEW by calling the VariantToData function. Pass the existing reference, set the input type to the same type of the reference, and the result will be the reference in doubles. You can assign the double reference to worldwide or register.

    Normally you must well to release the reference later by reading the value of the global or shift register, explicitly calling the function close reference with which to reference, and then assign A Refnum Constant stepped up to the global level or shift register to nullity. In the case of a module of code, I believe that when TestStand unloads the VI, LabVIEW frees the reference correctly. If this isn't the case, you will get a debug message to unpublished during the TestStand stop object if you have this option enabled.

  • Call in reference to replacement VI

    I'm doing a VI dynamically a reshipment that accesses a property in a class with name. (see attachment) The idea was to use 'call of reference' for the property required to call the correct data VI member access. The CBR does not preserve the dynamic wire of the input to the output, causing the VI must be broken. (see second attachment)

    Two questions: first, why it does not work? I understand that Labview must ensure this type of performance is preserved by a dynamic send substitute VI, but why couldn't you just take and raise an error if the type is not maintained? Secondly, any ideas how to get around this limitation?

    I agree that people can be so rude.  So ungrateful too.  What is the youth of today come at all.  I have really no idea.  The future is surely doomed.  Cursed I say!

    Now back on topic...

    Why don't simply implement you a class method rather than load a VI member by reference?  Simply, I do not understand the role of the party "by reference" here.

    If you MUST go this way (which I doubt at the moment) so please plan why call a DD VI dynamically is a requirement.  In the meantime, insert a primitive 'Preserve the class Run-Time' on the output of your dynamic call.

    That COULD help.

  • Print job is stuck in the print queue and cannot be removed in HP OfficeJet J4680

    Original title: HP OfficeJet J4680

    Print job is stuck in the queue and cannot be deleted.  Convenience store said it is fixed, but it isn't.

    Hello

    I imagine the inconvenience that you are experiencing. I will certainly help the question of fixing.

    To help you suggest several steps to solve the problem, I would appreciate if you could answer the following questions:

    1. what operating system is installed on your computer?

    2. have you made any recent hardware or exchange of software on your computer before the show?

    3. you receive an error code or message?

    4. what store did you try?

    What version of the operating system Windows am I running? :

    http://Windows.Microsoft.com/en-us/Windows7/help/which-version-of-the-Windows-operating-system-am-i-running

     

    Please follow the steps in the link below and check the issue.

    Unable to print? Print jobs are stuck in the print queue:

    http://h10025.www1.HP.com/ewfrf/wc/document?DocName=c02205477&tmp_task=solveCategory&cc=us&DLC=en&lang=en&LC=en&product=3692888

    For reference:

     

    Solve printer problems:

    http://Windows.Microsoft.com/en-us/Windows/printer-problems-in-Windows-help#fix-printer-problems=Windows-7&V1H=win8tab1&V2H=win7tab1&V3H=winvistatab1&v4h=winxptab1

     

    Diagnose and automatically fix problems printing and printer:

    http://support.Microsoft.com/mats/printing_problems/

     

    I hope that the information above helps you.

Maybe you are looking for