|Publication number||US6874148 B1|
|Application number||US 09/594,226|
|Publication date||Mar 29, 2005|
|Filing date||Jun 14, 2000|
|Priority date||Jun 14, 2000|
|Publication number||09594226, 594226, US 6874148 B1, US 6874148B1, US-B1-6874148, US6874148 B1, US6874148B1|
|Inventors||Greg Richardson, Steve Rogers|
|Original Assignee||National Instruments Corporation|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (9), Non-Patent Citations (3), Referenced by (18), Classifications (13), Legal Events (4)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The present invention relates to the field of graphical programming, and more particularly to a system and method for enabling a program to call into graphical program code via a shared library.
Traditionally, high level text-based programming languages have been used by programmers in writing applications programs. Many different high level programming languages exist, including BASIC, C, FORTRAN, Pascal, COBOL, ADA, APL, etc. Programs written in these high level languages are translated to the machine language level by translators known as compilers or interpreters. The high level programming languages in this level, as well as the assembly language level, are referred to as text-based programming environments.
Increasingly computers are required to be used and programmed by those who are not highly trained in computer programming techniques. When traditional text-based programming environments are used, the user's programming skills and ability to interact with the computer system often become a limiting factor in the achievement of optimal utilization of the computer system.
There are numerous subtle complexities which a user must master before he can efficiently program a computer system in a text-based environment. The task of programming a computer system to model or implement a process often is further complicated by the fact that a sequence of mathematical formulas, mathematical steps or other procedures customarily used to conceptually model a process often does not closely correspond to the traditional text-based programming techniques used to program a computer system to model such a process. In other words, the requirement that a user program in a text-based programming environment places a level of abstraction between the user's conceptualization of the solution and the implementation of a method that accomplishes this solution in a computer program. Thus, a user often must substantially master different skills in order to both conceptually model a system and then to program a computer to model that system. Since a user often is not fully proficient in techniques for programming a computer system in a text-based environment to implement his model, the efficiency with which the computer system can be utilized to perform such modeling often is reduced.
Examples of fields in which computer systems are employed to model and/or control physical systems are the fields of instrumentation, process control, industrial automation, and simulation. Computer modeling or control of devices such as instruments or industrial automation hardware has become increasingly desirable in view of the increasing complexity and variety of instruments and devices available for use. However, due to the wide variety of possible testing/control situations and environments, and also the wide array of instruments or devices available, it is often necessary for a user to develop a program to control a desired system. As discussed above, computer programs used to control such systems had to be written in conventional text-based programming languages such as, for example, assembly language, C, FORTRAN, BASIC, or Pascal. Traditional users of these systems, however, often were not highly trained in programming techniques and, in addition, traditional text-based programming languages were not sufficiently intuitive to allow users to use these languages without training. Therefore, implementation of such systems frequently required the involvement of a programmer to write software for control and analysis of instrumentation or industrial automation data. Thus, development and maintenance of the software elements in these systems often proved to be difficult.
U.S. Pat. Nos. 4,901,221; 4,914,568; 5,291,587; 5,301,301; and 5,301,336; among others, to Kodosky et al disclose a graphical system and method for modeling a process, i.e., a graphical programming environment which enables a user to easily and intuitively model a process. The graphical programming environment disclosed in Kodosky et al can be considered the highest and most intuitive way in which to interact with a computer. A graphically based programming environment can be represented at a level above text-based high level programming languages such as C, Pascal, etc. The method disclosed in Kodosky et al allows a user to construct a diagram using a block diagram editor, such that the diagram created graphically displays a procedure or method for accomplishing a certain result, such as manipulating one or more input variables to produce one or more output variables. In response to the user constructing a data flow diagram or graphical program using the block diagram editor, data structures are automatically constructed which characterize an execution procedure which corresponds to the displayed procedure. The graphical program may be compiled or interpreted by a computer. Therefore, a user can create a computer program solely by using a graphically based programming environment. This graphically based programming environment may be used for creating virtual instrumentation systems, industrial automation systems, modeling processes, and simulation, as well as for any type of general programming.
Therefore, Kodosky et al teaches a graphical programming environment wherein a user places or manipulates icons in a block diagram using a block diagram editor to create a data flow “program.” A graphical program for controlling or modeling devices, such as instruments, processes or industrial automation hardware, may be referred to as a virtual instrument (VI). In creating a virtual instrument, a user may create a front panel or user interface panel. The front panel includes various user interface elements or front panel objects, such as controls or indicators, that represent or display the respective input and output that will be used by the graphical program or VI, and may include other icons which represent devices being controlled. The front panel may be comprised in a single window of user interface elements, or may comprise a plurality of individual windows each having a user interface element, wherein the individual windows may optionally be tiled together. When the controls and indicators are created in the front panel, corresponding icons or terminals may be automatically created in the block diagram by the block diagram editor. Alternatively, the user can place terminal icons in the block diagram which may cause the display of corresponding front panel objects in the front panel, either at edit time or later at run time. As another example, the front panel objects, e.g., the GUI, may be embedded in the block diagram.
During creation of the graphical program, the user may select various function nodes or icons that accomplish his desired result and connect the function nodes together. For example, the function nodes may be connected in a data flow or control flow format. The function nodes may be connected between the terminals of the respective controls and indicators. Thus the user may create or assemble a data flow program, referred to as a block diagram, representing the graphical data flow which accomplishes his desired process. The assembled graphical program may then be compiled or interpreted to produce machine language that accomplishes the desired method or process as shown in the block diagram.
A user may input data to a virtual instrument using front panel controls. This input data may propagate through the data flow block diagram or graphical program and appear as changes on the output indicators. In an instrumentation application, the front panel can be analogized to the front panel of an instrument. In an industrial automation application the front panel can be analogized to the MMI (Man Machine Interface) of a device. The user may adjust the controls on the front panel to affect the input and view the output on the respective indicators. Alternatively, the front panel may be used merely to view the input and output, and the input may not be interactively manipulable by the user during program execution.
Thus, graphical programming has become a powerful tool available to programmers. Graphical programming environments such as the National Instruments LabVIEW product have become very popular. Tools such as LabVIEW have greatly increased the productivity of programmers, and increasing numbers of programmers are using graphical programming environments to develop their software applications. In particular, graphical programming tools are being used for test and measurement, data acquisition, process control, man machine interface (MMI), supervisory control and data acquisition (SCADA) applications, simulation, and machine vision applications, among others.
As the use of graphical programming has increased, it has become more important to enable graphical programs to interface with other types of executable code. One common way for interfacing between different portions of executable code is to use a standard shared library. Many computing platforms support standard shared libraries. For example, the Windows platform supports Dynamic Link Libraries (DLLs), the Unix platform supports Shared Libraries, and the Macintosh platform supports Code Fragments. Many programming environments, including text-based programming environments, support the creation and use of these types of standard shared libraries.
Some current graphical programming environments provide a node for calling a standard shared library from within a graphical program. In this way, graphical programs can utilize other types of executable code, including code created from a text-based programming language. However, it is often desirable to provide the reverse functionality, in which another program can call into a graphical program using a shared library. Previous approaches to enabling graphical programs to be called using shared libraries suffer from various drawbacks. For example, one approach in current use for the Windows platform is to create a DLL that has entry points that call a graphical program indirectly by interfacing with an ActiveX out-of-process server, where this ActiveX server is operable to invoke the desired graphical program. However, calling a graphical program using this method may be inefficient, since a process switch is involved. Also, this approach may require programmers to understand various aspects of the ActiveX framework. Thus, it may be desirable to enable programmers to call into graphical program code more easily and efficiently.
The problems outlined above may in large part be solved by a system and method for enabling a program to call into graphical program code via a shared library. A user may utilize a graphical programming system to create a graphical program and may then export this graphical program to a shared library. The graphical programming system may support the creation of any of various types of shared libraries, such as a Windows Dynamic Link Library (DLL), a Unix or Linux Shared Library, a Macintosh Code Fragment, etc. A program enabled to interface with the type of shared library created by the graphical programming system may then use the shared library to call into the graphical program. For example, the graphical programming system may create a Windows DLL, and a text-based C program running on the Windows environment may load and use the DLL.
Graphical programs or subprograms may have associated inputs or outputs of various data types. When creating a shared library from a graphical program, a functional interface specifying parameterized versions of these inputs and outputs may be specified, either automatically or interactively. A program may then utilize this functional interface to construct an appropriate call into the shared library. For example, for a graphical program with an integer input and an integer output, a C-style functional interface may be specified, such as:
A user may specify multiple graphical programs or subprograms to export to a shared library. The shared library may include an entry point function associated with each graphical program or subprogram. When a program calls into the entry point associated with a particular graphical program, the entry point function may manipulate or copy the parameters passed by the calling program. For example, a graphical program may represent or store a particular data type differently than the calling program or the shared library specification. Thus, the entry point function may perform any necessary operations to transform the parameter into the format expected by the graphical program. The entry point function may also copy parameters into a location expected by the graphical program, such as a parameter table associated with the graphical program.
The entry point function may then call into the graphical program code. In one embodiment, a runtime execution system associated with the graphical programming system used to create the shared library may manage the execution of the graphical program code.
Thus, the present invention allows a graphical program to be exported to a shared library, thereby enabling any program able to access a shared library to be able to access a graphical program through a shared library.
A better understanding of the present invention can be obtained when the following detailed description of the preferred embodiment is considered in conjunction with the following drawings, in which:
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and are herein described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.
FIGS. 1A and 1B—Instrumentation and Industrial Automation Systems
The host computer 102 may execute a graphical program which interacts with or controls the one or more instruments. The one or more instruments may include a GPIB instrument 112 and associated GPIB interface card 122, a data acquisition board 114 and associated signal conditioning circuitry 124, a VXI instrument 116, a PXI instrument 118, a video device 132 and associated image acquisition card 134, a motion control device 136 and associated motion control interface card 138, and/or one or more computer based instrument cards 142, among other types of devices.
The GPIB instrument 112 is coupled to the computer 102 via the GPIB interface card 122 provided by the computer 102. In a similar manner, the video device 132 is coupled to the computer 102 via the image acquisition card 134, and the motion control device 136 is coupled to the computer 102 through the motion control interface card 138. The data acquisition board 114 is coupled to the computer 102, and may interface through signal conditioning circuitry 124 to the UUT. The signal conditioning circuitry 124 preferably comprises an SCXI (Signal Conditioning eXtensions for Instrumentation) chassis comprising one or more SCXI modules 126.
The GPIB card 122, the image acquisition card 134, the motion control interface card 138, and the DAQ card 114 are typically plugged in to an I/O slot in the computer 102, such as a PCI bus slot, a PC Card slot, or an ISA, EISA or MicroChannel bus slot provided by the computer 102. However, these cards 122, 134, 138 and 114 are shown external to computer 102 for illustrative purposes.
The VXI chassis or instrument 116 is coupled to the computer 102 via a VXI bus, MXI bus, or other serial or parallel bus provided by the computer 102. The computer 102 preferably includes VXI interface logic, such as a VXI, MXI or GPIB interface card (not shown), which interfaces to the VXI chassis 116. The PXI chassis or instrument is preferably coupled to the computer 102 through the computer's PCI bus.
A serial instrument (not shown) may also be coupled to the computer 102 through a serial port, such as an RS-232 port, USB (Universal Serial bus) or IEEE 1394 or 1394.2 bus, provided by the computer 102. In typical instrumentation control systems an instrument will not be present of each interface type, and in fact many systems may only have one or more instruments of a single interface type, such as only GPIB instruments.
The instruments are coupled to the unit under test (UUT) or process 150, or are coupled to receive field signals, typically generated by transducers. The system 100 may be used in a data acquisition and control application, in a test and measurement application, a process control application, or a man-machine interface application.
The one or more devices may include a data acquisition board 114 and associated signal conditioning circuitry 124, a PXI instrument 118, a video device 132 and associated image acquisition card 134, a motion control device 136 and associated motion control interface card 138, a fieldbus device 170 and associated fieldbus interface card 172, a PLC (Programmable Logic Controller) 176, a serial instrument 182 and associated serial interface card 184, or a distributed data acquisition system, such as the Fieldpoint system available from National Instruments, among other types of devices.
The DAQ card 114, the PXI chassis 118, the video device 132, and the image acquisition card 136 are preferably connected to the computer 102 as described above. The serial instrument 182 is coupled to the computer 102 through a serial interface card 184, or through a serial port, such as an RS-232 port, provided by the computer 102. The PLC 176 couples to the computer 102 through a serial port, Ethernet port, or a proprietary interface. The fieldbus interface card 172 is preferably comprised in the computer 102 and interfaces through a fieldbus network to one or more fieldbus devices. Each of the DAQ card 114, the serial card 184, the fieldbus card 172, the image acquisition card 134, and the motion control card 138 are typically plugged in to an I/O slot in the computer 102 as described above. However, these cards 114, 184, 172, 134, and 138 are shown external to computer 102 for illustrative purposes. In typical industrial automation systems a device will not be present of each interface type, and in fact many systems may only have one or more devices of a single interface type, such as only PLCs. The devices are coupled to the device or process 150.
Referring again to
In addition, the memory medium may be located in a first computer in which the shared library is stored or executed, or may be located in a second different computer which connects to the first computer over a network, such as the Internet. In the latter instance, the second computer provides the program instructions to the first computer for execution. Also, the computer system 102 may take various forms, including a personal computer system, mainframe computer system, workstation, network appliance, Internet appliance, personal digital assistant (PDA), television set-top box, or other device. In general, the term “computer system” can be broadly defined to encompass any device having at least one processor which executes instructions from a memory medium.
In one embodiment, graphical program code that is included in a shared library as described herein may be designed for data acquisition/generation, analysis, and/or display, and for controlling or modeling instrumentation or industrial automation hardware. In a similar manner, a software program which calls the shared library may perform similar applications. For example, in one embodiment, the graphical program code may be created using the National Instruments LabVIEW graphical programming environment application, which provides specialized support for developers of instrumentation and industrial automation applications. However, it is noted that the present invention can be used for a plethora of applications and is not limited to instrumentation or industrial automation applications. In other words,
FIG. 2—Computer System Block Diagram
The computer 102 includes at least one central processing unit or CPU 160 which is coupled to a processor or host bus 162. The CPU 160 may be any of various types, including an x86 processor, e.g., a Pentium class, a PowerPC processor, a CPU from the SPARC family of RISC processors, as well as others. Main memory 166 is coupled to the host bus 162 by means of memory controller 164. The main memory 166 may store one or more computer programs or libraries according to the present invention. The main memory 166 also stores operating system software as well as the software for operation of the computer system, as well known to those skilled in the art.
The host bus 162 is coupled to an expansion or input/output bus 170 by means of a bus controller 168 or bus bridge logic. The expansion bus 170 is preferably the PCI (Peripheral Component Interconnect) expansion bus, although other bus types can be used. The expansion bus 170 includes slots for various devices such as the data acquisition board 114 (of FIG. 1A), a GPIB interface card 122 which provides a GPIB bus interface to the GPIB instrument 112 (of FIG. 2A), and a VXI or MXI bus card 186 coupled to the VXI chassis 116 for receiving VXI instruments. The computer 102 further comprises a video display subsystem 180 and hard drive 182 coupled to the expansion bus 170.
FIG. 3A—Creating a Shared Library Including Graphical Program Code
In step 202, the user may specify the desired functional interface for the shared library entry point function for the graphical program code. A graphical program may have an associated set of inputs and outputs. In step 202, the user may map these inputs and outputs to entry point function parameters. For example,
However, if a graphical program is called through a shared library, the input values may be specified by parameters that the calling program passes to the shared library entry point function for the graphical program. Similarly, the output values for the graphical program may be written to output parameters that are passed by the calling program. In step 202, the user may define a functional interface specifying the desired mapping of the graphical program inputs/outputs to entry point function parameters. The user interface of
The functional interface may be constructed or formatted in any way appropriate for a particular type of shared library. For example, for a DLL, a C-style functional interface may be specified. For example, an appropriate functional interface for the graphical program of
In step 204, the graphical programming system creates a shared library that includes the graphical program code, in response to a request by the user. The shared library may include an entry point function created according to the functional interface specified in step 202. As described below, a program may call into the graphical program code via the entry point function.
As described above, the user may choose multiple graphical programs, including graphical subprograms, to be exported. In one embodiment, a single shared library including the code for each graphical program is created. In another embodiment, the user may specify multiple shared libraries to generate and may specify how to distribute the graphical programs among these shared libraries.
It is noted that portions of the graphical program that are not necessary for operation when the graphical program is called from a shared library may be omitted from the library. For example, in many graphical programming systems, various resources or other information may be stored or wrapped in a single graphical program project or file. In the preferred embodiment, only executable code or other resources necessary for program execution are included in the shared library. Thus, in the example of
FIG. 3B—Using a Shared Library Including Graphical Program Code
In step 208, the entry point function called in step 206 may manipulate input parameters into appropriate data types or formats expected by the graphical program code and/or may copy input parameters into locations expected by the graphical program code. Step 208 is discussed in more detail below.
In step 210, the entry point function may call the graphical program code. As shown in step 212, the graphical program code then executes. The entry point function for the graphical program code preferably performs all necessary measures, such as transforming data types, etc., to enable the graphical program code to execute just as if running as a standalone program and receiving input values via an associated user interface panel.
Once the graphical program code returns, the entry point function may copy any resulting output values from locations where they are stored by the graphical program code to the output parameters passed by the calling program. Similarly as described above, the entry point function may perform any necessary translations to the data in order to change it from a type or format produced by the graphical program to a type or format appropriate for the output parameters.
As noted above,
For example, steps 208 and 210 of
As another example, step 202 is described in terms of the user specifying a functional interface for the entry point function that calls the graphical program. In one embodiment, a default functional interface may be automatically provided, based on the inputs and outputs of the graphical program, and it may not be necessary to change this provided functional interface.
As another example,
FIG. 6—Specifying a Functional Interface
In step 220, the user may specify a name for the entry point function. The name may need to adhere to particular naming conventions. For example, for a DLL entry point, the name may need to be a legal C identifier. A function name field is illustrated in
In step 222, the user may define parameters for the entry point function. These parameters may appear in a parameter list, as shown in FIG. 7. Using the
In addition to defining the parameters, the user may also specify the graphical input and/or output that the parameter corresponds to, the data type of the parameter, and other information for each parameter. In the
In step 224, the user selects a particular parameter from the list, e.g., by clicking on the parameter. In response, the “Current Parameter” information is updated to display the information for the selected parameter, as shown in step 226. The user may then update the information as desired. As described above, each parameter in the parameter list is associated with an input and/or output to the graphical program. In step 228, the user specifies this association. Step 228 may involve specifying a parameter type for the selected parameter. For example,
The valid settings for various parameter information fields may depend on settings of other fields. The user interface preferably automatically updates the fields when possible and prevents the user from choosing invalid values. For example, in
If the parameter is specified to be an input/output parameter, then the user interface may allow the user to select both a graphical program input and an output to associate the parameter with. However, since the input and output need to be of the same type, the user interface may slave the output selection to the input selection, such that only outputs of the same type as the selected input are displayed. If there are no graphical program inputs and outputs of the same type, then the user interface may prevent the user from specifying that a parameter is an input/output parameter.
In various embodiments, graphical programs may utilize inputs or outputs that do not map directly to the data types of parameters passed in to a shared library by a calling program. For example, in one embodiment, a graphical program may store a string as a handle. However, other programming environments, such as text-based programming environments, generally represent strings differently, e.g., as C-strings or Pascal-strings. The user interface may thus allow the user to specify various criteria that can be used to massage the parameter passed by the calling program into the appropriate format for use by the graphical program. In step 230, the user may specify this mapping criteria.
When the graphical programming system generates the shared library, the library may be generated with an entry point function that handles any necessary data type mapping. (As noted above, in some embodiments, this type of data type mapping may not be necessary.) The entry point function has both knowledge of the parameter data type passed in by the calling program and knowledge of the data type expected by the graphical program. Thus the entry point function is constructed in such a way as to perform the appropriate mapping. The entry point function may use information specified by the user, such as the CStr option described above, in determining how to perform the mapping. For other situations, parameters of a certain data type may always be mapped to graphical program data types in a particular way, such that the user need not specify additional mapping information.
In addition to the string data type transformation example discussed above, any of various other types of data type transformations may be performed. As one example, in one embodiment, a graphical programming system is operable to generate entry point functions that map ActiveX data types to or from data types native to the graphical programming system. For example, an ActiveX variant data type may be converted to a variant data type proprietary to the graphical programming system. As another example, the use of array data types may involve data type transformation. Similarly as in the string example above, arrays may be passed from external programs using different representations, e.g., as a handle to the array or as a pointer to the array data. As another example, the entry point function may convert between numeric data types, e.g., converting a floating point parameter to an integer data type.
In addition to transforming data types as required, an entry point function may also perform other actions, such as copying the input parameter values to a location expected by the graphical program or allocating output storage in a location expected by the graphical program. For example, in one embodiment, graphical programs utilize a “parameter table”, that is a memory area that stores the inputs and outputs of a graphical program. The entry point function may thus initialize the parameter table for the graphical program before the graphical program executes. Input/output initialization may be performed in any of various ways, depending on how a particular graphical programming system and a particular type of shared library represent or store parameter data.
As noted above,
As another example of a variation of the above description, the graphical programming environment may be operable to automatically provide a default functional interface, based on the graphical program inputs and outputs or based on a template defined by the user. Thus, the user may not need to manually define the list of parameters and can simply change this default functional interface as desired.
The graphical programming environment may support other features in addition to those described above. For example, the user interface of
FIGS. 8-9: Creating a Shared Library
Once the desired functional interface for a graphical program has been determined, a shared library usable to call into the graphical program code may be created, as performed in step 204 of FIG. 3A.
In various graphical programming systems, the graphical program 302 shown in
Such additional information necessary for program execution may include one or more user interface panels. The graphical programming system may attempt to automatically detect whether the user interface panel(s) associated with a graphical program file are used by the exported program, and thus whether the panel information should be included in the shared library. However, in some cases it may not be possible to detect the user interface panel usage, e.g., if the graphical programming system supports runtime specification and loading of user interface panels. Thus, the system may determine which user interface panel(s) to include by default, but may enable the user to override or change these choices.
As described above, when a program calls into the graphical program code via a shared library, the program may call into an entry point function, and this entry point function may perform any necessary modification or copying of parameters and may then invoke the graphical program code. Block 300 of
As shown in
As shown, the shared library may also include length information 306 at the end. The length information 306 may specify the length of the entry point executable code 300, enabling the beginning of the graphical program executable code 304 to be located.
FIG. 10—Runtime Execution
In various embodiments, the execution of a graphical program invoked via a shared library may be managed by a runtime execution system associated with the graphical programming system used to create the shared library.
As shown in step 404 of
In the preferred embodiment, the shared library includes an initialization routine that the operating system is enabled to call when the shared library is loaded. This initialization routine may locate the graphical program code in the shared library, using the length information described above with reference to FIG. 8. The initialization routine may also interface with the runtime execution system to prepare for running the graphical program(s) included in the shared library, e.g., by pre-loading the graphical program(s). Thus, when a runtime call into the shared library is received, the referenced graphical program may be loaded and ready to run.
In step 406, the runtime system manages the execution of the referenced graphical program. Step 406 may be implemented in various ways, depending on the particular graphical programming system. For example, the graphical programming system may utilize a “scheduling” execution model in which various code blocks are scheduled for execution. Thus, the referenced graphical program may first be scheduled or queued and may then be run. During execution, the graphical program may call into runtime libraries provided by the runtime execution system.
Although the embodiments above have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5146593 *||Mar 6, 1989||Sep 8, 1992||International Business Machines Corporation||Procedure call interface|
|US5163130 *||May 5, 1992||Nov 10, 1992||Next Computer, Inc.||System and method for configuring a graphic interface|
|US5860004 *||Jul 3, 1996||Jan 12, 1999||Sun Microsystems, Inc.||Code generator for applications in distributed object systems|
|US5883639 *||Jul 3, 1997||Mar 16, 1999||Hewlett-Packard Company||Visual software engineering system and method for developing visual prototypes and for connecting user code to them|
|US6064812||Mar 4, 1997||May 16, 2000||National Instruments Corporation||System and method for developing automation clients using a graphical data flow program|
|US6102965||Aug 21, 1997||Aug 15, 2000||National Instruments Corporation||System and method for providing client/server access to graphical programs|
|US6189138 *||Sep 21, 1999||Feb 13, 2001||Sun Microsystems, Inc.||Visual composition tool for constructing application programs using distributed objects on a distributed object network|
|US6351778 *||Nov 5, 1998||Feb 26, 2002||Object Technology Licensing Corporation||Object-oriented operating system|
|US6389588 *||Feb 4, 1999||May 14, 2002||Relativity Technologies||Method and system of business rule extraction from existing applications for integration into new applications|
|1||LabVIEW Code Interface Reference Manual, Dec. 1993.|
|2||LabVIEW Function Reference Manual, Aug. 1993 Edition, pp 10-11 and 10-12.|
|3||*||Munro, Writing DLLs for Windows using Visual Basic, part 1, PC Magazine, v11, n11,p. 379(6).*|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US7093267 *||Jul 19, 2002||Aug 15, 2006||Microsoft Corporation||Hosting controls in a window via an interface for controlling the window|
|US7428737 *||Dec 1, 2003||Sep 23, 2008||The Mathworks, Inc.||Method for using header files to call a shared library from a dynamic environment|
|US7690007 *||Oct 28, 2004||Mar 30, 2010||Nokia Corporation||Mapping of dynamic link libraries in a computing device|
|US7730496||Jun 21, 2006||Jun 1, 2010||Microsoft Corporation||Hosting controls in a window via an interface for controlling the window|
|US7865349 *||Jan 18, 2002||Jan 4, 2011||National Instruments Corporation||Simulation, measurement and/or control system and method with coordinated timing|
|US8713540 *||Jul 29, 2010||Apr 29, 2014||National Instruments Corporation||Generating and modifying textual code interfaces from graphical programs|
|US9195502 *||Jun 29, 2012||Nov 24, 2015||International Business Machines Corporation||Auto detecting shared libraries and creating a virtual scope repository|
|US9195503 *||May 24, 2013||Nov 24, 2015||International Business Machines Corporation||Auto detecting shared libraries and creating a virtual scope repository|
|US20020111783 *||Jan 18, 2002||Aug 15, 2002||Kodosky Jeffrey L.||Simulation, measurement and/or control system and method with coordinated timing|
|US20020191022 *||Jul 19, 2002||Dec 19, 2002||Microsoft Corporation||Hosting controls in a window via an interface for controlling the window|
|US20040135808 *||Dec 29, 2003||Jul 15, 2004||Fanuc Ltd.||Numerical controller|
|US20060238816 *||Jun 21, 2006||Oct 26, 2006||Microsoft Corporation||Hosting controls in a window via an interface for controlling the window|
|US20070220508 *||Oct 28, 2004||Sep 20, 2007||Symbain Software Limited||Mapping of Dynamic Link Libraries in a Computing Device|
|US20090249312 *||Jun 9, 2006||Oct 1, 2009||Shenzhen Donjin Communication Tech Co., Ltd.||Process Generation Approach and System for an Integrated Telecom Platform|
|US20110004589 *||Jul 6, 2009||Jan 6, 2011||Rockwell Automation Technologies, Inc.||Diagnostics in a distributed directory system|
|US20120030655 *||Feb 2, 2012||De Castillo Alejandro||Generating and Modifying Textual Code Interfaces from Graphical Programs|
|US20140007104 *||Jun 29, 2012||Jan 2, 2014||International Business Machines Corporation||Auto Detecting Shared Libraries and Creating A Virtual Scope Repository|
|US20140007125 *||May 24, 2013||Jan 2, 2014||International Business Machines Corporation||Auto Detecting Shared Libraries and Creating A Virtual Scope Repository|
|U.S. Classification||719/328, 719/331, 717/107, 712/E09.083|
|International Classification||G06F9/44, G06F9/46, G06F13/00, G06F3/00, G06F9/42|
|Cooperative Classification||G06F9/4426, G06F8/34|
|European Classification||G06F8/34, G06F9/44F1A1|
|Jun 14, 2000||AS||Assignment|
Owner name: NATIONAL INSTRUMENTS CORPORATION, TEXAS
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RICHARDSON, GREG;ROGERS, STEVE;REEL/FRAME:010866/0071
Effective date: 20000612
|Apr 4, 2008||FPAY||Fee payment|
Year of fee payment: 4
|Sep 7, 2012||FPAY||Fee payment|
Year of fee payment: 8
|Aug 29, 2016||FPAY||Fee payment|
Year of fee payment: 12