WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method and apparatus for providing attribute nodes in a graphical data flow environment    
United States Patent5481741   
Link to this pagehttp://www.wikipatents.com/5481741.html
Inventor(s)McKaskle; Greg (Austin, TX); Kodosky; Jeffrey L. (Austin, TX)
AbstractA system and method for providing attribute nodes in a data flow diagram which allow a user to programmatically access various parameters of a control or indicator. In this manner, a user can programmatically make changes that affect the output or appearance of controls and indicators. A user can also access these parameters interactively during execution of a block diagram. A user can creates an attribute node containing one or more attributes corresponding to controls that affect a parameter of the control, such as the color used for the respective display, the visibility of the control, the scales or cursor position for respective graphs or charts, etc. The purpose of an attribute node is to affect the visual output of a control provided on the front panel depending on events which occur during execution of a VI or on user input during execution of a VI. An attribute node thus allows the execution subsystem to monitor user interaction by reading attribute data that previously was not available to the program. An attribute node allows two types of operations, these being reading an attribute node or writing to an attribute node. These operations of reading and writing an attribute node can be performed either by a block diagram during execution, wherein the user has programmed the block diagram to perform this function, or interactively by the user during execution. The process of writing to an attribute node refers to the execution subsystem updating an attribute of a control in the front panel display to reflect an attribute that has been set programmatically in a block diagram. The user can also "write" to an attribute node by providing input to a control in the front panel during execution of a block diagram. Reading an attribute node refers to the execution subsystem reading the value of an attribute for a certain control during block diagram execution that may have been changed by the user, or may have been changed during execution of a VI by the execution subsystem. Reading an attribute also refers to the user viewing changes to the attribute during execution.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5481741
Method and apparatus for providing attribute nodes in a graphical data

     flow environment - US Patent 5481741 Drawing
Method and apparatus for providing attribute nodes in a graphical data flow environment
Inventor     McKaskle; Greg (Austin, TX); Kodosky; Jeffrey L. (Austin, TX)
Owner/Assignee     National Instruments Corporation (Austin, TX)
Patent assignment
All assignments
Publication Date     January 2, 1996
Application Number     08/126,163
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     September 22, 1993
US Classification     345/522 358/1.9 715/835 715/967 715/970
Int'l Classification     G06F 009/60
Examiner     Geckil; Mehmet
Assistant Examiner    
Attorney/Law Firm     Hood; Jeffrey C.
Address
Parent Case     This is a continuation-in-part of copending application Ser. No. 07/979,416, now U.S. Pat. No. 5,291,587, filed Nov. 19, 1992 for "Graphical System for Executing a Process and for Programming a Computer to Execute a Process, Including Graphical Variable Inputs and Variable Outputs" and assigned to National Instruments, which is a continuation of Ser. No. 07/376,257 filed Jul. 6, 1989, now abandoned, which was a continuation of Ser. No. 06/851,569 filed Apr. 14, 1986, which is now U.S. Pat. No. 4,901,221. Reservation of Copyright A portion of the disclosure of this patent document contains material to which a claim of copyright protection is made. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but reserves all other rights whatsoever.
Priority Data    
USPTO Field of Search     395/200 395/800 395/155 395/156 395/157 395/158 395/159 395/160 395/161 395/162 395/140 395/62 395/109 395/600 395/650 395/775 395/200 364/146 364/188
Patent Tags     providing attribute nodes graphical data flow environment
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5168441
Onarheim
700/17
Dec,1992

[0 after 0 votes]
4849880
Bhaskar
717/109
Jul,1989

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. A computer implemented method for programmatically affecting an attribute of a control in a data flow program in a computer system including a video screen, means for creating a graphical data flow diagram, and means for creating a panel associated with said data flow diagram for displaying data input to and output from said data flow diagram, the method comprising the computer implemented steps of:

displaying on the screen a first panel;

displaying on the screen a first control which displays data, wherein said first control is comprised in said first panel;

displaying on the screen a first function icon that references a function icon control means for controlling a first function;

displaying on the screen an attribute node icon associated with said first control, wherein the attribute node icon references an attribute control means for programmatically affecting an attribute of said first control;

