Using static VI references in an application

Hello all you helpful forum-goers!
I am using 4 different static VI references hooked directly to "Run VI" invoke nodes, with the "Wait Until Done" and "Auto Dispose Ref" parameters both False, to run four VIs dynamically, each of which does nothing except call my re-entrant serial port input/output VI with a different COM port index number.  Overall this is working pretty well.  However, I have a couple questions about improving my setup.
1) Is it possible to somehow set an input parameter to the re-entrant serial port VI, and thereby be able to Invoke it directly four times in a for loop, each with a different input value?  I'm not sure how I would do that, except that I've heard that you can set the value of a control of a VI using a reference to it.  I also worry that using the same static VI reference to Invoke the VI 4 times would somehow re-start the same dynamic VI instance 4 times, instead of spawning 4 copies of it.  However, this solution would allow me to delete the 4 VIs which do nothing except call the re-entrant VI, and my code would be simpler and more expandable (e.g. making it easy to interact with 8 serial ports in the future just by increasing the number of for loop iterations).
2) It seems to be required for me to add the 4 VIs which I Invoke dynamically to my lvproj file, and then add to the "Always Included" section of my application build properties in order for them to be included in my application executable.  This was what I had to do in previous versions of my code when I referenced the VIs via a path name, but now that I changed to using static VI references, I thought they would be included automatically.  LabVIEW already knows to automatically load them in memory (e.g. when I do a search it searches them even when they are not open), and they are included in the Dependencies list in my LabVIEW project, so why would they not be built in to my executable?  I'd prefer not to have to add them explicitly, as it is just one more thing to forget if I change it in the future.  Is there a setting or something somewhere which I can change so that they will be included in the executable automatically?
Thank you very much for your time and assistance, as always!
-Joe
Solved!
Go to Solution.

Nope.  If you look at the Help for the "Run VI" method, you find the following information for "Auto Dispose Ref":
"If TRUE, the target VI detaches the reference from the main VI.  When the target VI finishes executing, LabVIEW automatically disposes of the reference, along with the parallel data space.  If FALSE, the main VI retains control of the target VI."
So by setting "Auto dispose" to T, you pass control of the reference to the subVI itself, and LabVIEW will dispose of the reference when the subVI finishes running.
I will second Jeff and urge you to get rid of the global variable!  I haven't used a global variable in something like 14 years.  I haven't needed to.  Myself, I love a good notifier and would urge you to use a notifier instead of a queue if you're going to be spawning VIs.  Why?  Because the first instance of your spawned VI to receive the "stop" message from the queue will remove that message from the queue, thus preventing the other instances from receiving the message.  So you'll have to send the message repeatedly and hope that everyone eventually receives it.  If you use a notifier, anything that contains a "Wait on Notification" with that notifier reference will receive the message.  I think you want multiple listeners here, right?
Ok, this afternoon I'll try to write some dummy code with a statically called VI in it, compile it into an exe, and see if I can duplicate your problem...
One question, were you just using the static VI reference by itself to call your VI, or were you using it the same way I showed in my earlier post, with "Open VI reference"?  I'm just trying to look for differences between what I've done in the past which has worked, and what you're doing now which isn't working...
Jeff, what say you?

