Start the asynchronous call, re-entrant execution

I use a dialog box very minimalist VI showing only an indicator of the gauge on the front panel. Here's the preview of this VI:

The purpose of this dialogue is that the user can appear an indicator of size gauge more great via clicking on the selection of the menu of one of the many indicators on the main façade of VI. The behavior of the window is set to "floating", and I use the "execution clone reentrant Preallocated' so that the user can launch dialog as needed. This is the place where I call async these screws dialogue:

Everything works as I expect, however I have a few questions, could someone help...

  1. In the dialog Subvi I properly close all used referred, as the CtrlRef of the indicator when the user selects (menu selection) the type of dialog box (later I will also create a dialogue of the type "minichart" next to the dialog box indicator gauge). So I think that this part should be OK, cannot create a memory leak. Another thing, I have to decide, what execution mode should I use for these dialog boxes? The clone "Shared" or Preallocated mode of incoming execution of "clone"?

  2. Connection in part up to the first point, I wonder how I could refine this feature of pop-up dialog box. I mean, right now, the user is able to pop up arbitrary number of dialogue windows indicating the value of the indicator even located on the main façade. What would be the best technique to detect if the user has ALREADY launched this dialog box indicator specific, and rather than start another, maybe just bring the already runnning on the front and centered dialogue?

Thank you very much for all the advice!

Best regards

Martins wrote:


What would be the best technique to detect if the user has ALREADY launched this dialog box indicator specific, and rather than start another, maybe just bring the already runnning on the front and centered dialogue?

In a similar feature "drop-down", via a messaging system, send a message to all the aggregates that are basically "you have this reference? (and if you yourself bring to front) ».   So I expect all the answers and if they all say 'No' I run a new deployable.

Tags: NI Software