assembling on the screen a data flow diagram including the first function icon and the attribute node icon, wherein the first function icon is connected to the attribute node icon and wherein the function icon control means provides data to the attribute control means during execution of the data flow diagram, wherein said first panel is associated with said data flow diagram and wherein said first control in said first panel displays input or output data from said data flow diagram;

executing the data flow diagram;

the function icon control means writing a value to the attribute control means to affect said attribute of said first control during said step of executing; and

changing said attribute of said first control after said step of the function icon control means writing said value to the attribute control means to affect said attribute of said first control.

2. The method of claim 1, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon, the first function icon and the attribute node icon.

3. The method of claim 1, wherein said first control includes a plurality of attributes and wherein said attribute control means programmatically affects said plurality of attributes of said first control;

wherein said step of the function icon control means writing a value comprises the function icon control means writing values to said attribute control means to affect said plurality of attributes of said first control during said step of executing.

4. The method of claim 3, wherein said attribute node icon lists said plurality of attributes of said first control, wherein said plurality of attributes are listed sequentially;

wherein said step of the function icon control means writing values comprises the function icon control means writing values to said attribute control means sequentially according to said sequential listing of attributes in said attribute node icon to affect said plurality of attributes of said first control during said step of executing.

5. The method of claim 1, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

displaying on the screen a second control in said first panel;

displaying on the screen a second terminal icon that references said second control prior to said step of assembling;

wherein said first control displays data input to the data flow diagram and said second control displays data output from the data flow diagram;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon and the second terminal icon and the first function icon and the attribute node icon, wherein the data flow diagram displays a first procedure for producing a value for the second terminal icon from a value provided by the first terminal icon.

6. The method of claim 1, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

displaying on the screen a second control in said first panel;

displaying on the screen a second terminal icon that references said second control prior to said step of assembling;

wherein said second control displays data input to the data flow diagram and said first control displays data output from the data flow diagram;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon and the second terminal icon and the first function icon and the attribute node icon, wherein the data flow diagram displays a first procedure for producing a value for the first terminal icon from a value provided by the second terminal icon.

7. The method of claim 1, wherein said attribute comprises an element of the appearance of said first control.

8. The method of claim 1, wherein said attribute comprises one or more of the group consisting of: size, color, range, scale, visibility, disabled, and key focus.

9. The method of claim 1, wherein said first control comprises one of the group consisting of: digital numeric control, color numeric control, rotary control, slide control, fill control, ring control, color ramp, table, waveform chart, waveform graph, XY graph, intensity chart, and intensity graph.

10. The method of claim 1, wherein said control comprises a waveform graph, wherein said attribute comprises one or more of the group consisting of: active cursor, cursor name, cursor color, cursor grid style, cursor point style, cursor locked, cursor plot, cursor index, cursor location, cursor X location, cursor Y location, cursor list, and smooth update.

11. The method of claim 1, wherein said control comprises a waveform graph having a cursor, wherein said attribute comprises an attribute of said cursor.

12. A computer implemented method for programmatically accessing an attribute of a control in a data flow program in a computer system including a video screen, means for creating a graphical data flow diagram, and means for creating a panel associated with said data flow diagram for displaying data input to and output from said data flow diagram, the method comprising the computer implemented steps of:

displaying on the screen a first panel;

displaying on the screen a first control which displays data, wherein said first control is comprised in said first panel;

displaying on the screen a first function icon that references a function icon control means for controlling a first function;

displaying on the screen an attribute node icon associated with said first control, wherein the attribute node icon references an attribute control means for programmatically accessing an attribute of said first control;

assembling on the screen a data flow diagram including the first function icon and the attribute node icon, wherein the attribute node icon is connected to the first function icon and wherein the attribute control means provides data to the function icon control means during execution of the data flow diagram, wherein said first panel is associated with said data flow diagram and wherein said first control in said first panel displays input or output data from said data flow diagram;

executing the data flow diagram;

receiving input from a user during said step of executing to change said attribute of said first control;

the attribute control means reading said attribute of said first control and generating a value indicative thereof during said step of executing;