Similar Messages

  • How to run the oracle application cleint using static ip or domain please e

    How to run the oracle application cleint using static ip or domain please explain me.
    i am not able to run oracle forms in client machine how to run it please explain me
    Please give me detail regarding that
    any body please help me.
    my mail id::::: [email protected]

    You did not mention exactly which Forms version you are using so it will be difficult to offer specific help. However, you did mention Forms 9i. ALL "9i" releases were desupported long ago, so find software or documentation are becoming more difficult.
    Here is the Deployment Guide for Forms 10.1.2
    http://download.oracle.com/docs/cd/B19375_07/doc/frs/forms/B14032_03/toc.htm
    Here are some technical reference for Forms 9.0.x
    http://www.oracle.com/technology/products/forms/techlisting9i.html

  • Can we call same VI statically and dynamically in same application ?

    Hi,
    I am having an application where i call a VI dynamically using VI server. However at some other place in the same application, i call the VI statically (i.e. the VI icon is placed in the block diagram of parent VI). But when i run the application i get following error message:
    "Possible reason(s):
    LabVIEW: The VI is not in a state compatible with this operation."
    Why is it so ?. Can we not call the same VI dynamically and statically at two differenct locations in the main program ?.
    Thanks for any inputs.

    If a VI is statically in a running hierarchy, it can be also called dynamically using "Call by Reference" node after opening it with a its type specifier refnum. However, you can't invoke the Run VI method, the same way you can't run it using the Run arrow.
    LabVIEW, C'est LabVIEW

  • How to access a property in a static vi reference

    Hi,
    I'm completely new to Labview and I'm working on a project that includes controlling CANalyzer from LabView by an ActiveX control.
    In CANalyzer I have a CAPL function that I need to call from LV. The problem is that the function must be created in the onInit event when starting a canalyzer measurement. The only way I have found to create the function is to use a "reg event call back" and create the function in a "static vi reference". This works and I can call the funtion from that vi, but I'm not able to call the function from anywhere else but from the "static vi reference" and since it must be strictly typed I can not add any output connector where I can add a reference.
    I've been trying to solve this for thee days now and it's starting to feel hope less.
    In VB the complete code would look something like:
        Dim WithEvents gCANApp As CANalyzer.Application
        Dim WithEvents gMeasurement As CANalyzer.Measurement
        Dim gSendFunction As CANalyzer.CAPLFunction
        Dim Y
        Set gCANApp = New CANalyzer.Application
        gCANApp.Open ("C:\...xxxx.cfg")
        Set gMeasurement = gCANApp.Measurement
        gMeasurement.Start
        gSendFunction.Call
       'Measurement OnInit event handler
       Private Sub gMeasurement_OnInit()
           Set gSendFunction = gCANApp.CAPL.GetFunction("MyFunction")
       End Sub
    This would work fine since I have a reference to gSendFunction in my main code.
    My LV code looks like this:
    and my static vi ref looks like this:
    What I think I need is a reference to the data thread coming from "GetFunction"
    If any one can help me solve this I would be very happy!
    Best Regards
    Henrik

    Hi,
    you could add another input to your static vi ref where you input the reference to a reference display element which sits in your other vi (upper image).
    Then you could make a signaling value change to the reference display element from within your static vi ref.
    In your other vi set up an event structure to detect the value change. In that event close the vi - this will let you have the desired reference as output of that vi.
    Regards Florian

  • Using .cfr report files in an application

    We are developing an application that sits behind a login. In this application we have several .cfr pages. When we try to access one of the reports the web browser returns a blank page. If we remove the application.cfc file from the root directory the pabe works fine. I am assuming the reason for this is the .cfr extension is not being accepted as an application page. Dose anyone know how to correct this? Our servers are windows based and coldfusion is running under iis.
    Thanks
    Hal Brown

    Nope.  If you look at the Help for the "Run VI" method, you find the following information for "Auto Dispose Ref":
    "If TRUE, the target VI detaches the reference from the main VI.  When the target VI finishes executing, LabVIEW automatically disposes of the reference, along with the parallel data space.  If FALSE, the main VI retains control of the target VI."
    So by setting "Auto dispose" to T, you pass control of the reference to the subVI itself, and LabVIEW will dispose of the reference when the subVI finishes running.
    I will second Jeff and urge you to get rid of the global variable!  I haven't used a global variable in something like 14 years.  I haven't needed to.  Myself, I love a good notifier and would urge you to use a notifier instead of a queue if you're going to be spawning VIs.  Why?  Because the first instance of your spawned VI to receive the "stop" message from the queue will remove that message from the queue, thus preventing the other instances from receiving the message.  So you'll have to send the message repeatedly and hope that everyone eventually receives it.  If you use a notifier, anything that contains a "Wait on Notification" with that notifier reference will receive the message.  I think you want multiple listeners here, right?
    Ok, this afternoon I'll try to write some dummy code with a statically called VI in it, compile it into an exe, and see if I can duplicate your problem...
    One question, were you just using the static VI reference by itself to call your VI, or were you using it the same way I showed in my earlier post, with "Open VI reference"?  I'm just trying to look for differences between what I've done in the past which has worked, and what you're doing now which isn't working...
    Jeff, what say you?

  • Nonlinear Curve Fit and using static data

    I am trying to fit data to a 2D function using the Nonlinear Curve Fit VI in Labview 8.2.1, but I would like to also include 2 parameters that I don't want to be optimized.  I cannot directly use constants since every time I run the fitting I need to change the 2 parameter values.  I tried to modify the example by Altenbach according to my own application in the link below. 
    http://forums.ni.com/ni/board/message?board.id=170&message.id=230831
    I think the problem is that I don't completely understand how to use the static VI reference with the Nonlinear Curve Fit VI?  It looks like there is a static data control that I could use to add additional parameters, but I am not sure?  I can get Altenbach's code to work if I change the function to something different, and even if I change the number of inital fitted parameters.  I just can't figure out how I can add parameters using a control that will not be optimized.  I can attach an example, but it is very similar to Altenbach's code except the function is different, and I am trying to add additional parameters that are not optimized.  Thanks for any help.
    Kevin Baker 

    Thanks Trey.  I am sorry I didn't make it clear what I was talking about before.  I am attaching an example that will hopefully clarify what I would like to do.  When I try to pass the static reference to the Nonlinear Fit VI it says gives me a broken wire and says "function conflict".  I am assuming the problem is that I inserted another control to the VI when I wasn't supposed to.  I just don't know of any other way to pass data into the VI, and still have the Nonlinear Fit VI still work?  What is the "data" control in the Nonlinear Fit VI used for anyway?  It seems that that it was want I need, but I don't know how to use it?  Thanks again for any help.
    Attachments:
    Fit equation.vi ‏15 KB
    general lorentzian.vi ‏26 KB

  • Static VI reference

    When do people actually use the static VI reference?  It seems to me that it is only useful if you want to hardcode a vi reference with its location into the code.  I can only use it with the call by reference node.  Is the static VI reference useful elsewhere?  I know how to use it with the call by referene node when it is stictly typed, but when it is not strictly type, I don't know when to use it.
    Kudos and Accepted as Solution are welcome!

    tst wrote:
    I use it for two additional things:
    If I want to place a free running subVI into a subpanel or otherwise control it programmatically.
    If I want to generate reentrant copies of a VI. The static reference ensure that the VI is in memory (included in the build) and you can then use its name or path property to open the new reference.
    Number 2 for me as well.  This makes reentrant calls to dynamically called VIs work nicely in EXEs as well.  If I just reference a VI by name I need to be sure that that VI is in memory.  This use to mean include it in the build in an EXE, and then build the path to it (my.exe\reentrant.vi) and call it.  But this means I need to remember to add this to a build ever time I use this VI that calls the reentrant VI.  With the static reference, the calling VI knows that the reentrant VI is needed and a dependency so it will be included by the application builder.  Then when I need to call it I can get the name from the static reference it self, so again I don't even need to know the name of the VI.
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • Using Open VI Reference to run a VI, on an RT target, with sub-VIs not loaded

    I've been using Open VI Reference and Call By Reference Node to remotely run VIs on my RT controller.  I
    usually wire string data to the vi path input, but this
    requires the VI to be in memory.  I understand (from LabVIEW help) that I can wire a path to this terminal and specify a VI that is
    not in memory, but is on the disk.  NI has an example that
    confirms my understanding.  I get errors when I attempt to do the same
    with VIs that have sub-VIs; I suspect that the problem is that
    the sub-VIs aren't in memory and that the top-level vi doesn't know where to
    look for them (because the paths aren't specified).  All of the sub-VIs are on the RT system (in the same directory), they're just not in memory.
    Is there a way to get LabVIEW to look for sub-VIs on the disk?  I don't want to rely on using a startup application and rebooting to get my VIs into memory.
    Thank you,
    Jim Carmody
    Software Engineer
    G2 Technologies
    www.g2tek.com
    Jim
    You're entirely bonkers. But I'll tell you a secret. All the best people are. ~ Alice

    Hi Jim,
    It sounds like you are going about calling VIs remotely the correct way.  It would be very helpful if you could post the errors you are receiving.  I also wanted to know if you saw the note at the bottom of the article that says your VI library must contain everything your top level VI calls.
    Eric A.
    National Instruments
    Distributed I/O Product Support Engineer

  • Using Static Variable against Context Attribute for Holding IWDView

    Dear Friends,
    I have a method which is in another DC which has a parameter of the type IWDView. In my view, I will have an action which will call the method in another component by passing the value for the view parameter. Here, I can achieve this in 2 types. One is - I declare a static variable and assign the wdDoModifyView's view as parameter value and I can pass this variable as parameter whenever calling that method or the second way - create an attribute and assign the same wdDoModifyView's view parameter as its value. Whenever I call this method, I can pass this attribute as parameter. What is the difference between these two types of holding the value since I am storing the same value i.e., wdDoModifyView's view parameter. But when I trigger the action from different user sessions, the first type of code (using static variable) prints the same value in both the sessions for view.hashCode() and View.toString(), but the same is printing the different values when I pass the attribute which holds the view parameter.
    Clarification on this is highly appreciated
    The problem I face is when I use static variable to get the view instance and export the data using the UI element's id, the data belonging to different user sessions is mixed up where as when I use Context Attribute, the same problem doesn't arise. I want to know the reason why it is so. Is there any other place or way where I can get the current view instance of each session instead of wdDoModifyView?

    Hi Sujai ,
    As you have specified the problem that we face when we use  static attributes, when end users are using the application .
    Static means i  have n number of objects but the static variable value will remain same every where.
    when it is context attribute for every object i.e nth object you have a nth context attribute i mean nth copy of the context attribute.
    so every user has a unique Iview parameter , when context is used and
    when static is used  , assume you have userA , his iview is set this intially  and u have another user B , when he is using  , since the variable is static and when you access this variable you will get the value of userA.
    Regards
    Govardan Raj

  • Error while processing library references. Unresolved application library r

    Hi Experts,
    When i try to deploy .ear file in weblogic 11g server (linux 64-bit redhat OEL 5.46), I am facing following error.
    Please help me out to resolve it.
    Eror Message
    <May 6, 2011 7:32:40 PM IST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID '1304690560384' for task '8'. Error is: 'weblogic.management.DeploymentException: [J2EE:160149]Error while processing library references. Unresolved application library references, defined in weblogic-application.xml: [Extension-Name: org.apache.commons.httpclient, exact-match: false].'
    weblogic.management.DeploymentException: [J2EE:160149]Error while processing library references. Unresolved application library references, defined in weblogic-application.xml: [Extension-Name: org.apache.commons.httpclient, exact-match: false].
    at weblogic.application.internal.flow.CheckLibraryReferenceFlow.prepare(CheckLibraryReferenceFlow.java:26)
    at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:613)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:184)
    at weblogic.application.internal.EarDeployment.prepare(EarDeployment.java:58)
    Truncated. see log file for complete stacktrace
    >
    <May 6, 2011 7:44:58 PM IST> <Alert> <WebLogicServer> <BEA-000396> <Server shutdown has been requested by weblogic>
    <May 6, 2011 7:44:58 PM IST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FORCE_SUSPENDING>
    [JCABindingManager] : This operation is not supported for JCA based MDB
    <May 6, 2011 7:45:00 PM IST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to ADMIN>
    <May 6, 2011 7:45:00 PM IST> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to FORCE_SHUTTING_DOWN>
    <May 6, 2011 7:45:00 PM IST> <Notice> <Server> <BEA-002607> <Channel "Default[3]" listening on fe80:0:0:0:be30:5bff:fed3:5db0:8001 was shutdown.>
    <May 6, 2011 7:45:00 PM IST> <Notice> <Server> <BEA-002607> <Channel "Default[1]" listening on 10.108.26.246:8001 was shutdown.>
    <May 6, 2011 7:45:00 PM IST> <Notice> <Server> <BEA-002607> <Channel "Default[7]" listening on 0:0:0:0:0:0:0:1:8001 was shutdown.>
    <May 6, 2011 7:45:00 PM IST> <Notice> <Server> <BEA-002607> <Channel "Default[6]" listening on 127.0.0.1:8001 was shutdown.>
    <May 6, 2011 7:45:00 PM IST> <Notice> <Server> <BEA-002607> <Channel "Default[2]" listening on fe80:0:0:0:200:ff:fe00:0:8001 was shutdown.>
    <May 6, 2011 7:45:00 PM IST> <Notice> <Server> <BEA-002607> <Channel "Default" listening on 192.168.122.1:8001 was shutdown.>
    <May 6, 2011 7:45:00 PM IST> <Notice> <Server> <BEA-002607> <Channel "Default[4]" listening on fe80:0:0:0:fcff:ffff:feff:ffff:8001 was shutdown.>
    <May 6, 2011 7:45:01 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    <May 6, 2011 7:45:01 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    <May 6, 2011 7:45:01 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    <May 6, 2011 7:45:01 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    <May 6, 2011 7:45:01 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    <May 6, 2011 7:45:05 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    [TopLink Info]: 2011.05.06 19:45:06.235--ServerSession(255740887)--deferred_session logout successful
    [TopLink Info]: 2011.05.06 19:45:06.236--ServerSession(256131953)--tracking_session logout successful
    <May 6, 2011 7:45:06 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    <May 6, 2011 7:45:06 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    <May 6, 2011 7:45:06 PM IST> <Warning> <oracle.adf.share.ADFContext> <BEA-000000> <Automatically initializing a DefaultContext for getCurrent.
    Caller should ensure that a DefaultContext is proper for this use.
    Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
    This message may be avoided by performing initADFContext before using getCurrent().
    To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST>
    <May 6, 2011 7:45:09 PM> <FINEST> <NodeManager> <Waiting for the process to die: 20074>
    <May 6, 2011 7:45:09 PM> <INFO> <NodeManager> <Server was shut down normally>
    <May 6, 2011 7:45:09 PM> <FINEST> <NodeManager> <runMonitor returned, setting finished=true and notifying waiters>
    Thanks
    Phani

    George,
    To solve my problemn I uninstall my JDev, remove all folders (Oracle_home, and JDeveloper folder in users - app data - roaming). Install again, and get Webcenter Bundle from Help - Updates. Before a uninstall I was using a bundle that a have here in my machine.
    Thks

  • Error while processing library references. Unresolved application library

    Hi All,
    I created one ADF task-flow,in which I used content from share point, and then I converted portlets and deployed into integrated WLS server.and then I consumed thoese portlets into web-center spaces its working file.
    but i want to deploy those portlets into standalone server while deploying those I am getting following Errors. I am using 11.1.1.1.6 version for all my development.(Jdeveloper,webcenter and all).
    [07:48:08 PM] [Deployer:149193]Operation 'deploy' on application 'SP2010_application1' has failed on 'AdminServer'
    [07:48:08 PM] [Deployer:149034]An exception occurred for task [Deployer:149026]deploy application SP2010_application1 on AdminServer.: [J2EE:160149]Error while processing library references. Unresolved application library references, defined in weblogic-application.xml: [Extension-Name: oracle.webcenter.content.jcr.sharepoint, Specification-Version: 11.1.1, exact-match: false]..
    [07:48:08 PM] Weblogic Server Exception: weblogic.management.DeploymentException: [J2EE:160149]Error while processing library references. Unresolved application library references, defined in weblogic-application.xml: [Extension-Name: oracle.webcenter.content.jcr.sharepoint, Specification-Version: 11.1.1, exact-match: false].
    [07:48:08 PM] See server logs or server console for more details.
    [07:48:08 PM] weblogic.management.DeploymentException: [J2EE:160149]Error while processing library references. Unresolved application library references, defined in weblogic-application.xml: [Extension-Name: oracle.webcenter.content.jcr.sharepoint, Specification-Version: 11.1.1, exact-match: false].
    [07:48:08 PM] #### Deployment incomplete. ####
    [07:48:08 PM] Remote deployment failed (oracle.jdevimpl.deploy.common.Jsr88RemoteDeployer)
    please take a look into this. resolve me.
    regards
    Siva

    George,
    To solve my problemn I uninstall my JDev, remove all folders (Oracle_home, and JDeveloper folder in users - app data - roaming). Install again, and get Webcenter Bundle from Help - Updates. Before a uninstall I was using a bundle that a have here in my machine.
    Thks

  • Can PQA use a single reference frame against a test video stream?

    For R&D testing of video "set-top" devices I want to initiate some internal processing on our UUT, then using a PXI-1491 analyze the digital (HDMI) video output of the UUT for some large number of seconds (180 seconds or more for example).
    The video that is being analyzed will have static image content. The amount of time I want to analyze the test stream after doing some stuff on the UUT is variable, but I always anticipate it being fairly long.
    It currently appears that I have to have a reference stream that contains exactly the same number of frames as the test stream.
    This makes the reference vbf files very large. My test requirements include a large number of resolutions that must be tested through the UUT. Having an extensive library of very large vbf files is logistically difficult, it would much easier to maintain such a library made up of single "golden" frame reference files instead.  Additionally, since my analyze time needs to be variable depending on test setup and UUT processing options, it would be better for me to have a single golden reference frame and validate alot of test frames against it.
    Since the analyzed video will have static images, is it possible to run a test video stream against a single reference frame (reduced reference) instead of having a full reference stream frame by frame?
    Solved!
    Go to Solution.

    Doing exactly what you are asking is not within the design of PQA.  Of course, the best option that we would recommend when working with video test is a large capacity hard drive, probably in a RAID configuration for more space and better performance, and then just taking a golden reference with 10k frames, and doing what you originally suggested.  
    One method of achieving what you are looking for without using a large reference file is through offline processing.  This would allow you to acquire 10,000 consecutive frames, which I understand is one of your concerns, and then after the fact run them back through the analyzer.  You would still be performing a looping type of action in TestStand or LabVIEW.  The process would be:
    1) Acquire your source from your 1491 provider with no processors, and saving the media stream to disk.
    Loop:
    2) Load PQA with the disk buffer provider instead of the 1491, the disk buffer file will be the acquisition from above
    3) Point the start frame to your current location.
    4) Perform your processor with the results.
    5) Repeat and iterate to a new start frame location
    This process is going to be much slower as you load and unload resources every time.  If you choose to go this way, a better implementation would be to maybe consider doing 100 frames at a time, or some number larger than 1, because the processing time of handling the extra frames is going to be less than loading/unloading PQA.
    Your second option is going to require more work outside of PQA to implement custom functionality through a Custom User Processor.  Effectively this allows you to come up with a way to process incoming data in ways that you'd like.  To do this you will need:
    1) LabVIEW 2011 - Custom User Processors for PQA can only be developed in LabVIEW 2011.  If you are under a SSP agreement with NI and only have LabVIEW 2012 currently, you still have access to older versions.
    2) Vision Development Module - To perform your image processing
    3) An unencrypted video source - Due to limitations of HDCP we can not expose the raw video feed to user processors.
    In this user processor you would:
    1) Load your static image/frame in directly, you wouldn't need to use the Media Ref input
    Loop
    2) Load the current frame from the incoming video array
    3) Perform your video measurement with the Vision function, likely PNSR or SSIM since these are currently the only 2 referenced measurements in PQA.
    To learn more about Custom User Proessor's, in the PQA help check out: NI PQA Executive and the NI PQA Configuration Panel>NI PQA Tabs>Processors tab>Customizable Output Processors>User Processor  as well as: http://digital.ni.com/public.nsf/allkb/514058CC830D86EE86257881004CB45F
    Paul Davidson
    Sound and Vibration Software Staff Product Support Engineer
    National Instruments

  • How to reference a Planning Application in Workspace

    Hello,
    I've developped several Planning applications.
    But when I open workspace / Applications / Planning, (with an admin user)
    I only see one Planning application. So I want to know how to reference a Planning application in Workspace ??
    Thanks for your help
    Best regards

    Some details :
    My Planning applications seems to works correctly. Essbase is Okay. Shared services is okay too but the Workspace is out (and with it Financial Reporting Studio).
    Before that problem, In the configurator, I've deleted all Planning clusters except one (Default). I've selected Re-associate Clusters and Applications and I've successfully re-Associate all Planning Application to Default Cluster. Then I've Activated Cluster Default.
    But Anyway, Since I've deleted Planning Clusters my Workspace doesn't work anymore.
    I've a doubt: I've tried to redeploy Workspace (Configurator / Hyperion Foundation / Workspace / Deploy to Application Server and Configure web Server.
    It doesn't work because it says that Workspace already exists :p.
    Anyway I'm surprised about something : To access Workspace we use the 19000 port but In Configuration we I try to deploy it I see it is on the 45000 port. If I click on advanced / Setup a little window open "Set up Logical Address". And it is writtend Edit Default Cluster : gl-dev-budget : 45000 meanwhile when (still in Configurator) I open Planning / Manage Planning Cluster the server port is 8300 ??
    Is someone can helps me ?
    Thanks
    Best regards

  • Can I use static variable in EJB?

    Many books suggest developer don't use static variable in EJB,I want to know why?
    I know there isn't any problem if the static varibale is read only
    For writable static varible ,what will happen if I use a static Hashtable for share data
    Help me!Thank you very much!!

    Greetings,
    I know that "EJB business methods are not allowed to
    block on synchronized resources" Just where do you "know" that from?? The EJB 2.0 Specification, at least, is nowhere in agrement with this statement. If it comes from a book I would question the author's reasoning. Contractually, there's no sound basis for this. In the case of Session Beans, they have an expressedly direct and single-threaded association with a client. From a design viewpoint, it certainly seems unnecessary for a bean to "block" its one-and-only client, but to say that it "is not allowed to" do so is without merit. Entity Beans, on the other hand, are concurrently accessible. Yet, with regard to a transactional context being in effect, the container does indeed block on a bean's business methods. For the bean to do so itself is, therefore, unnecessary. Furthermore, the specification explicitly concedes that a "Bean Provider is typically an application domain expert" and "is not required to be an expert at system-level programming." (EJB 2.0 Spec. 3.1.1) From these statements alone it is reasonable to assume the above statement is meritless since the Bean Provider is not expected to even consider synchronization issues when developing a bean.
    But I'm mixed up why we could use "Hashtable" or otherApparently, because your sources are as well...
    collection classes in the EJB ,in these method many
    methods are synchronized In fact, not only "can we use" them but, with respect to multiple-row finders in Entity Beans we are [i]required to use them (or an iteration of them)! Not all Collection classes are synchronized (so called "heavy-weight collections"). As shown above, that the choice of a particular Collection class might be synchronized is of little consequence since a bean designed under strict adherence to the specification ensures that it is never concurrently writeable.
    Could someone provide a good way for this problem?
    Please Help Me!!!Regards,
    Tony "Vee Schade" Cook

  • Help, cannot set references to Photoshop.Application in VBA

    Hello,
    I have used CS5 in the past and have had a well-functioning VBA program (running within Access 2010) that ran fine, opens 32-bit Photoshop, and controlled photoshop CS5 normally, allowing me to manipulate photos, read metadata, etc.  (It was my understanding that at least for CS5, scripting programs including VBA needed to run the 32 bit version of Photoshop, not the 64 bit version.)
    I installed CS6 about 6 months ago and the VBA program continued to work just fine, provided it still opened the 32 bit version. (I had to be sure I was not running 64 bit Photoshop when I started the VBA program).  CS5 was still installed but not being used.
    I just uninstalled CS5, leaving CS6 installed.  For some reason, this left the VBA program disrupted in that the References (which you set in the VBA code window with Tools > References) no longer appear to be valid.  I am unable to set a new Reference to Photoshop.Application and the program has become unusable.  That is, the "Available References" no longer list Adobe Photoshop CS6 Type Library or Adobe Photoshop CS6 Object Library.  I browsed to the the file C:\Program Files\Adobe\Adobe Photoshop CS6 (64 Bit)\TypeLibrary.tlb to add this reference manually.  The programs still does not compile (i.e., Dim appRef As New Photoshop.Application  causes an error "User Defined Type not defined").  I get the same failure to compile if I browse to and install a reference to the 32-bit version, C:\Program Files (x86)\Adobe\Adobe Photoshop CS6\TypeLibrary.tlb.  In the past, I also had a reference to the "Adobe Photoshop CS6 Object Library".  I have tried to manually set this to C:\Program Files (x86)\Adobe\Adobe Photoshop CS6\Photoshop.exe or to the 64 bit version of Photoshop.exe, but these files are not accepted and I do not otherwise know the file location of the Object Library. 
    I very much need help from someone who knows how to fix this problem in transitioning from CS5 to CS6 for using VBA.
    Thank you,
    EGibbon

    There are global keys that get overwritten with each version of Photoshop. Photoshop.Application for example gets set for each install of Photoshop. When you uninstalled CS5 those keys got removed.
    Can you install CS6 again? You don't need to uninstall. Just install again if it will let you.
    I have a script that wil set them but I don't really like to use it on other folks machines as it messes with the registry and I don't want to make it worse for you.

Maybe you are looking for

  • Strange behavior of "Partial message encryption "  in OWSM

    Strange behavior of "Partial message encryption "  in OWSM If message format is like this <cban:transferFund xmlns:cban="http://cbank.com"> <cban:arg0>string</cban:arg0>    <cban:arg1>string</cban:arg1>    </cban:transferFund> Then body element confi

  • I've got an OS disk error?

    My OS needs reinstalled, due to a disk error. The error is (invalid directory item count) Can anyone elabarate on what that is exactly? Is there a way to fix that. Also my OS disk apparently can't be read, the disk drive seems to work it plays other

  • Select-option validation

    Hi, Can any body tell me the best option for validating the select-option field in selection  screen. suppose i have a select option s_lifnr on selection screen.how i can validate that vendor.we have to validate the range or we have to check for at l

  • Restore configuration failed to download from SFTP server

    Hi  I am trying to restore the fabric configuration and I am unable to connect to sftp server. I noticed the following error: Configuration failed for EPG oob due to Not Associated With Management Zone Any ideas?

  • How to stack waveform in one graph

    I am trying to stack 107 waveforms in one graph. I need to plot these to its depth (Y Axis is depth). That means the first wave will be plot at Y = 0, the next waveform will be plotted at Y = 0.1 (not 1). The third waveform will be plotted at Y = 0.2