Control LabVIEW from different application

I made an application that generates user requested amount of outputs and also takes parameters and IO controls from the user. It seems to me LabVIEW is a perfect tool for the user to do the screen layout. My question is once the layout is done, can I programmatically open the vi file and associate any of my outputs to the screen objects (for example an edit box or a channel of a graph etc.) and feed those screen objects with my data at run time? In other words, is there any APIs for LabVIEW so that I can go in to a vi file and interrogate its components’ properties and then getting or feeding values to/from those components during run time? Can it generate events when a user clicked on a button etc..?
Thanks in advance
Jian
Solved!
Go to Solution.

If it is just for displaying data in a way that the user can customise, I would reccommend you just stay with what you are familiar with. I mentioned a few posts ago that I know for a fact that you can #include a GUI panel resource into a C++ runtime application.
If you do want to run the viewer in LabVIEW, then unless each user is a skilled LabVIEW developer, you will need to run their uncoded VI through an intermediate or parsing LV application which will act as a bridge. This will need to be written in LabVIEW because a VI is saved in a format native to LabVIEW.
I might be able to make a demo on Monday, but for now an abstract description if anybody else wants a quick crack at it;
You could create an opc server (or another data sharing technique) on your data aquisition application, the LabVIEW bridge application will then be able to pull data in. 
The bridge application can dynamically get a list of controls from the user panel, and users will be able to tell the bridge what data to pull from the opc server and where to put it.
There will need to be data sanitising; checking imported data types are suitable for where the user wants to put them.
After finishing any configuration, the bridge app will continue to pull in data changes and drop it into the uncoded User Interface panel using the VI server nodes.
Jian, for now you can read up on LabVIEW introduction courses (link, link), and then search for info on the VI Server
- Cheers, Ed