the attribute control means providing said value to said function icon control means during said step of executing; and

the function icon control means computing a value using said value received from the attribute control means during said step of executing.

13. The method of claim 12, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon, the first function icon, and the attribute node icon.

14. The method of claim 12, wherein said first control includes a plurality of attributes and wherein said attribute control means programmatically accesses said plurality of attributes of said first control;

wherein said step of the attribute control means providing said value comprises the attribute control means providing a plurality of values to said function icon control means during said step of executing.

15. The method of claim 14, wherein said attribute node icon lists said plurality of attributes of said first control, wherein said plurality of attributes are listed sequentially;

wherein said step of the attribute control means providing said plurality of values comprises the attribute control means providing said plurality of values sequentially according to said sequential listing of attributes in said attribute node icon during said step of executing.

16. The method of claim 12, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

displaying on the screen a second control in said first panel;

displaying on the screen a second terminal icon that references said second control prior to said step of assembling;

wherein said first control displays data input to the data flow diagram and said second control displays data output from the data flow diagram;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon and the second terminal icon and the first function icon and the attribute node icon, wherein the data flow diagram displays a first procedure for producing a value for the second terminal icon from a value provided by the first terminal icon.

17. The method of claim 12, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

displaying on the screen a second control in said first panel;

displaying on the screen a second terminal icon that references said second control prior to said step of assembling;

wherein said second control displays data input to the data flow diagram and said first control displays data output from the data flow diagram;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon and the second terminal icon and the first function icon and the attribute node icon, wherein the data flow diagram displays a first procedure for producing a value for the first terminal icon from a value provided by the second terminal icon.

18. The method of claim 12, wherein said step of the attribute control means providing said value comprises the attribute control means providing said value to said function icon control means to enable said function icon control means to determine said attribute of said first control during said step of executing.

19. The method of claim 12, wherein said attribute comprises an element of the appearance of said first control.

20. The method of claim 12, wherein said attribute comprises one or more of the group consisting of: size, color, range, scale, visibility, disabled, and key focus.

21. The method of claim 12, wherein said first control comprises one of the group consisting of: digital numeric control, color numeric control, rotary control, slide control, fill control, ring control, color ramp, table, waveform chart, waveform graph, XY graph, intensity chart, and intensity graph.

22. The method of claim 12, wherein said control comprises a waveform graph, wherein said attribute comprises one or more of the group consisting of: active cursor, cursor name, cursor color, cursor grid style, cursor point style, cursor locked, cursor plot, cursor index, cursor location, cursor X location, cursor Y location, cursor list, and smooth update.

23. The method of claim 12, wherein said control comprises a waveform graph having a cursor, wherein said attribute comprises an attribute of said cursor.

24. A computer implemented method for programmatically accessing an attribute of a control in a data flow program in a computer system including a video screen, means for creating a graphical data flow diagram, and means for creating a panel associated with said data flow diagram for displaying data input to and output from said data flow diagram, the method comprising the computer implemented steps of:

displaying on the screen a first panel;

displaying on the screen a first control which displays data, wherein said first control is comprised in said first panel;

displaying on the screen a first function icon that references a first function icon control means for controlling a first function;

displaying on the screen a second function icon that references a second function icon control means for controlling a second function;

displaying on the screen an attribute node icon associated with said first control, wherein the attribute node icon references an attribute control means for programmatically accessing an attribute of said first control;

assembling on the screen a data flow diagram including the first function icon, the second function icon, and the attribute node icon, wherein the first function icon is connected to the attribute node icon and wherein the attribute node icon is connected to the second function icon, wherein said first panel is associated with said data flow diagram and wherein said first control in said first panel displays input or output data from said data flow diagram;

executing the data flow diagram;

the first function icon control means writing a value to the attribute control means to affect said attribute of said first control during said step of executing; and

the second function icon control means reading a value from the attribute control means to access said attribute of said first control during said step of executing.

25. The method of claim 24, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon, the first function icon and the attribute node icon.

26. The method of claim 24, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

displaying on the screen a second control in said first panel;

displaying on the screen a second terminal icon that references said second control prior to said step of assembling;