Similar Questions

  • Start the asynchronous call brutal Typedef Bug

    There is a nasty bug which I think is the cause of many anomalies weird I see with the events of the user, like where some get fired and if I probe the refnum of the event on a VI that was launched using the asynchronous call node start I get some weird value for reference as 8450 or 5500 instead of some great typical integer. It is not also match the value that I get when I initialize the reference. This happens only intermittently, but I can reproduce the bug that I see on a smaller scale to a certain extent. This is not exactly the same as what I see in my current project, but I guarantee you both are related. Also, I'm pretty confident that this has to do with the help of LVlibs as well.

    So... to reproduce some questions:

    Unzip the attached code and open the project

    Open Main.vi. It is hard to see because it's pink, but notice the point of constraint on the node to call asynchronous start. This is provided at this point because I have a cluster of non-typedef in the connector pane, but a TD cluster plugged into it.

    Now open AsyncCall.vi

    Drag the eventcluster.ctl of the project on the façade of the asynccall.vi

    CTRL + x on the typedef cluster that has placed you on the front panel

    Select the non-typedef cluster by clicking it

    CTRL + v to replace the TD not cluster with the cluster of TD and save

    Return to main.vi, you will notice that the point of constraint does not go far.

    Open context-sensitive help and notice that the ctrl types match, but it's as if LV does not recognize it on the beginning of the node of the asynchronous call.

    Remove the node from asynchronous start call, then replace it. The cluster to the top wire. Voila, no point of constraint.

    Second question - same result but different method to get there.

    Now that you have components of connector typedef stress points and no more because you've taken the first steps of this 'exercise', remove the EventCluster.ctl from the library and record.

    WOAH, look the points of back strain, because node call asynchronous start still referencing the typedef cluster that he thinks that should be in the library. This can be seen by removing the cluster on main.vi and then right-click on the node to call asynchronous start on the side of the connector and creating a new constant of cluster

    It is creates a greyed out of control! Why? Well, we will reopen the context-sensitive help. Whadda you know, it's always looking for the control in Bug.lvlib that no longer exists.

    Now, the question that I'll have in my complete project that I can't post and can not reproduce on a smaller scale updates the typedef causes the dot of coercion. Otherwise I can't update my typedef cluster that contains all my events without going and replacing EVERY SINGLE launch async call node EVERY time I have add a new event.

    Major problem.

    Please let me know if these steps to reproduce were not clear or you have difficulties to reproduce the problem. I use LV2013 SP1. I opened the project in 2014 to see if it has been fixed in a later version, but I saw the same thing.

    I can repro with measurements of @GregFreeman and also confirm that I saw this same issue at least since the LV2012, but they have not reported it having not been able to provide a minimum test (thanks, @GregFreeman!) scenario

    For the record, it seems that the bug here, it is the spread of type sometimes makes an incorrect assumption / optimization as to if the conpane of the start the asynchronous call node must be updated when the source changes.

    A more obvious change - say, add/remove an entry, reverse order, or change data types altogether - always seems to spread properly.

    Incorrect optimization seems to be a terminal retains the same type of database, but transforms the type definitions - or, if the type definition is re-related or related outside a library owner.

    @GregFreeman watch the bug goes from non-typedef typedef, but it's actually worse in the other direction - when a link to a missing file is maintained.

    Call the asynchronous starting node seems to maintain a list of links that is distinct from that of the VI, and this list of links separated, this is what seems to not be properly invalidated. For example, in the screenshot, I illustrated example of Greg that the node generates no error in the compiler even after parenthood and rename the Typedef...

    ... even when we "Create Constant" on this terminal incriminated with list obsolete links, we get a compilation error. Since then, the grayed out type highlighted in the contextual help cannot be found, because 'Bug.lvlib:EventCluster.ctl' no longer exists, but the list of links separated from this node was not notified:

    It is worth noting that "Bug.lvlib:EventCluster.ctl" does not appear in the list of links of the VI at this stage.

    Often, no compiler error is generated after this failure occurs and as Greg reports, you could end up with undefined behavior (e.g. suspicious Refnums and events that seem to not fire not) (and I'll add it to this list a hearty portion of DAborts with diversion total number of messages).

    In addition, you * could * receive errors of cryptic linker for generations, but maybe not (the above screenshot, you'll notice I added two builds, neither of which seems to have a problem of building). (It seems that the broken link is travel with the distribution of the source, even if 'Disconnect the definitions of Type' is selected during the build process. That is why I believe anecdotally that node maintains a list of link separately the list of VI, and it's maybe part of the problem).

    It is noted that during this refactor (de-parent and rename) all screws and control remained open and in memory and all files have been saved. No funny business where LabVIEW would be unable to update links in a file that was not in memory.

    Another note - in the original example, all source files have been unifiles, and I can add anecdotal report this bug is much more insidious when separate compiled Code is active on the source files. In this case, the source may appear to be perfect - no point of constraint, no link expired - but the code that is currently running can be broken. In other words, what you see is not what you get, which makes debugging impossible. (This bug in particular is one of the few who makes "Cache of compiled clear objects" become a normal procedure controlled throughout the application development)

    Anyway, I wanted to draw attention to this issue, given that this thread is not yet associated with a CAR and it's a serious bug that generates a behavior undefined performance caused by a fairly normal refactor now has a well-characterized small repro case.

  • LabVIEW executable not feasible using the asynchronous call

    Hello

    my project works very well from the source, but fails to run as an executable file. I was able to follow him to the asynchronous call of a VI.

    So far, I was able to solve the problem by using a queue dummy and loops in order to start the VI parallel to the rest of the code.

    I tried:

    1 mass recompile

    2. build the source distribution, remove existing build, create new

    3 allways include reminder all screws and all the screws called by reference via Server

    Always without success. I tried to hide the forum to find answers, but only found suggestion I already tried fail. Help, please

    So problem solved...

    Now it works.

    But I can't understand why and what was the problem.

  • deployment of the asynchronous call

    I need deploy an executable on a computer of the client and for the first time, I need to use an asynchronous call in my program I don't know how I'm going to keep the path to the 'reference of VI Open' valid after I build and deploy the application.  The obvious way would be to use a configuration file to allow me to set the path independently of the LabVIEW Application.  However, when you include A VI in the always 'include' is not an EXE so not include a file in the folder of generation, which in fact had reference on the host computer.

    Teaching tips on how to proceed would be to very help full to learn to deploy this application

    Attached is a code snippet of how I am currently using an asynchronous call

    Thank you

    Mark R.

    That's how I always call a VI by reference.  Saw the ref static VI causes LabVIEW load this VI in memory and be able to find it by name when opened.

  • path to vi the asynchronous call

    I'm trying to implement a splash screen that calls my main VI of asynchronously and displays messages during the charge of the VI.  Everything works fine in the development system, but it is not the case in EXE.  This is my first attempt to call a VI like that so I don't know that I'm missing something simple.

    See the image as an attachment.  The static reference points to a location on my server but I want to run the VI which is "Still included" in my EXE build, not the VI of the server.  The path of the VI comes back here is a combination of the path of the server and the location of generation, which is obviously not correct.

    What is really strange for me, it's that the main.vi is in fact running even if the path is incorrect.  The splash screen displays messages received from the hand, but when it is charged to the configuration settings, it fails because the vi path is c:\program files\tester\main.exe\z\labview\tester and it does not find my INI file.  How can I dynamically load this VI and even power give him my refnum of notification for my splash screen and return to the correct path of VI?  I tried to remove the path below property node and just add a constant path with main.vi as the value.  But it seems to get the path of the strict type reference (I understand is type only).

    I'd be willing to bet that your complete and complex application calls some VI who lives on the C drive, so to avoid any potential ambiguity, it uses the full path in the compiled (by chance) application, but on different drives. Your simple application probably calls subVIs that are only on the Z drive, so there is no possibility of confusion and it uses a shorter common path as a starting point.

  • d3dx9_34.dll is missing error when trying to start the game call duty

    When I tried to lunch call of duty 4 I got a message telling me the program cannot start because d3dx9_34.dll is missing. What can I do?  (iam windows 7)

    If you have recently installed Win7 Update DirectX can help (Win7 install all DX files)

    Download DirectX end-user Runtime Web Installer from the official Microsoft Download Center

    It is also possible that the d3dx9_34.dll was corrupted. In this case, you will need to use full DirectX

    Installer of Redist (June 2010). This will overwrite all DX files and replace the files corrupted with a new file.

    Above the Web Installer does not overwrite existing files. It is only the installation of files "disappeared".

    Download details - Microsoft Download Center - DirectX Redist (June 2010)

    What follows is a list of the Direct X .dll you when files are updated.
    Go to Windows / System 32 folder (and SysWOW64 if you have 64-bit).
    They are in alphabetical order and will start with d3dx9 - 24 43 >. Then d3dx10 - 33 43 > & finally d3dx11 - 42 43 >.
    There was also - d3d9, d3d10 and d3d11 these come before the D3Dcompilers - 33 > 43.There are also three new XInput1 - 1 > 3.
    There are more files DX, but these are most of the graphs related to Direct X .dll.

  • Why TCP tunneling removes the 503 of the asynchronous call WS http response?

    Hi all

    I am facing a weird problem.
    I have developed and tested an asynchronous BPEL process which, among other things, invoke a 3rd party web service.
    It works very well in the development environment.
    When I migrates to the test environment for clients, I get an error http 503 in the BPEL process (the only difference in the BPEL code is WS endpoint).
    Try to understand what happened, I used a tunnel through TCP monitor. This solves the problem!

    So why go through a TCP control running using the BPEL server?
    Continuing with TCP monitor in production is obviously not an option, so not only that I have to understand why using a TCP my help, but also find a way to fix the underlying issue.

    I should mention that I use BPEL version 10.1.3.3, and I've tried the connection between the BPEL server and 3rd party web service and not a problem.

    Any help is very appreciated.
    Kind regards
    Aagaard

    Published by: Aagaard on March 23, 2009 09:48
    In Metalink in "TCP Tunneling the Oracle BPEL Process Manager" (283484.1 document id) it is proposed to change the ownership of the 'opt-SOAP-shortened' in the 'Manage BPEL domian"from false to true if you want to use TCP tunneling.
    I don't see this property in the BPEL console or in the domain.xml file in $ORACLE_HOME/bpel/areas / < used domain > / config.
    This would be part of the problem?
    The BPEL server in the customer test environment is a clone of the BPEL server in our development environment, so I don't see how this could be the problem.

    Just to think logically, he cannot be firewall as SOAP communicates vi the http remote server port. It has nothing to do with the installation of BPEL.

    19313 should be only one communication port.

    The main thing to look at is TCP LUN act as a proxy in some way? My understanding of the app is there's some monitors.

    Also when you test the browser have you disabled all proxies?

    As mentioned above the HTTP503 establishes a connection, but it is unable to complete for some reason such as timeout, which could have been caused, but load.

    see you soon
    James

  • How do I know if a VI is already running before calling Start Asynchronous Call?

    The new node to start the asynchronous call is great for the spawning of several instances of the reentrant vis.  However, I fell a little bit using for screws not reentrant the old practice of using the method "Run a VI" would allow us to check the Execution.State of the VI before calling the method to execute.  This way if the State was running or running at a higher level, we could spend the invoke node and just use a property node to open the front panel.  With the starting node the asynchronous call, it seems that we must use a strictly typed static VI reference, and when we open the reference VI, VI gets booked and his Execution.State = running.  So, how whether it is not only reserved by wire, but actually running before calling Start redundant?

    Moreover, the redundant beginning has an interesting behavior.  Actually, it will cause the targeted VI must be performed again after it stops.  Even if you tap the Abort button on the target VI, it run immediately still and always the same number of times as the starting node the asynchronous call is executed.  There is nothing wrong with that, and I guess the simple answer is to simply go back to the old method of "run a VI.  It's just that ability over these inputs directly to the connector pane is so nice.  Maybe missing me something obvious.  Oh, I am referring to the call and forget mode (0x80).

    Thank you

    Dan

    Maybe missing me something obvious.  Oh, I am referring to the call and forget mode (0x80).

    Yes you have forgotten that he forgets the Run method always seems to be a better choice for this mode

  • How to stop an asynchronous call to activex makes a VI?

    I use Labview 8.6 to collect data of monkeys hand movement. Because some graphics are necessary, I do use Visual c# express edition to program graphics and appeal that the VI using ActiveX from my c# code. I use three VI, which two I call synchronously (I'm waiting for the call ends). But the third VI must be called asynchronously so that I can continue my work in c#. This VI extracts data from the accelerometer via DAQ and exported in a file of measure LV in a while loop.

    I start the asynchronous call by VI.run (true) where true indicates that I don't want to wait for the call. Now when a trial is over (Monkey Gets a visual cue, then works correctly ends) and I have to stop collecting data. I have one of the following two ways to stop the VI.

    (1) make an abandonment by using vi.abort (), but this means residue data collected by DAQ not written to the file of measures.

    (2) set the button stop in the false via VI VI. SetControlValue(). In this case, the VI does not stop immediately, it takes a LONG (1.5 to 2.5 s) time to stop. I tested that it takes a long time to stop running the VI using Labview without using c#.

    Note that as soon as I stop my VI, in the file lvm I want to write c# 'trial closed' to differentiate between successive trials data. I don't want to create new lvm for each test file (there will be some 300 of them), so I add data in the same file. In the case of 2), I don't have a VI.isRunning () to see if it stopped running. I can sleep() in my c# code for a second or two and then add 'the trial ended' file lvm but all of this is in real time that happens and I can't sleep that long.

    Now my problem is that the two options are not good for me. Is there a better way that someone can suggest? "And why does do so for the VI to stop if I use 2)? Is there anything I can do about it? Thanks in advance.


  • Why an asynchronous call would lead to "the VI is not executable. The full development version... »

    I built a labview moderately complex program to connect with a new parser that I build.  To briefly describe the application, the main VI is a user interface which, in an initialization step, asynchronously calls a dozen other screws each called VI is a state machine that handles communication with a component specific for my parser, whether heat controllers, regulators debit, NI DAQmx channels, a SQL database, etc..  I use the VFG and/or EI to communicate information between the main VI and each component. The system works well when it passes through NI Labview 2012 SP1 (full development Version).  I build the project successfully, but when I run the construction (on the same development machine), I encounter the "the VI is not executable.  The full development of LabVIEW version is needed to correct errors"message.

    My first troubleshooting step that was supposed to isolate the problem.  I removed all the asynchronous calls, rebuilt and the program works without errors (granted, no State machines that handle I/O bundles are running). This gave me the impression that my UI screws are not the problem.

    The next step that I took was to create a test project with a simplified user interface to call asynchronously, and control a single component.  The first part, I tried to control a heating unit, and it works perfectly.  I have build it and run without errors or problems.

    Thinking that the component should not be a problem, I add the async call for this component in my main VI, to test it.  This works well in the built environment of Labview development, without errors, but alas, I get the same message as the "VI is not executable' when I try to run the build.

    I am at a loss on how to make trouble, or it could be the cause of the problem.  Why an asynchronous call to the VI even break the construction of an executable project, but don't cause problems in an executable of side projects?


  • [MAF - AMPA] How the custom/override error after the failure of the asynchronous Web service call?

    Hi Experts,

    I am looking for a best practice to make the error handling in the MAF.

    Currently my application is using AMPA and call the REST service.

    However, I would like to know how to handle this kind of error

    1. the device is not connected to the network (can we personalized it?)

    error2.png

    2. the device is connected to the network but cannot call service

    error1.png

    3 and the other exceptions of the asynchronous call to the AMPA

    In addition, how to mark a method call in the exception handler?

    referring to this http://multikoop.blogspot.com/2014/02/adf-handling-exceptions-from_14.html in ADF tf we mark as exception handler.

    Best regards

    Hendry

    Hendry,

    You have several options. It depends on how you want to handle exceptions:

    -If you just want to hide the mistakes of web service end-user call, you can set the showWebServiceInvocationErrors property in the persistence - mapping.xml to false (you want to generally this set to false, by putting your application in production, the default value is true, because during development, it is more convenient to directly see the errors of appeal WS)

    -If you want to display a custom error message, you can create a subclass of RestJSONPersistenceManager, register for this subclass using the property "remotePersistenceManager" in persistence - mapping.xml and override the handleInvokeRestServiceError method.

    It depends also how you want to process POST/PUT/DELETE requests that fail. Do you want the AMPA runtime register this request as pending for the runtime synchronization action automatically tries to return the claim later? Or you just want to display an error message to the end-user with a text like "try again later?

    Steven Davelaar,

    Oracle Mobile A-team.

  • Debugging asynchronous calls

    When you use asynchronous calls, is there a way to see and/or kill the clones running? Let me explain my program a little structure.

    I develop a tests suite that can read in the test script files and run different (or the same) on several devices connected to a chassis OR modules of the AO. The two main components of my program are the CommandParserQueuer (CPQ) and the CommandExecutor (CE marking). A command queue is created during initialization. The CPQ reads in the script files and translated into commands adds those to the queue of the command. The controls are beams of the States of the enum and all data needed to perform this action. The CE marking is a machine of the State in queue. When queues begin to fill, the CE removes the items and perform the actions (e.g. AO tension adjustment, read data from the device, restart the device, etc.).

    Program to quit smoking, a stop command is sent to the EC, which simply sets the while loop stop true and it allows to get out. This worked well until I implemented the ability to run several tests at once, which meant from multiple instances of THIS Start Asychronous Call (options x 80 and x 40).

    Because of my design, I have to run a while loop inside the asynchronous calls, that goes against the recommended practice of not doing. During initialization, I create a command queue for each connected device. For example, if I have two devices DEVICE1, and 2 the device, two queues are created with these names and two these are called by reference to these queues. CES sitting then slowed until the queues fill up with items.

    The problem I have is that sometimes, but not always, blocks of code inside the CES are throwing errors, and also the CES not arrested in accordance with the instructions. I'm out all together of LabView. I also want to emphasize enforcement of clones. Is this possible?

    Any thoughts?

    During an instance multi-instance has a several traps.  You seem to have sailed with success some of them, but not all.  As Jed394 said, the framework of the actor should help with start and stop, but it looks like that your error is more due to a conflict of shared resource.  This resource conflict could be a hardware or software.  A few things to look for:

    1. Is the code that you share between reentrant CES?  It must all be, but nothing waiting for something (i.e. awaiting a DAQ card data) must be re-entrant, so that the two separate these may have their own instance.  There is a balance here between using a lot of memory and the contention on subVIs.
    2. You can try to use two items from the same material that cannot be used separately.  For example, you can not simultaneous, of two locations of code, read different analog inputs of the DAQ card even.  This can be quite hard to track down, since the hardware devices vary in their capabilities.
    3. Is that what your truly separate data space between your bodies?  Depending on how you configure access to data, the two CBS could try to access the same or incorrect data.

    Good luck.  Let us know if we can help you more.

  • Problem on asynchronous call: façade Subvi is not pop up when it is called.

    Dear all,

    I'm new to LabVIEW, and this is the first time I try to use the asynchronous call.

    I'm using LabVIEW 2011.

    I want to build a directory for several screws, and it should enable users to open more than one of the screws at the same time pressing the buttons. Before the construction of this directory, I just tried asynchronous call allows you to call a form of VI VI, but found a big problem.

    I followed the steps described in the help file, created a strictly typed reference, set the option on 80 x because I need not return. When I run it for the first time, it worked fine: the Subvi popped up and run. Then I closed the Subvi. But for the second time and, when I run the appellant VI, the Subvi does not pop up, instead it seemed to work silently on background because when I manually opened from the file that I found running. In fact, I have found no option as "display front when it is called" of the asynchronous call.

    The appellant VI and Subvi are attached. The address of Subvi calling VI should be amended accordingly.

    What should I do to make it work correctly? Thanks a lot for any idea!

    Linjxz,

    If you have ever thought a solution via the property node, then you can ignore this response.  However the easist if not the best method practice to do what you want is to: with your PS open press ctrl + I, with an "appearance of the window" selected in the drop-down window, click Customize.  Check the box "Display front panel when called" and then the correspondent "close front after ward initially closed".  Mind you as your under VI must begin execution closed to make it work while programmaticly you can over come this obstacle.

    Looking to do more with less code.

    Mark R

  • Using asynchronous calls in a while loop. How 'Skip' node and only retrieve data as it is treated

    Maybe I'm not understand asynchronous calls... but I thought I should be able to call one another VI and essentially 'jump' it is the node and only receive data as the called VI treats.  In other words, similar to the Run of VI, I can wire a wait until done? with a fake and the main VI will not wait for the other VI end of race.  The main VI continues to function, and when it passes the called node of the VI, it will receive data if it happens to be there.

    How can I call a VI in a while loop and do not wait so he could spit out the results?  Data flow is my enemy on this one...

    The first VI treats its own figures (using the iteration count) and displays them on the PC.  Other indicators are the data of the called VI.  I want to be able to work around the blue circle node and receive data only that it will be available.

    Any help is appreciated.  Thank you.

    What I said OR the 'Start asynchronous call' is the preferred method for starting background tasks. This call is usually used to run background tasks. For example, you have a process of journal. When your application starts it would use the "asynchronous call Start" to start the process of journal and then move on to the other stuf. The process of the journal would then happily run in the background and the main application is free to do other things. Of course when implementing these types of systems you need a way to coordinate things like exit. This is where the queues and stuff come it.

  • Error initializing the asynchronous process

    Hi guys,.

    As suggested by several messages and items, process asynchronous is preferable because of its flexibility. I'm very happy with it until I have the following problem.

    We do fault handling on all our processes, using the hook and the policy fault. For an asynchronous process, we use another unmanaged code to return the fault. Recently, we noticed a problem. For some reason, every Sunday when the production BPEL server restarts, there are always a few BPEL process turned to retirement and offshore. We have already created a demand for service for it on metalink. But what causes another very serious issue:

    The calling BPEL instance sends a request to start the asynchronous process. As it is turned off and removed by accident, the initialization fails. But, as it is asynchronous, the calling process is not notified, which means that there is no fault raised to the calling process. This causes a lot of trouble because we are not notified of the problem. This was never a problem because we had not the process stops and withdraws before.

    This can be easily verified by a simple test case. Create a synchronous process a and process asynchronous B. leave a B invoke. Then turn off and retreat B. An instance can still be successfully executed without saying the problem calling B. If B is a synchronous process, a will always communicate a flaw in such situation.

    Of course, the domain log file records this ORABPEL-02106 problem. but we do not want to check the log file all the time and want to be notified when it arrives. Is it possible to catch this exception/fault in the appeal process?

    Thanks in advance!

    Steven

    Published by: sw12345 on July 26, 2010 09:41

    Aysnchronous by itself is supposed to be loosely coupled with the appellant. So the behavior you see is expected. BPEL persists the message invoke the message and Summoner of collection of discussions the message to process when the process is ready to pick it up.

    If you need to blame either visible by the appellant - you can disable this intermediate persistence of setting low configuration in bpel.xml of wedged.


    OFF.immediate

    -Sridhar

Maybe you are looking for