Similar Messages

  • How can i use labview.tl​b to control Labview from an external applicatio​n?

    Hi,
    I've been told by a labview engineer that i could use the file
    labview.tlb located in the labview install folder to control labview
    from an external application (in my case, a C# app). I'm using Labview
    6.1 under Windows 2000. This article confirms that:
    "ActiveX and LabVIEW"
    http://zone.ni.com/devzone/conceptd.nsf/webmain/54​01BE584FBAEECE862567C2006D36C7?opendocument
    But i've not been able to find out how to use this file to achieve
    what i want. I just want to be able to open/close labview, open/close
    a vi, start/stop a vi, hide/show a vi from a C# application. The above
    web page talks about activex but i really don't see the realtion
    between activex and that labview.tlb file.
    Is there so
    mebody around who knows how to use that file? Why does NI
    tell us that it's possible to do what i want to do but doesn't explain
    how (or hides this info very well)?
    Thanks

    Hi,
    > Hi I am fighting a similar problem and so far I found this: Calling
    > LabVIEW from C++ Using ActiveX
    >
    > http://sine.ni.com/apps/we/niepd_web_display.DISPL​AY_EPD4?>p_guid=B45EACE3E21356A4E034080020E74861&p​_node=DZ52051&p_submitted=N&p_rank=&p>_answer=&p_s​ource=External
    Thanks for the link, i actually already found this link before. I've
    found yesterday how to use Labview.tlb, just add it to the references
    of the project, it was probably too easy for me at that time:-) But
    now, i'm still stuck as there is no doc about using the interfaces and
    classes of this activex to control labview.
    The example given on your link is made is C++ and for some reasons,
    the wrapper generated for Labview.tlb when i added it to my c# project
    doesn't seem to expose the same
    interfaces and classes as the one used
    in the C++ example. I therefore can't use the C++ example in C#.
    I've tried to do something like:
    LabVIEW.ApplicationClass a = new LabVIEW.ApplicationClass();
    Just this line causes labview to launch but then immediately throws an
    exception: "Query interface for interface LabVIEW._IApplication
    failed".
    Does somebody knows how to use that control in C#/VB.NET ?

  • How can I include a jsp file in other jsp from different applications?

              Hi,
              I'd like know if it´s possible to include jsp or servlet from different applications.
              

              Thanks Deepak but I think you don´t understand me.
              I would like the include works like a normal include. I have a jsp in my application
              and , when the client requests this jsp, in the jsp should be added the result
              of the other jsp ejecution that belong to other application in the same domain.
              Is this possible?
              Thank you very much.
              Deepak Vohra <[email protected]> wrote:
              > A Jsp from a different application is included with a relative url to
              >th=
              >e Jsp.
              ><%@ include file=3D"relative url" %>
              >
              >A Jsp could be included with request parameter.
              > <jsp:include page=3D'<%=3D request.getParameter("incFile") %>' />
              >
              >javilla wrote:
              >
              >> Hi,
              >>
              >> I'd like know if it=B4s possible to include jsp or servlet from differe=
              >nt applications.
              >
              

  • Accessing a variable from different application instance in fmis

    Hello everyone i like to know how to declare a global variable in FMS, so that i can access it from different application instance of a same application.
    Thank.

    Hi,
    In such a use case you can use persistent shared object to keep track of all connected users and the instances they are connected to. then when a user connects in application.xml you can check whether that user name and password is valid for a instance. This doc should help you get this achieved http://help.adobe.com/en_US/FlashMediaServer/3.5_Deving/WS5b3ccc516d4fbf351e63e3d11a0773d3 7a-7fff.html
    Thanks,
    Abhishek

  • Get the Cookie Value from Different Application Servers

    Hi All,
    I am using the two applications with different application servers. How to get the cookie values from one to another application. Shall i know any sample codes?
    Thanks
    Maalan

    A cookie carries a domain name. The browser will only return cookies whose domain matches to domain to which the request is made, however although you can use a partial domain name providing it's not too generic. So, when you add a cookie you need to explicitly set the domain name on the cookie to, for example, your company suffix like ".acme.com", then the cookie should be returned to all the servers under that domain e.g. server1.acme.com and server2.acme.com.

  • In a single program how to lookup different EJB from different application

    Hi,
    I have deployed two applications app1 and app2 on oc4j.
    There is a stateless session bean in a1 called ejb1.
    And there is also a stateless session bean ejb2 in app2.
    I write a test jsp in app1 to lookup ejb1 and ejb2 as an application client. So I need to create an application-client.xml for it.
    <?xml version="1.0"?>
    <!DOCTYPE application-client PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application Client 1.2//EN" "http://java.sun.com/j2ee/dtds/application-client_1_2.dtd">
    <application-client>
    <display-name>ejbs</display-name>
    <ejb-ref>
    <ejb-ref-name>ejb1</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <home>class_of_ejb1Home</home>
    <remote>class_of_ejb1</remote>
    </ejb-ref>
    <ejb-ref>
    <ejb-ref-name>ejb2</ejb-ref-name>
    <ejb-ref-type>ejb2</ejb-ref-type>
    <home>class_of_ejb2Home</home>
    <remote>class_of_ejb2</remote>
    </ejb-ref>
    </application-client>
    However, When I run the test.jsp, It will report following error:
    javax.naming.NamingException: Error reading application-client descriptor: No location specified and no suitable instance of the type 'class_of_ejb2' found for the ejb-ref ejb2
    In fact, if I only lookup any of the ejb and the application-client.xml just specify only the according ejb-ref, everything is alright.
    But how to construct the application-client.xml so that it can suitable for 2 different ejb in different application? Do I miss something in doing it?
    Kindly advice!
    Queeny Tang

    Hi Debabrata Panda,
    I did add parent in web.xml, but it still encounter
    "Error reading application-client descriptor: No location specified and no suitable instance of the type 'class_of_ejb2' found for the ejb-ref ejb2"
    In my program, a jsp in app2 will lookup ejb1 of app1. In the same way, a jsp in app1 will lookup ejb2 of app2.
    if I declare in server.xml
    <application name="app2" path="../applications/app2.ear" parent="app1" auto-start="true" />
    <application name="app1" path="../applications/app1.ear" parent="app2" auto-start="true" />
    That will cause error reading application-client.xml for all
    ejbs.
    How to solve this.
    Thanks in advance!
    Yours Queeny

  • How to call/show  page(s) from different application

    Hi All,
    I'm working on couple of applications and some reports (about 30) are used in all applications. I need your advice on doing this efficiently.
    Is it possible to
    1) Create a separate application with all the reports.
    2) Create a blank page with lists linking to all those reports on the same tab
    Now, is it possible to call that page in a "reports" tab of each application without prompting for login and still have rest of the tabs visible while the user is using the reports?
    Thanks in advance,
    Asha
    Edited by: ashapatil on Jul 29, 2010 1:54 PM
    Edited by: ashapatil on Jul 29, 2010 5:41 PM

    Asha,
    you can create links to call pages from other applications without any problem, just take a look at the structure of APEX URL over here: http://www.oracle-and-apex.com/apex-url-format/
    To avoid re-logins you could either disable security on your application (not recommended) or create a custom authentication scheme which takes logged in users from other applications as granted.
    brgds,
    Peter
    Blog: http://www.oracle-and-apex.com
    ApexLib: http://apexlib.oracleapex.info
    Work: http://www.click-click.at
    Training: http://www.click-click.at/apex-4-0-workshops

  • Combining data from different applications

    Dear all,
      I am using BPC 5.1
      I have a "Sales" application with dimensions "account", "entity", "time", "rptcurrency", "category", "product". And another "HR" application with the same dimensions as "Sales" except for "product".
      How do i create a report that combines data from both applications, assuming my dynamic template is opened with a current view of "Sales".
    Cheers

    Hi Lip,
    I just tried what you need and it worked fine.
    In your case, build a report say evdre, for HR application, and for the same sheet, change the current view to Sales and build one more evdre. You get a prompt saying one evdre may break while expanding other.Disable this prompt, belive me , it will work fine.
    The page key of HR application will have all dimensions refering to cvv of HR application, change it to refer to cvv of sales application( for only the dimensions both applications have in common).
    Now the report is dynamic with current view of Sales application.
    Hope this helps,
    Kranthi
    It took to long for me to reply:)
    Edited by: kranthi kumar on Sep 30, 2008 11:53 AM

  • Copying the Components from different applications

    Hi, 
                  I have a requirement where components should be copied from 1 application to another application. I cannot use export/import commands as it will overwrite the content in the second application. I want to achieve the similar functionality for which user copies pages/cartridges within application. Is there any way to do it?
    Regards,
    Aashish U S

    I think you can extract contents from both workbench by using emgr_update cmd and merged them locally (xml files) and import the desired content to workbench by using emgr_update cmd.   The challenging part would be merging the two content (XML) files,   depending on how complex your requirements, you might be just manually find/replace or you can write a program to merge them.
    Thanks,
    Meng

  • Building HTML page with JSP from different applications

              Hi,
              we need to build a HTML page with 2 JSPs. If both JSP were in the same Application
              (Weblogic 8,1) there is no problem. But I have to use JSPs from differents web
              applications, each JSP is in different war files.
              How can I compose this page? How can I management the request object?
              thanks
              

    Your program print the whole jsp source code??
    This is your web server configuration problem.
    Your web server handle your jsp page like text file only.

  • Endeca webservice call from different Application.

    I am trying to call the Endeca (v2.2.2) Webservice, using the client generated class file from the wsdl file (conversation.wsdl) and pass the query to get the result. Steps so far did
    •     Use apache cxf codegen plugin 2.7.0 to generate the client classes using the above wsdl.
    •     Written junit test case for client class and send the query to server. I can connect to the server but getting back the ConversationFault: Sequence has length 0 but must have length 1
    •     The only method I can use to call from the client is conversationPort.query(request), which is generated by cxf wd12java
    •     Following is the line of code from the client class
    ContentElementConfig config = new ContentElementConfig();
    config.setHandlerFunction("AS select max(p_common_date_epoch) as 'MaxDate' where Social_Media_Type = 'Twitter' group by interaction_author_username, interaction_text, interaction_link, Klout_Score, Followers_Count, DocumentSentiment, calculated_entity_sentiment, SalienceSentiment order by MaxDate desc, Followers_Count desc page (0,50)");
    Request request = new Request();
    request.setState(null);
    request.getContentElementConfig().add(config);
    Client Call: Results results = webServiceClient.readQueryResults(request); // this method internally calls conversationPort.query(request).
    Any thoughts or recommendation please advise.
    Edited by: user4993272 on May 9, 2013 10:57 AM

    Hi,
    i have two application take as App1 and App2 .i want to make a webservice call from App1 to App2 . through this webservice call i will pull the data from App2 and populate the data inside a .jspx file.
    i am not understanding how i will do that.
    A service wont allow you to access the live instance of an application and instead create its own data session. So while you can query data that belongs to App2, you wont be able e.g. to access a users uncommitted data changes
    Frank

  • How to access same ejb from different applications

    Hi
    I have two applications (.ear). Each application has 4 EJBs. These EJBs are same in both applications including their names. JNDI names are also same in each application.
    in detail
    ApplicationA (appA.ear) contains
    web1.war
    ejb1.jar
    ejb2.jar
    ejb3.jar
    ejb4.jar
    and
    ApplicationB (appB.ear) contains
    web2.war
    ejb1.jar
    ejb2.jar
    ejb3.jar
    ejb4.jar
    both web1.war and web2.war has same JNDI references to these EJBs.
    The problem:
    If you access the applicationA, works fine. But if you access applicationB, it throws ClassCast Exception
    After restarting.....
    If you access the applicationB, works fine. But if you access applicationA, it throws ClassCast Exception
    Both the applications are not working same time.
    I suspect that It is because both applications have same ejbs and with same JNDI names.
    Please validate.
    Thanks
    Srinivas

    Hi Timo,
    Very sorry for reply so late!
    My case is that accessing a task flow(MaintainJobInstanceTaskFlow) through NevigationBean of UI Shell. please see the coding as following:
    taskFlowId_SubNavigation =
    "/WEB-INF/oracle/apps/pas/shell/ui/flow/SystemSetupTabFlow.xml#SystemSetupTabFlow";
    taskFlowId_TaskListNavigation =
    "/WEB-INF/oracle/apps/pas/shell/ui/flow/SystemSetupTaskListFlow.xml#SystemSetupTaskListFlow";
    taskFlowId_QuickSearch =
    "/WEB-INF/oracle/apps/pas/shell/ui/flow/SystemSetupQuickSearchFlow.xml#SystemSetupQuickSearchFlow";
    taskFlowId_LocalArea =
    "/WEB-INF/oracle/apps/pas/transactions/ui/flow/MaintainJobInstanceTaskFlow.xml#MaintainJobInstanceTaskFlow";
    break;
    In my case, how to transfer parameters to MaintainJobInstanceTaskFlow in java?
    Thanks!
    Susan

  • Direct audio from different applications to different output sources

    Hi all.....I'm trying to play a movie in Quicktime on an external monitor while editing in Final Cut Pro. I want the audio from Quicktime to go through my external speakers (connected to the headphone jack) while having the audio from FCP go through the internal speakers on my laptop (Macbook Pro). That way my roommates can watch movies on my laptop through the external monitor while I'm editing, and not have to listen to my FCP audio in the background. Is there any way to do this?

    I don't know if they will work, but try WireTap by Ambrosia or Audio Hijack Pro by Rogue Amoeba.

  • How to control labview VI from a program not written in LabView on another computer?

    I am tasked with finding a way to control (an existing) LabView application (VI) from another computer (networked together) as part of a larger application which is not constructed in LabView (likely C# .Net Windows app).
    So, I am looking to find a solution that
    a) requires minimal change to the existing stand-alone LabView VI
    b) does not require LabView on the remote (controlling) computer.
    Controlling the LabView application involves communicating various setpoints etc, controlling start / stop, and getting back from the application some measured data values; could be treated as file transfer or data streams.
    Will it be fruitful to look into controlling the VI over TCP/IP? I gather that support exists in LabView for sending and receiving data over TCP connections. This approach would I guess require code to be added to the existing VI to handle commands and requests on the connection; simulating the ability to interact with the front panel.
    Are other options available? I see in the help pages mention of DataSockets and web services among other approaches.
    I am totally new to LabView, so all suggestions gratefully received, but please don't assume any knowledge of LabView.

    You can control LV from other applications using the ActiveX interface from VI Server. Since you want to do this from a remote machine, you would have to enable ActiveX-access using DCOM. This is a rather worksome efford and to my experience not really suggested.
    So i suggest you to define a TCP-based protocol for remote control of your dedicated application. This of course is only valid, if the application is already running on the "server". So your "client" connects, sends commands which are executed by the "server" and data and status information is sent back. And you are correct that this will require (significant) changes to the LV application.
    Web Services are also a valid approach if you can connect to web based applications. LabVIEW utilizes RESTful Web Services architecture. REST provides a lightweight
    protocol accessible to a wide variety of clients. The architecture does not
    require complex message parsing and provides a simple interface for you to begin
    using Web Services
    in LabVIEW.
    Other methods are possible, but i recommend you to pick one of those.
    hope this helps,
    Norbert
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

  • Controlling Labview with C#: error code -2147352571

    Hi,    
      I need to call LabVIEW and pass parameters to LabVIEW from C# so that I can use labview as a sort of "driver" to control my signal generator from C#.
    I found this tutorial for controlling LabVIEW from C#: http://zone.ni.com/devzone/cda/epd/p/id/3838
    It contains a C# project that calls a vi which acts as a calculator, parsing a string and computing an answer.
         I am trying to use this file as a base to work from by changing a few lines to make C# code that calls a different vi (the one that controlls my signal generator).
    I have attached both the Signal_Generator_Controller_For_Sentry_Testing.vi and the CallLV project that I modified and the origional from NI.
    I get this error when I click "Run vi" from the C# gui:   Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))
    If I click "view detail" from the "COMException was unhandled", I find that the error code is -2147352571. The error occurs at this line in the C# code:
    //Call the VI
    vi.Call(ref param1,ref param2);
         Here are the experiments I performed (that didn't solve the problem):
    Since the demo vi that NI made is contained in a llb file, I built a project that contained this vi, added an llb file to the project, and put Signal_Generator_Controller_For_Sentry_Testing.vi in the llb file.
    My vi is all inputs (the only output is the signal generator, which is not on the front pannel, obviously). I have tried changing the connector pane so that one of the connectors was an output.
    I have tried googling the error messages: there isn't anything specific enough to this problem (C# communicating with labview), the error message occurs in situations in multiple programming languages.
    I have tried passing the parameters "by val" rather than "by ref", but a different error occurs.
         Here is what I am able to deduce/ what I have noticed:
    The vi that NI created to demo communicating with C# "seems to be unable to leave run mode". When you call Labview from C#, the front pannel comes up and you cannot select the "stop button": it is grey. The Pause button doesn't stop exectution either. This makes me think that the vi was compiled in a different manner. I am more inclined to believe that teh vi is formated incorrectly rather than the C# code working improperly.
    The types of the two parameters, param1 and param2, going into the call statement  are "string" and "object" respectively. This is the same as with the NI code, which works fine. It is not an error with an incorrectly sized array parameter; that gives a different error message and I have fixed that problem. So, even though the error message says "type mismatch, I don't think that the input parameters to the Call function are incorrect.
       To Reproduce this error:
    I have Microsoft Visual C# Express 2008 Edition
    I am using Labview version 8.6
    In my version of the C# code, in this line: string vipath = @"C:\Program Files\National Instruments\LabVIEW 8.6\builds\Sentry_Test\Sentry.llb\Signal_Generator_Controller_For_Sentry_Testing.vi";
    You will have to change the directory to wherever you store the vi.
    You will need the "Labview" Library so that the C# line "using Labview" will work. I think it is downloaded by default either by labview or visual studio.
    In the C# file that NI created, you must add a fourth parameter '3' in  the line vi= lv.GetVIReference(vipath,"",true) as the last parameter. You get a compiler error otherwise. That was a mistake NI made.
    Thank you for the help.
    --Zach
    Attachments:
    CallLV_Zachs _Version.zip ‏126 KB
    callLV_NI_Version.zip ‏48 KB
    Signal_Generator_Controller_For_Sentry_Testing.vi ‏12 KB

    Zach,
    Unfortunately, I do have more of a knowledge
    of how to control objects using ActiveX in LabVIEW and not the other way
    around.  What ActiveX properties and methods are you using in your code and what are the input parameters that you are trying to pass?  You mentioned that you only have two input parameters, but the VI you posted has 3 inputs.  My guess would be that if you are indeed seeing a type mismatch, it is trying to pass an data type LabVIEW does not know what to do with.  This has been seen when trying to pass strings as Task data types (like the VISA Session).  
    ColeR
    Field Engineer

Maybe you are looking for

  • Mail Can be sent but is never delivered

    Hi, I was following the steps below to make it so a message can be received without a subject. After completing those steps I am running into an issue with my messages not getting to the recipient. If I send a message it acts as if it's been sent but

  • ISight only works when it's the ONLY firewire device?

    I have connected the iSight to both the firewire 400 and firewire 800 ports. It only works when it is the only device connected to the port. If I connect it to a hard drive, it works if and only if the hard drive is off. When I turn the drive on, the

  • Security.Couldn't resolve IP for host mailhost or for

    I want send email from Aplet I get error : Sending failed: security.Couldn't resolve IP for host mailhost or for This is my code Please help me import java.io.*; import java.util.*; import java.net.*; import java.awt.*; import sun.net.smtp.SmtpClient

  • Safari CSS caching bug

    I now have two clients that prefer to use Safari. The problem is that is appears that Safari has a really nasty habit of caching CSS files and not refreshing them. Anyone know of a workaround for that in Safari's settings or anything? -Darrel =======

  • Indesign CS2 system requirements

    I'm working on iMac G5 OS X 10.5.4 leopard with InDesign CS2 ME. But the application keep on quitting during certain functions such as exporting. After the reading of the application system requirements PDF, I've found that one of the requirements ar