wherein said first control displays data input to the data flow diagram and said second control displays data output from the data flow diagram;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon and the second terminal icon, the first function icon, the second function icon and the attribute node icon, wherein the data flow diagram displays a first procedure for producing a value for the second terminal icon from a value provided by the first terminal icon.

27. The method of claim 24, further comprising:

displaying on the screen a first terminal icon that references said first control prior to said step of assembling;

displaying on the screen a second control in said first panel;

displaying on the screen a second terminal icon that references said second control prior to said step of assembling;

wherein said second control displays data input to the data flow diagram and said first control displays data output from the data flow diagram;

wherein said step of assembling comprises assembling on the screen the data flow diagram including the first terminal icon and the second terminal icon and the first function icon and the second function icon and the attribute node icon, wherein the data flow diagram displays a first procedure for producing a value for the first terminal icon from a value provided by the second terminal icon.

28. The method of claim 24, wherein said attribute comprises an element of the appearance of said first control.

29. The method of claim 24, wherein said attribute comprises one or more of the group consisting of: size, color, range, scale, visibility, disabled, and key focus.

30. The method of claim 24, wherein said first control comprises one of the group consisting of: digital numeric control, color numeric control, rotary control, slide control, fill control, ring control, color ramp, table, waveform chart, waveform graph, XY graph, intensity chart, and intensity graph.

31. The method of claim 24, wherein said control comprises a waveform graph, wherein said attribute comprises one or more of the group consisting of: active cursor, cursor name, cursor color, cursor grid style, cursor point style, cursor locked, cursor plot, cursor index, cursor location, cursor X location, cursor Y location, cursor list, and smooth update.

32. The method of claim 24, wherein said control comprises a waveform graph having a cursor, wherein said attribute comprises an attribute of said cursor.

33. A computer implemented method for programming a computer system including a video screen, means for creating a graphical data flow diagram, and means for creating a panel associated with said data flow diagram for displaying data input to and output from said data flow diagram, the method comprising the computer implemented steps of:

displaying on the screen a first panel;

displaying on the screen a first control in said first panel, wherein said first control displays data;

displaying on the screen a second control in said first panel, wherein said second control displays data;

displaying on the screen a first terminal icon that references said first control;

displaying on the screen a second terminal icon that references said second control;

displaying on the screen a first function icon that references a function icon control means for controlling a first function;

displaying on the screen an attribute node icon associated with said first control that references an attribute control means for programmatically affecting an attribute of said first control;

displaying on the screen a connector pane icon having a plurality of terminals for linking said first and second terminal icons, wherein said connector pane icon has associated connector control means for linking controls;

assigning said first control to a first terminal of said connector pane icon;

assigning said second control to a second terminal of said connector pane icon;

assembling on the screen a data flow diagram including the first terminal icon and the second terminal icon and the first function icon and the attribute node icon, wherein said first and second controls display data in said data flow diagram;

executing the data flow diagram;

propagating control data from said first control to said second control in a first data structure during said step of executing; and

propagating attribute data between said attribute control means and said second control using a second data structure.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to graphical systems for creating and executing data flow programs, and more specifically to a method and apparatus for providing attribute nodes in a graphical data flow environment.

2. Description of the Related Art

A computer system can be envisioned as having a number of levels of complexity. Referring now to FIG. 1, the lowest level of a computer system may be referred to as the digital logic level. The digital logic level comprises the computer's true hardware, primarily consisting of gates which are integrated together to form various integrated circuits. Other hardware devices include printed circuit boards, the power supply, memory, and the various input/output devices, among others. Gates are digital elements having one or more digital inputs, signals representing 0 or 1 states, and which compute an output based on these inputs according to a simple function. Common examples of gates are AND gates, OR gates, etc. It is also noted that there is yet another level below level 0 which can be referred to as the device level. This level deals with the individual transistors and semiconductor physics necessary to construct the gates comprising the digital logic level.

