The illustrative embodiment of the present invention relates generally to the building of graphical instrument panels, and more particularly to the building of a software-based instrument panel controlled by a textual language program in which the panel components correspond directly with sections of code in the program.
Software virtual instruments frequently include a front or instrument panel GUI that accepts user input for the virtual instrument. The front panel provides a graphical representation of input and output variables provided to the virtual instrument. The virtual instruments frequently also include a block diagram connected to the front panel which provides visual representations of a procedure in which displayed input values taken from the front panel can produce a corresponding value for an output variable in the front panel. The virtual instrument may have a hierarchical construction which includes additional virtual instruments.
An example of a type of conventional instrument panel is LABVIEW from National Instruments of Austin, Tex. LABVIEW is a graphical development environment for signal acquisition, measurement analysis and data presentation. Users utilizing the application are able to construct virtual instruments with front instrument panels. LABVIEW provides two components for a virtual instrument, a graphical instrument panel and a data flow diagram. Components in the front panel are connected to the input and output of the data flow diagram. The data flow diagram is compiled into executable code. The results from the execution of the code are provided back to the user through the front panel. There is no programming corresponding directly to the component in the front panel without the use of the data flow diagram.
Another example of conventional software-based graphical instrument panels may be found in VISUAL BASIC from Microsoft Corporation of Redmond, Wash. Visual Basic is a visual interface design package to which a programmer attaches snippets of code for callbacks. Callbacks are registrations in which a software entity/process requests notification upon the occurrence of a designated event occurring. Upon detection of the event, and a subsequent notification, a previously specified execution of programming occurs. For example, a function may be executed upon the occurrence of a particular event.
Unfortunately, both of these conventional methods of setting up software-based graphical instrument panels suffer from several drawbacks. The front panels that are connected to data flow diagrams are dependent on the data flow diagram to perform information processing. Since data flow diagrams are difficult to program for complex computational operations, this limits their effectiveness. Similarly, callback programming is particularly difficult to use when setting up continuously running (multi-component) panels that operate and interface in real-time. The difficulty arises from performing the callbacks required by the multiple components in real-time.
The illustrative embodiment of the present invention provides a mechanism for constructing a software-based instrument panel or front panel in which the components correspond directly with sections of code in a textual language program. The textual language program relates to how the panel updates and operates in a continuous fashion. Icons representing panel components are selected from a component library window displayed to a user. The act of dragging the icon representing the components into the Graphical Panel Layout Window automatically causes the corresponding code to be added to the textual language program and displayed to the user in a Program Dialog Window. The present invention displays both a Graphical Panel Layout Window showing the components or a graphical representation of the components in the instrument panel and a Program Dialog Window showing the lines of code for the textual language program controlling the operation of the components in the instrument panel. A library containing I/O dialog devices may also be presented and displayed to a user. The selection by the user of an I/O device icon and the subsequent dragging of the icon into either the Graphical Panel Layout Window or the Program Dialog Window causes the associated lines of code to appear in the Program Dialog Window. Panel properties for the components and I/O devices in the Graphical Panel Layout window may be directly set by the user. Each of the components and I/O devices displayed in the panel layout window correspond directly to the associated section of code in the Program Dialog Window.
In one embodiment, a system for building instrument panels includes a graphical user interface (GUI) for rendering and placing components on the instrument panel. The GUI displays the instrument panel in a layout window to a user. The system also includes a textual language program. The textual language program is associated with the instrument panel and includes code for the execution of the components in the instrument panel with at least one component on the instrument panel directly corresponding with a section of the code in the program. The program runs in a continuous mode during execution.
In another embodiment, in a computational device a method of building instrument panels includes the steps of providing a graphical user interface (GUI) for rendering and placing components on the instrument panel. The GUI displays the instrument panel in a layout window to the user. The method also includes the step of associating a textual language program with the instrument panel. The textual language program includes code for the execution of the components in the instrument panel with at least one component on the instrument panel directly corresponding with a section of the code in the textual language program. The method further includes the step of displaying multiple icons representing components in a library that may be placed in the instrument panel which runs continuously during execution of the program.
In an embodiment, a system for building instrument panels includes a graphical user interface (GUI) for rendering and placing components on the instrument panel. The GUI displays the instrument panel in a layout window to a user. The system also includes a textual language program. The textual language program is associated with the instrument panel and includes code for the execution of the components in the instrument panel with at least one component on the instrument panel directly corresponding directly with a section of the code in the program which runs in a continuous mode of operation during execution.
In an additional embodiment, a system for building front panels for a virtual instrument includes a graphical panel building application. The graphical panel building application generates a graphical user interface (GUI) for rendering and placing components on a front panel for a virtual instrument. The GUI displays the front panel in a layout window to a user. The system also includes at least one of a collection of data structures holding components that are placed in the front panel and a collection of data structures holding I/O devices that are placed in the front panel. The system additionally includes a textual language program that is associated with the front panel and includes code for the execution of components in the front panel. At least one component on the front panel directly corresponds with a section of the code and the program runs in a continuous mode of operation during execution. The system further includes a distribution server distributing to a client device at least one of the graphical panel building application, the generated GUI, the textual language program, or the collection of data structures. The system also includes a client device in communication with the distribution server.
In one embodiment in a network, a method of building instrument panels for a virtual device includes the step of providing a server executing a graphical panel building application. The graphical panel building application generates a graphical user interface (GUI) for rendering and placing components on an instrument panel. The method also includes the steps of providing a client device in communication with the server over a network and transmitting the GUI to the client device, the GUI displaying the instrument panel in a layout window to a user. The method further includes the step of associating a textual language program with the instrument panel, the textual language program including code for the execution of components in the instrument panel, at least one component on the instrument panel directly corresponding with a section of the code. The program runs in a continuous mode of operation during execution. The method also includes the step of displaying multiple icons representing components in a library that may be placed in the instrument panel.
These and other aspects of this invention will be readily apparent from the Detailed Description below and the appended drawings, which are meant to illustrate and not limit the invention and in which:
The illustrative embodiment of the present invention provides a software-based instrument panel in which the panel components are tied on directly to sections of programming code written in a textual language. The textual language program relates to how the panel updates and operates in a continuous fashion. The textual language program sections are in synch with the corresponding components on the instrument panel. The textual language program controls the reading and writing of values for the panel components while other component properties are set on a graphical panel. The system also includes an interface to obtain values for the textual language program.
Those skilled in the art will recognize that the depicted arrangement of system components that is displayed in
Similarly,
The GUI 6 allows the user 14 practicing the illustrative embodiment of the present invention to build an instrument panel or other type of front panel.
The textual language program performs the reading and writing of values of the components while other properties of the components are set directly on the graphical panel. Properties of the programming components and/or I/O devices may be directly altered by the user 14 through the GUI 6. For example, the component/device properties may be altered by right clicking on the desired component or I/O device icon in the Graphical Panel Layout Window 30 which results in the presentation of a properties menu.
The Program Dialog Window 32 displays the programming code associated with the panel components and I/O devices and may also include controls allowing a user 14 to switch between threads of execution. For example, the Program Dialog Window 32 includes tabs 60, 61, 62, 64, 66 and 68 representing different procedures and tasks. Tab 60 is an initialization procedure, tab 61 is a foreground task, tab 62 is a background task, tab 64 is a timed execution task, tab 66 is an event-driven execution task, and tab 68 is a termination procedure. The illustrative embodiment of the present invention allows for shared name spaces between threads. A built-in mechanism protects data when sharing data between different threads of execution. The illustrative embodiment of the present invention also supports priority and rate monotonic scheduling for multi-rate execution so that faster or high priority tasks can interrupt slower or lower priority tasks. Additional language constructs for semaphores enable locking of critical data and shared resources during multi-threaded execution. It should be noted that in addition to the code displayed in the Program Dialog Window that is associated with the components and I/O devices in the Graphical Panel Layout Window, the textual language program may also include additional code that will be run that will not be displayed. This code would include the scheduling and other code necessary to make it a free running application. Optionally, there may also be some callback code that runs that is displayed in the property dialog for the component or I/O device.
Also visible in the GUI 6 is the Component Library Window 34 which contains icons representing components from the Component Library 8 from which the user 14 may select components for the instrument or front panel being built. As an example, the Component Library Window 34 depicted in
Likewise, icons for the I/O devices which may be added to the Graphical Panel Layout Window 30 are found in the I/O Device Library in Window 36. The I/O Device components provide an interface between the instrument panel or other front panel and a data sink or source. The I/O Device Library Window 36 may provide an analog input icon 80, a digital input icon 82, a counter input icon 84, an encoder input icon 86, or other type of input icon 88. The I/O Device Library Window 36 may also include an analog output icon 90, a digital output icon 92, and other output icon 94. These I/O devices allow functions in the textual language program to access data from the outside world such as that from data acquisition boards and instruments, from external memory locations, network connections, or a graphical programming environment. Additionally, the graphical panel building system described herein may also be called as a function from the textual language or directly from environment such as MATLAB. In this way, hierarchical panels may be built-up so that a widget or line of executed code may correspond to a new entirely new panel.
It will be appreciated by those skilled in the art that the windows of the present invention may be presented to a user in a number of different manners. For example, the windows may appear as separate windows displayed on a user's desktop. Alternatively, the windows may appear in an Integrated Design Environment (i.e.: multi-pane windowing interface). Additional programming environments such as the MATLAB command line or the MATLAB M-file editor may be embedded as separate windows within the Integrated Design Environment.
The program code for the components and I/O devices in the component library 8 and I/O device library 10 is associated with the icons displayed in the Component Library Window 34 and I/O Device Library Window 36. The code describes the functionality of the component or I/O device. The textual language program code contains the logic necessary for the updating and execution of the component and/or I/O device. The process by which the component icons in the Component Library Window 34 and the I/O device icons in the I/O Device Library Window 36 are added to the Graphical Panel Layout Window 30, and by which the corresponding code is added to the Program Dialog Window 32, is discussed below in connection with
Similarly, the illustrative embodiment of the present invention also allows the I/O device icon to be dragged directly into the Program Dialog Window 32 instead of the graphical Panel Layout Window 30. After the selection of an I/O device icon (step 102), the user may drag the icon to the Program Dialog Window 32 (step 108). The program code associated with the I/O device icon is then programmatically added to the Program Dialog Window 32 (step 110). In one implementation, the icon for the I/O device is not added to the Graphical Panel Layout Window 30 even though the code associated with the I/O device appears in the Program Dialog Window 32. In an alternate implementation, the I/O device icon is added to the Graphical Panel Layout Window 30 during editing mode.
As mentioned above, the components and I/O devices in the Graphical Panel Layout Window 30 may correspond on a one-to-one basis with a line of code or section of code (comprising multiple lines of code) in the textual language program displayed in the Program Dialog Window 32. This one-to-one correspondence between the component/device and the code line/section represents synchronization such that, for example, deletion of lines of code in the textual language program results in the deletion of the component or I/O device in the Graphical Panel Layout Window. Similarly, the deletion of a component or I/O device in the Graphical Panel Layout Window might result in the deletion of the corresponding line or section of code in the Program Dialog Window 32. Likewise, the change of the name of the component in the programming dialog window may result in a corresponding name change for the display component in the instrument panel. Adding a line of code in the Program Dialog Window with the correct syntax may also produce an icon in a default location in the Graphical Panel Layout Window.
The placement of the code corresponding to the components and I/O devices at a particular location in the textual language program may be handled in a number of different ways depending upon the chosen implementation of the present invention. For example, in one implementation, if the user is dragging a component or I/O device into the Graphical Panel Layout Window, the corresponding code may be automatically placed at the end of the text in the Program Dialog Window or at the top of the window. In another implementation the text may appear as floating text on the end of the mouse pointer (following the dragging of the icon into either the Program Dialog Window or Graphical Panel Layout Window) to be subsequently placed in a user selected location. In a different implementation, where the cursor is already in the middle of text in the Program Dialog Window, a line may be inserted at the next break in code and the new text inserted at that location. Other implementations will be apparent to those skilled in the art. Because the code is not being executed sequentially, the particular physical location of the code within the textual language program is irrelevant to the execution of the program.
The use of the textual language to control the execution and updating of the instrument panel and components and I/O devices enable complex computations to be performed during a continuous running mode. The correspondence between the components or I/O devices and the code sections enables the execution of the instrument panel or other front panel in a continuous mode without resorting to the time-consuming callbacks found in VISUAL BASIC type systems. Additionally, the use of a textual programming language enables significantly more complex operations to be performed than are possible using conventional data flow diagrams such as those found in systems in which the front panel is tied to a data flow diagram. The use of the textual programming language also enables the interfacing of the code for the panel and I/O devices with other programming environments.
Those skilled in the art will recognize that various implementations of the instrument panel and front panel building system described herein are possible within the scope of the present invention. In one aspect of the present invention, the system may be saved and loaded as a single file thus preserving all of the current values. In another aspect of the present invention, only one instance of the associated component exists in the text program at the same time, thus providing a duality between the textual language program and the graphical panel. In another aspect of the present invention, multiple instances of components may be allowed and the textual language program automatically selects from among the multiple widgets and deletes them as appropriate. The graphical widget is deleted in response to the deletion of the last textual reference. In a different aspect of the present invention, the system may or may not include an interface to an external data source.
Although the illustrative embodiment of the present invention has been described with reference to continuous modes of execution, it should be understood that it may also be practiced in alternate modes. For example, the execution mode may be based on polling of the various components, may execute based on sample times, and may be event-based execution.
The present invention may be provided as one or more computer-readable programs embodied on or in one or more mediums. The mediums may be a floppy disk, a hard disk, a compact disc, a digital versatile disc, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. In general, the computer-readable programs may be implemented in any programming language. Some examples of languages that can be used include MATLAB, Java, C, C++, C#, VHDL, or Verilog. The software programs may be stored on or in one or more mediums as object code.
Since certain changes may be made without departing from the scope of the present invention, it is intended that all matter contained in the above description or shown in the accompanying drawings be interpreted as illustrative and not in a literal sense. Practitioners of the art will realize that the sequence of steps and architectures depicted in the figures may be altered without departing from the scope of the present invention and that the illustrations contained herein are singular examples of a multitude of possible depictions of the present invention.
This application is a continuation of U.S. patent application Ser. No. 11/121,794, filed May 3, 2005, the entire content of which is incorporated by reference herein.
Number | Name | Date | Kind |
---|---|---|---|
5291587 | Kodosky et al. | Mar 1994 | A |
5301336 | Kodosky et al. | Apr 1994 | A |
5325481 | Hunt | Jun 1994 | A |
5353401 | Iizawa et al. | Oct 1994 | A |
5553227 | Berry | Sep 1996 | A |
5576946 | Bender et al. | Nov 1996 | A |
5664129 | Futatsugi et al. | Sep 1997 | A |
5666505 | Bailey | Sep 1997 | A |
5734863 | Kodosky et al. | Mar 1998 | A |
5745112 | Hirose | Apr 1998 | A |
5760788 | Chainini et al. | Jun 1998 | A |
5777616 | Bates et al. | Jul 1998 | A |
5911070 | Solton et al. | Jun 1999 | A |
5961630 | Zaidi et al. | Oct 1999 | A |
5966532 | McDonald et al. | Oct 1999 | A |
5996064 | Zaidi et al. | Nov 1999 | A |
6053951 | McDonald et al. | Apr 2000 | A |
6113649 | Govindaraj et al. | Sep 2000 | A |
6125375 | Atkins et al. | Sep 2000 | A |
6131184 | Weeren et al. | Oct 2000 | A |
6154875 | Tanaka et al. | Nov 2000 | A |
6177933 | Young | Jan 2001 | B1 |
6182278 | Hamada et al. | Jan 2001 | B1 |
6216261 | Mitchell | Apr 2001 | B1 |
6233726 | Bowman et al. | May 2001 | B1 |
6237135 | Timbol | May 2001 | B1 |
6252591 | Dockweiler et al. | Jun 2001 | B1 |
6282699 | Zhang et al. | Aug 2001 | B1 |
6337696 | Lindhorst et al. | Jan 2002 | B1 |
6366300 | Ohara et al. | Apr 2002 | B1 |
6684385 | Bailey et al. | Jan 2004 | B1 |
6701513 | Bailey | Mar 2004 | B1 |
6792595 | Storistenau et al. | Sep 2004 | B1 |
6851107 | Coad et al. | Feb 2005 | B1 |
7000190 | Kudukoli et al. | Feb 2006 | B2 |
7039875 | Khalfay et al. | May 2006 | B2 |
7062718 | Kodosky et al. | Jun 2006 | B2 |
7069554 | Stammers et al. | Jun 2006 | B1 |
7079141 | Vazquez et al. | Jul 2006 | B2 |
7120876 | Washington et al. | Oct 2006 | B2 |
7134086 | Kodosky | Nov 2006 | B2 |
7159183 | Kudukoli et al. | Jan 2007 | B1 |
7200838 | Kodosky et al. | Apr 2007 | B2 |
7210117 | Kudukoli et al. | Apr 2007 | B2 |
7243334 | Berger et al. | Jul 2007 | B1 |
7275235 | Molinari et al. | Sep 2007 | B2 |
7322023 | Shulman et al. | Jan 2008 | B2 |
7331019 | Ananth et al. | Feb 2008 | B2 |
7331039 | Yip et al. | Feb 2008 | B1 |
7340721 | Bailey | Mar 2008 | B1 |
7370281 | Weber | May 2008 | B2 |
7370315 | Lovell et al. | May 2008 | B1 |
7376904 | Cifra et al. | May 2008 | B2 |
7392507 | Kolawa et al. | Jun 2008 | B2 |
7451403 | Srinivasan et al. | Nov 2008 | B1 |
7650576 | Becerra, Jr. | Jan 2010 | B2 |
7676790 | Hsu et al. | Mar 2010 | B1 |
20020063734 | Khalfay et al. | May 2002 | A1 |
20020080179 | Okabe et al. | Jun 2002 | A1 |
20030058280 | Molinari et al. | Mar 2003 | A1 |
20030065638 | Robert | Apr 2003 | A1 |
20030071845 | King et al. | Apr 2003 | A1 |
20030076355 | Kodosky | Apr 2003 | A1 |
20030126406 | Hammarlund et al. | Jul 2003 | A1 |
20040230954 | Dandoy | Nov 2004 | A1 |
20050257193 | Falk et al. | Nov 2005 | A1 |
20050257203 | Nattinger | Nov 2005 | A1 |
20050268173 | Kudukoli et al. | Dec 2005 | A1 |
20050268288 | Nattinger | Dec 2005 | A1 |
20060015845 | Tomchin | Jan 2006 | A1 |
20060173824 | Bensky et al. | Aug 2006 | A1 |
20060206827 | DeWitt | Sep 2006 | A1 |
Entry |
---|
Stoecklin, Sara and Allen, Clement; Creating a reusable GUI component; 2002; Software—Practice and Experience, Softw. Pract. Exper. 2002; 32:403-416 (DOI: 10.1002/spec.439). |
Hill, Jason and Gutwin, Carl; Awareness Support in a Groupware Widget Toolkit; Nov. 9, 2003; ACM 1-58113-693-5/03/0011; pp. 258-267. |
Grundy, John and Yang, Biao; An environment for developing adaptive, multi-device user interfaces; 2002; Conferences in Research and Practice in Information Technology; vol. 18. |
Bishop, Judith and Horspool, Nigel; Developing Principles of GUI Programming Using Views; Mar. 3, 2004; ACM 1-58113-798-2/04/0003; pp. 373-377. |
European Communication for Application No. 06769985.0-1243, dated Apr. 10, 2008. |
Kacsuk, Péter et al, “Designing parallel programs by the graphical language GRAPNEL,” Microprocessing and Microprogramming, vol. 41:625-643 (1996). |
Stovsky, M.P. et al, “STILE: A Graphical Design and Development Environment,” Ruthenium, Handbuch Der Anorganischen Chemie, vol. 63:247-250 (1986). |
International Preliminary Report on Patentability for Application No. PCT/US2006/016989, dated Aug. 24, 2007. |
European Office Action for Application No. 06769985.0, 7 pages, dated Feb. 5, 2013. |
European Office Action for Application No. 06769985.0, 9 pages, dated Aug. 14, 2013. |
“Why Am I Unable to Edit My VI or Access Palettes by Right-Clicking?,” National Instruments, 2014, <http://digital.ni.com/public.nsf/allkb/86256F0E001DA9FE86256AE7008292ED>, retrieved on Jan. 11, 2016, one page. |
Number | Date | Country | |
---|---|---|---|
20080022222 A1 | Jan 2008 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11121794 | May 2005 | US |
Child | 11879251 | US |