The next level, referred to as level 1, is referred to as the microprogramming level. The microprogramming level is essentially a hybrid between computer hardware and software. The microprogramming level is typically implemented by software instructions stored in ROM (read only memory), these instructions being referred to as microcode. The microprogramming level can be thought of as including various interpreters comprised of sequences of microcode which carry out instructions available at the machine language level, which is at level 2. For example, when an instruction such as an arithmetic or shift function appears at the machine language level, this instruction is carried out one step at a time by an interpreter at the microprogramming level. Because the architecture of the microprogramming level is defined by hardware, it is a very difficult level in which to program. Timing considerations are frequently very important in programming at this level and thus usually only very skilled, experienced microprogrammers operate at this level.

As mentioned above, the level above the microprogramming level is referred to as the machine language level. The machine language level comprises the 1's and 0's that a program uses to execute instructions and manipulate data. The next level above the machine language level is referred to as the assembly language level. This level includes the instruction set of the computer system, i.e. the various op codes, instruction formats, etc. that cause the computer to execute instructions. In assembly language each instruction produces exactly one machine language instruction. Thus, there is a one to one correspondence between assembly language instructions and machine language instructions. The primary difference is that assembly language uses very symbolic human-readable names and addresses instead of binary ones to allow easier programming. For example, where a machine language instruction might include the sequence "101101," the assembly language equivalent might be "ADD." Therefore, assembly language is typically the lowest level language used by programmers, and assembly language programming requires a skilled and experienced programmer.

The next level includes high level text-based programming languages which are typically 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. The high level programming languages in this level, as well as the assembly language level, are referred to in this disclosure 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. For example, text-based programming environments have traditionally used a number of programs to accomplish a given task. Each program in turn often comprises one or more subroutines. Software systems typically coordinate activity between multiple programs, and each program typically coordinates activity between multiple subroutines. However, in a text-based environment, techniques for coordinating multiple programs generally differ from techniques for coordinating multiple subroutines. Furthermore, since programs ordinarily can stand alone while subroutines usually cannot in a text-based environment, techniques for linking programs to a software system generally differ from techniques for linking subroutines to a program. Complexities such as these often make it difficult for a user who is not a specialist in computer programming to efficiently program a computer system in a text-based environment.

The task of programming a computer system to model 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. For example, a computer programmer typically develops a conceptual model for a physical system which can be partitioned into functional blocks, each of which corresponds to actual systems or subsystems. Computer systems, however, ordinarily do not actually compute in accordance with such conceptualized functional blocks. Instead, they often utilize calls to various subroutines and the retrieval of data from different memory storage locations to implement a procedure which could be conceptualized by a user in terms of a functional block. 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.

One particular field in which computer systems are employed to model physical systems is the field of instrumentation. An instrument is a device which collects information from an environment and displays this information to a user. Examples of various types of instruments include oscilloscopes, digital multimeters, pressure sensors, etc. Types of information which might be collected by respective instruments include: voltage, resistance, distance, velocity, pressure, frequency of oscillation, humidity or temperature, among others. An instrumentation system ordinarily controls its constituent instruments from which it acquires data which it analyzes, stores and presents to a user of the system. Computer control of instrumentation has become increasingly desirable in view of the increasing complexity and variety of instruments available for use.

In the past, many instrumentation systems comprised individual instruments physically interconnected. Each instrument typically included a physical front panel with its own peculiar combination of indicators, knobs, or switches. A user generally had to understand and manipulate individual controls for each instrument and record readings from an array of indicators. Acquisition and analysis of data in such instrumentation systems was tedious and error prone. An incremental improvement in the manner in which a user interfaced with various instruments was made with the introduction of centralized control panels. In these improved systems, individual instruments were wired to a control panel, and the individual knobs, indicators or switches of each front panel were either preset or were selected to be presented on a common front panel.

A significant advance occurred with the introduction of computers to provide more flexible means for interfacing instruments with a user. In such computerized instrumentation systems the user interacted with a software program executing on the computer system through the video monitor rather than through a manually operated front panel. These earlier improved instrumentation systems provided significant performance efficiencies over earlier systems for linking and controlling test instruments.

However, these improved instrumentation systems had significant drawbacks. For example, due to the wide variety of possible testing situations and environments, and also the wide array of instruments available, it was often necessary for a user to develop a program to control the new instrumentation system desired. As discussed above, computer programs used to control such improved instrumentation 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 instrumentation 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 data. Thus, development and maintenance of the software elements in these instrumentation systems often proved to be difficult.

U.S. Pat. No. 4,901,221 to Kodosky et al discloses 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. Referring now to FIG. 1A, a graphically based programming environment can be represented at level 5 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. As the user constructs the data flow diagram using the block diagram editor, machine language instructions are automatically constructed which characterize an execution procedure which corresponds to the displayed procedure. Therefore, a user can create a text-based computer program solely by using a graphically based programming environment. This graphically based programming environment may be used for creating virtual instrumentation systems and modeling processes as well as for any type of general programming.

Therefore, Kodosky et al teaches a graphical programming environment wherein a user manipulates icons in a block diagram using a block diagram editor to create a data flow "program" or virtual instrument (VI). In creating a virtual instrument, a user first creates a front panel including various controls or indicators that represent the respective input and output that will be used by the VI. When the controls and indicators are created in the front panel, corresponding icons or terminals are automatically created in the block diagram by the block diagram editor. The user then chooses various functions that accomplish his desired result, connecting the corresponding function icons between the terminals of the respective controls and indicators. In other words, the user creates a data flow program, referred to as a block diagram, representing the graphical data flow which accomplishes his desired function. This is done by wiring up the various function icons between the control icons and indicator icons. The manipulation and organization of icons in turn produces machine language that accomplishes the desired method or process as shown in the block diagram. A user then optionally chooses a connector pane representing the input and output terminals corresponding to the respective controls and indicators already created.

Once the controls and indicators have been placed on the front panel and a connector pane has been selected, a user will then associate respective terminals on the connector pane to the respective controls and indicators on the front panel. For example, if a connector pane having three terminals has been selected, and two controls and one indicator are created on the front panel, the user can designate respective terminals on the connector pane to correspond to the respective controls and indicators on the front panel.

A user inputs data to a virtual instrument using front panel controls. This input data propagates through the data flow block diagram or graphical program and appears as changes on the output indicators. The data that flows from the controls to the indicators in this manner is referred to as control data. In an instrumentation application, the front panel can be analogized to the front panel of an instrument. The user adjusts the controls on the front panel to affect the input and views the output on the respective indicators.

While a user could adjust the input to the virtual instrument using controls on the front panel and view the corresponding change in output on indicators on the front panel, the user could not affect any other changes to the front panel during execution. For example, the user often desired to change the appearance of a control, i.e. write to a control, on the front panel during execution of a program to provide a more meaningful and more intuitive visual display. For example, it would be highly desirable that the user be able to move cursors on a graph to select points as input to further parts of the block diagram. It would also be desirable for a data flow program or block diagram to have the ability to programmatically change the appearance of a control or write to a control during execution. For example, the user may want the block diagram to automatically change the display colors on an indicator depending on whether a certain output is above or below a certain level. One example of this is where the user wants the output of an indicator to show up in green if a given process being modelled is running in a normal manner and show up in red if the process is operating at undesirable levels. The user may also want to be able to program the block diagram to automatically hide certain controls or indicators when they are not in use.

In the method and apparatus described in Kodosky et al., it was not possible for the user to programmatically control the appearance of the front panel during execution other than control data that appeared as conventional output data. Therefore, a method and apparatus is desired to enable a user to set and read various attributes which affect the appearance of controls on a front panel programmatically and can also enable the user to provide interactive input that can be read by a block diagram as it is executing.

SUMMARY OF THE INVENTION

The present invention comprises a system and method which allows a user to programmatically access various parameters of a control or indicator. In this manner, a user can programmatically make changes that affect the output or appearance of controls and indicators. A user can also access these parameters interactively during execution of a block diagram. In the preferred embodiment of the invention, a user can create an object referred to as an attribute node corresponding to a control containing one or more attributes that affect parameters of the control, such as the color used for the respective display, the visibility of the control, the scales or cursor position for respective graphs or charts, etc. The parameters of a control or indicator on the front panel which can be programmatically accessed according to the present invention are referred to as attributes.

An attribute node is associated with a control on the front panel and operates to provide a more meaningful visual output to the user. The purpose of an attribute node is to affect the visual output of a control provided on the front panel depending on events which occur during execution of a VI or on user input during execution of a VI. An attribute node thus allows the execution subsystem to monitor user interaction by reading attribute data that previously was not available to the program. A control may be referred to as a data source, whereas an indicator may be referred to as a data sink. An attribute node operates on panel display elements regardless of whether the data flow happens to be from a data source or a data sink.

An attribute node allows two types of operations, these being reading from an attribute node or writing to an attribute node. These operations of reading and writing an attribute can be performed either by a block diagram during execution, wherein the user has programmed the block diagram to perform this function, or interactively by the user during execution. The process of writing to an attribute node refers to the execution subsystem updating an attribute of a control in the front panel display to reflect an attribute that has been set programmatically in a block diagram. The user can also "write" to an attribute by providing input to or manipulating a control in the front panel during execution of a block diagram. Reading an attribute node refers to the execution subsystem reading the value of an attribute for a certain control during block diagram execution that may have been changed by the user, or may have been changed during execution of a VI by the execution subsystem. The user can also view changes to the attribute during execution. Some attributes can be changed by a user and practically all can be changed by the execution subsystem. Therefore, during execution of a VI, the process of writing to an attribute node corresponds to changing the front panel display and thus affecting what the user actually sees. The step of reading an attribute node does not actively change the front panel, but allows the program to see how the user or block diagram is changing the front panel. Knowing this, the program can make further decisions, thus greatly increasing the flexibility of a VI.

BRIEF DESCRIPTION OF THE DRAWINGS

The purpose and advantages of the present invention will be apparent to those skilled in the art from the following detailed description in conjunction with the appended drawings in which:

FIG. 1 illustrates various levels of complexity in a computer system according to the prior art;

FIG. 1A illustrates the various levels of complexity of a computer system including a graphical programming environment as the highest level;

FIG. 2 is a block diagram illustrating a system for modeling a process according to the present invention;

FIG. 3 is an illustrative drawing of a representation of a virtual instrument produced using the system of FIG. 2;

FIG. 4 shows a block diagram of an instrumentation system including the system of FIG. 2;

FIG. 5 is a representative drawing of various choices for an illustrative hardware instrumentation system of the preferred embodiment;

FIG. 5A is an illustrative hardware instrumentation system of the preferred embodiment;

FIG. 6 is a block diagram of the computer system of FIGS. 5 and 5A;

FIG. 7 shows a block diagram representing an exemplary data flow system;

FIG. 8A illustrates a virtual instrument data structure diagram used by the system of FIG. 2 and the instrumentation system of FIG. 4;

FIG. 8B shows a legend applicable to the illustration of FIG. 8A;

FIGS. 9A-L are flowchart diagrams illustrating operation of the execution subsystem of FIGS. 2 and 4;

FIG. 10 shows an illustrative front panel produced using the front panel editor of the instrumentation system of FIG. 4;

FIG. 11 shows an illustrative icon produced using the icon editor of the instrumentation system of FIG. 4;

FIG. 12A shows a graphical representation of a sequence structure;

FIG. 12B shows a graphical representation of an iterative loop structure; FIG. 12C shows a graphical representation of a conditional structure;

FIG. 12D shows a graphical representation of an indefinite loop structure;

FIG. 12E shows a graphical representation of shift registers on the indefinite loop structure of FIG. 12D.

FIG. 13 shows an illustrative block diagram generally corresponding to the graphical representation of a sequence structure shown in FIG. 12A;

FIG. 14 shows an illustrative block diagram generally corresponding to the graphical representation of an iterative loop structure shown in FIG. 12B;

FIG. 15 shows an illustrative block diagram generally corresponding to the graphical representation of a conditional structure shown in FIG. 12C;

FIG. 16 shows an illustrative block diagram generally corresponding to the graphical representation of an indefinite loop structure shown in FIG. 12D;

FIG. 17 shows an illustrative block d