WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Virtual machine programming system    
United States Patent5479643   
Link to this pagehttp://www.wikipatents.com/5479643.html
Inventor(s)Bhaskar; Kasi S. (Seattle, WA); Peckol; James K. (Edmonds, WA)
AbstractA system for programming a computer provides a set of software-based virtual machines each for instructing a computer to carry out a selected operation. Each virtual machine is represented by a virtual front panel displayed on a screen and each virtual front panel graphically displays operator controllable values of input and output parameters utilized by the virtual machine it represents. The system is adapted to synthesize a new virtual machine for instructing the computer to perform a sequence of operations wherein each operation is carried out by the computer according to the instructions of an operator selected one of the existing virtual machines. The system also creates a new virtual front panel for displaying input and output parameters associated with the new virtual machine. The system permits the operator to program the computer by directing synthesis of a hierarchy of virtual machines.
   














 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 5479643
Virtual machine programming system - US Patent 5479643 Drawing
Virtual machine programming system
Inventor     Bhaskar; Kasi S. (Seattle, WA); Peckol; James K. (Edmonds, WA)
Owner/Assignee     John Fluke Mfg. Co., Inc. (Everett, WA)
Patent assignment
All assignments
Publication Date     December 26, 1995
Application Number     07/750,772
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     August 22, 1991
US Classification     717/124 700/17 700/83 715/970
Int'l Classification     G06F 015/00
Examiner     Shin; Christopher B.
Assistant Examiner    
Attorney/Law Firm     Dellett; John P.
Address
Parent Case     This is a continuation of application Ser. No. 07/238,145 filed Aug. 30, 1988, and now abandoned, which is a divisional application of Ser. No. 06/798,931 filed Nov. 18, 1985, now U.S. Pat. No. 4,849,880 issued Jul. 18, 1989.
Priority Data    
USPTO Field of Search     395/155 395/156 395/157 395/158 395/159 395/160 395/161 364/146 364/188
Patent Tags     virtual programming
   
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
4967381
Lane
702/81
Oct,1990

[0 after 0 votes]
4914568
Kodosky
715/763
Apr,1990

[0 after 0 votes]
4868785
Jordan
345/440
Sep,1989

[0 after 0 votes]
4816988
Yamanaka
700/83
Mar,1989

[0 after 0 votes]
4811205
Normington
345/502
Mar,1989

[0 after 0 votes]
4745543
Michener

May,1988

[0 after 0 votes]
4736340
Desserrieres
715/762
Apr,1988

[0 after 0 votes]
4695968
Sullivan, II
703/13
Sep,1987

[0 after 0 votes]
4688167
Agarwal
715/803
Aug,1987

[0 after 0 votes]
4677587
Zemany, Jr.
716/20
Jun,1987

[0 after 0 votes]
4674053
Bannai
700/197
Jun,1987

[0 after 0 votes]
4663704
Jones
700/83
May,1987

[0 after 0 votes]
4656603
Dunn
715/835
Apr,1987

[0 after 0 votes]
4642790
Minshull
715/784
Feb,1987

[0 after 0 votes]
4636934
Schwendemann
700/3
Jan,1987

[0 after 0 votes]
4635183
Isobe
700/12
Jan,1987

[0 after 0 votes]
4628444
Nozawa
700/83
Dec,1986

[0 after 0 votes]
4586035
Baker
345/157
Apr,1986

[0 after 0 votes]
4546435
Herbert
717/109
Oct,1985

[0 after 0 votes]
4499549
Bartlett
708/2
Feb,1985

[0 after 0 votes]
4497033
Hernandez
702/55
Jan,1985

[0 after 0 votes]
4455619
Masui
345/530
Jun,1984

[0 after 0 votes]
4315315
Kossiakoff
717/109
Feb,1982

[0 after 0 votes]
4298955
Munday
700/266
Nov,1981

[0 after 0 votes]
4245318
Eckart
702/67
Jan,1981

[0 after 0 votes]
4152760
Freitas
700/9
May,1979

[0 after 0 votes]
4064394
Allen
700/84
Dec,1977

[0 after 0 votes]
4813013
Dunn
715/763
Dec,1969

[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. An instrumentation system comprising:

a computer;

a plurality of instruments selectively controlled by input data and producing output data;

bus means connecting said instruments to said computer for conveying input data and output data to and from selected instruments;

a screen controlled by said computer; and

software controlling operation of said computer implementing a plurality of virtual machines each comprising a set of computer instructions, said virtual machines being associated with respective ones of said instruments for providing input thereto or receiving output therefrom, a virtual machine controlling display on said screen of a virtual front panel depicting an instrument and able to display a representation of data associated with an instrument represented by a virtual front panel;

said software further comprising:

software responsive to operator input for enabling a selection of ones of said virtual front panels,

said computer being responsive to said selection for generating a new virtual machine comprising a combined set of the computer instructions which comprises the virtual machines associated with the selection of ones of said virtual front panels, said new virtual machine controlling display of a new virtual front panel on said screen including representation of values conveyed on said bus with respect to instruments represented by said selection of ones of said virtual front panels,

said new virtual machine initiating transmission of input data to one of said instruments in response to changes in values of input data represented by said new virtual front panel and for portraying an output data value as represented by the new virtual front panel in response to output data received from another one of said instruments.

2. An instrumentation system for carrying out a procedure with respect to equipment being tested by the instrumentation system, comprising:

a computer;

bus means coupled to said computer wherein said bus means carries data to and from said computer;

instrumentation also coupled to said bus means, at least a portion of said instrumentation receiving data from said computer via said bus means and at least a portion of said instrumentation supplying data to said computer via said bus means;

means for coupling at least a portion of said instrumentation to equipment under test; and

a screen controlled by said computer;

wherein said computer is controlled by software for displaying on said screen at least one virtual front panel representing at least a said portion of said instrumentation, wherein said software implements a first virtual machine comprising a first set of computer instructions corresponding to a said at least one virtual front panel for controlling coupling of data with a said portion of said instrumentation;

wherein said software provides at least one second virtual machine comprising a second set of computer instructions for bringing about performance of a computer operation as well as display on said screen of another virtual front panel representing a said computer operation; and

wherein said software is operable in response to operator designation of virtual machines by selection of front panels to generate a combined instruction set from said first and second instruction sets which provides a further front panel, said combined instruction set conjointly controlling said instrumentation for carrying out said procedure.

3. An instrumentation system comprising:

a computer;

an instrument;

bus means connecting the instrument to the computer to provide data interchange therebetween;

a screen controlled by said computer;

means conveying user input including input commands to said computer; and

memory means storing software in execution by said computer implementing a collection of virtual machines, each virtual machine of said collection of virtual machines comprising a set of instructions, said collection of virtual machines including:

a first virtual machine responsive to data on said bus means and displaying on said screen a first virtual front panel representing said instrument; and

a plurality of second virtual machines, each producing designated operation output data in response to operation input data, and displaying a separate second virtual front panel on said screen, wherein said first and second virtual machines respond to input commands by generating output computer instructions corresponding to the sets of instructions of said first and second virtual machine;

said software further implementing software generation responding to user input selecting ones of said virtual machines by combining the output computer instructions generated by said first and second virtual machines in response to input commands to form new software implementing a third virtual machine performing operations corresponding to the operations of selected first and second virtual machines.

4. The system in accordance with claim 3 wherein at least one of said first, second and third virtual front panels displays an input data value and wherein a virtual machine controlling said at least one virtual front panel comprises means for providing input to said software for adjusting said input data value in response to user input.

5. For an instrumentation system comprising a computer, an instrument, bus means connecting the instrument to the computer, a screen controlled by said computer, and means conveying user input including input commands to said computer, a method for controlling said instrument and displaying values relating thereto, the method comprising the steps of:

executing software implementing a first virtual machine comprising a first set of computer instructions corresponding to said instrument and displaying on said screen a first virtual front panel representing said instrument, and implementing a plurality of second virtual machines comprising second sets of computer instructions, each for producing operation output data in response to operation input data and displaying a second virtual front panel on said screen representing an operation controlled by the second virtual machine, wherein said first and second virtual machines respond to input commands for selecting said first and second virtual machines by generating output computer instructions representative of the respective instruction sets of the selected first and second virtual machines;

transmitting said input commands to said software pertaining to ones of said first and second virtual machines selected in response to user input;

combining output computer instructions generated by said ones of said first and second virtual machines in response to said input commands to form new software implementing a third virtual machine executing a sequence of operations synthesizing the operations of said first and second virtual machines selected in response to user input and displaying on said screen a third virtual front panel representing said third virtual machine, wherein said user input further defines the sources and destinations of input and output data for said first and second virtual machines as synthesized by said third virtual machine; and

executing said new software implementing said third virtual machine.

6. The method in accordance with claim 5 wherein said third virtual front panel displays at least one value of instrument output data and wherein the step of executing said new software comprises the step of adjustment of said instrument in response to user input.

7. An instrumentation system for conducting a procedure with respect to a device under test, comprising:

a computer;

a plurality of instruments adapted for coupling to said device under test; and

bus means connecting said instruments to said computer for providing data communication between said instruments and said computer;

said computer being controlled by software implementing a plurality of selectable virtual machines, said virtual machines being associated with said plurality of instruments, a said virtual machine comprising a set of instructions controlling a corresponding instrument and display on said screen of a corresponding virtual front panel;

said software further comprising:

software responsive to operator input for enabling selection of ones of said virtual front panels;

said computer being responsive to said selection for generating a new virtual machine, said new virtual machine controlling display of a new virtual front panel on said screen;

said new virtual machine initiating data transmission with ones of said instruments in response to operator interaction with said new virtual front panel.

8. An instrumentation system comprising:

computer means;

instrumentation which operates according to input data for producing output data;

bus means connecting the instrumentation to the computer means for carrying said input data from said computer means to said instrumentation and for carrying said output data from said instrumentation to said computer means; and

a screen controlled by said computer means;

wherein said computer means is controlled by software for displaying on said screen at least a first virtual front panel graphically depicting said instrumentation;

wherein said computer software implements a first virtual machine comprising a first set of computer instructions for controlling the receipt by said computer means via said bus means of said output data from said instrumentation and a second virtual machine comprising a second set of computer instructions for bringing about a computer operation;

said computer software controlling display on said screen of a second virtual front panel associated with said second virtual machine;

wherein said computer software implements operator controlled selection of ones of said first and second virtual machines to carry out a programmed process involving said instrumentation; and

wherein said computer software further implements synthesizing a new virtual machine wherein said new virtual machine is defined by the selected virtual machine and operator selected interrelationship between said selected virtual machines.
 Description Submit all comments and votes
 


BACKGROUND OF THE INVENTION

The present invention relates in general to programming of computer systems and more particularly to a method and apparatus for developing applications software.

The number of applications for computers has grown remarkably in the last few years and so too has the number of persons skilled in the art of computer programming. Nonetheless computer literacy is not universal and in any case the programming of any new system is usually time consuming. One category of a programmable system involves computer controlled combinations of test instruments adapted to provide a common result. Microcomputers have been incorporated into the design of many electronic test instruments such as multimeters, signal generators, logic analyzers, digitizers and the like wherein the microcomputers typically control instrument settings, data storage and display, and often provide communication with a host computer through interconnecting buses. The host computer may be programmed to supply instructions to the microprocessor in each instrument for controlling the operation of the individual instruments in performing selected tests, while also acquiring data from the instruments, performing calculations based on the acquired data, and displaying the results. Once computer software is developed for various tests to be performed the computer-based instrument system greatly reduces the labor required inasmuch as an operator does not then have to manually adjust the settings of the instruments before or during such test and does not have to manually assemble or process the data acquired. However, the major drawback to such computer-based instrument systems relates to the need for development of separate host computer software for each combination of tests. Testing is described by way of example and it is understood the problems associated with assembling of other combination systems may be similarly addressed. What is needed is a method and apparatus for permitting persons not skilled in the art of computer programming to easily develop easily used computer applications software.

SUMMARY OF THE INVENTION

According to one aspect of the present invention, a computer programming system provides a set of software-based "virtual machines" each for receiving input parameters and for producing output parameters related to the input data in a selected manner. Each virtual machine is suitably represented by a corresponding "virtual front panel" comprising a graphical display or other means for representing its input and output data. The system permits an operator to adjust the values of input parameters displayed by the virtual front panel, by manipulating a cursor or the like, and allows the operator to command the machine to "run" (i.e., to produce and display its output parameters based on the current input parameters) by selecting a command from a displayed menu or other input. The virtual machine front panel provides a graphical representation of underlying virtual machine software in a manner easily understood by an operator and facilitates communication between software and operator.

According to another aspect of the present invention, the operator can define a "synthesized virtual machine" for performing a selected sequence of operations, the operator defining each operation of the sequence by selecting a pre-existing virtual machine capable of performing such operation. The operator also names the input and output parameters of the virtual machine and specifies where the input parameters required by each operation of the sequence are to be obtained. The programming system of the present invention then generates and stores computer code necessary to implement the synthesized virtual machine, including an associated virtual front panel according to the operator's specification, thereby permitting an operator to create applications software without actually writing it. Once the software for a virtual machine has been synthesized, the operator may create instances and for each may adjust the input parameters of the synthesized virtual machine and command it to run in the same manner as any other virtual machine.

According to a further aspect of the invention, the operator may synthesize additional "higher order" virtual machines wherein one or more of a sequence of operations is carried out by previously synthesized virtual machines. In such fashion the operator may create a hierarchy of synthesized virtual machines, each higher order virtual machine employing lower order machines in performing its function. This aspect of the invention permits an operator to create highly complex applications software in a structured manner wherein each separate element of the software comprises a virtual machine which can be independently tested and modified, thereby simplifying the process of developing and debugging applications software.

According to still another aspect of the invention in a preferred embodiment thereof, a host computer is connected through a bus to a set of microcomputer-based instruments such as voltmeters, signal generators and the like, each adapted for performing a selected test or other function. Each instrument is represented by the host computer as a corresponding virtual "instrument" or machine including means to transmit input parameters to the corresponding instrument and to receive output parameters therefrom, the input and output parameters being displayed on a corresponding virtual front panel. Selected host computer operations such as addition, multiplication, and the like, are also carried out by representative virtual machines. Each virtual machine is available for selection by an operator when synthesizing a higher level virtual machine so that operation of any real instrument may form a step in a sequence of operations performed by the higher level virtual machine.

Accordingly, an operator may synthesize a virtual machine to control and coordinate the operations of one or more instruments accessed by the host computer, perform computations based on the data produced by such instruments, and display the results of the computations as outputs on a virtual front panel.

It is therefore an object of the invention to provide a new and improved method and apparatus for organizing computer operation.

It is another object of the invention to provide a new and improved method and apparatus for developing and structuring computer applications software.

It is a further object of the invention to provide a new and improved method and apparatus for programming a computer-based instrument system.

The subject matter of the present invention is particularly pointed out and distinctly claimed in the concluding portion of this specification. However, both the organization and method of operation of the present invention, together with further advantages and objects thereof, may best be understood by reference to the following description taken in connection with accompanying drawings wherein like reference characters refer to like elements.

DRAWINGS

FIG. 1 is a block diagram of a computer-based instrument system for implementing the present invention;

FIGS. 2A-2F are views of virtual front panels for selected virtual instruments;

FIGS. 3A-3P comprise menus, lists and dialog box displays produced by the present invention;

FIG. 4 illustrates an example of a synthesizing window display according to the present invention; and

FIGS. 5-8 are charts of code listings for implementing the present invention.

DETAILED DESCRIPTION

Referring to FIG. 1, there is depicted in block diagram form a computer-based instrument system 10 adapted to control and coordinate the operations of a plurality of computer-based instruments 12 according to the present invention. Instruments 12 include, by way of example, a signal generator 14, a voltmeter 16, and such other instruments 18 as may be useful for testing a device under test 20. Each instrument 12 includes means for receiving signals and input data for controlling its operation from a host computer 22 transmitted over a means for communication such as a bus 24 and/or means to transmit acquired data back to the host computer 22 over means 24. The system 10 also includes a terminal 26 having a display screen and input devices including a keyboard and a mouse controller or similar device for controlling the position of a cursor on the screen. The mouse is provided with three buttons: a red button for selecting objects indicated by the cursor, a blue button for opening a menu for controlling the display of a selected display window on the screen, and a yellow button for opening menus for controlling the behavior of software associated with a selected window.

According to the present invention, the host computer 22 is adapted to communicate with each instrument 12 by means of a corresponding software-based virtual instrument (i.e., virtual machine) comprising a set of computer instructions for performing a selected function and which may be graphically represented in the form of a corresponding "virtual front panel" displayed on terminal 26. The virtual front panel associated with a virtual machine suitably displays the values of any input parameters used by the machine and any output parameters produced by the virtual machine.

A virtual instrument or machine may be adapted to transmit its input parameters to the corresponding real instrument and to acquire its output parameters from the real instrument through bus 24.

Signal generator 14 suitably produces a sinewave signal having two variables, frequency and amplitude, as controlled by data provided by the host computer 12 via bus 24. Referring to FIG. 2A, there is depicted a virtual front panel 28 of a virtual instrument associated with signal generator 14. The values of the frequency and amplitude control variables, comprising input parameters of the virtual instrument, are graphically displayed on the screen of terminal 26 in the form of two simulated, dial-type, logarithmic scale meters 30 and 32. As indicated the signal generator 14 has a frequency range of 1 to 10 (e.g. Hertz) and an amplitude range of 1 to 10 (e.g. volts). The meter representations in the FIG. 2A display are illustrative of settings of 1.0 Hertz and 1.0 volts. The value indicated by each analog meter is also digitally displayed in the center of the meter.

Referring to FIG. 2B, there is depicted a virtual front panel 34 of a virtual instrument associated with the voltmeter 16 of FIG. 1, including a simulated linear bar graph meter display 36 representing the output value of the voltmeter. When the virtual instrument associated with the voltmeter is actuated, it acquires data from the voltmeter indicating the value of the presently measured voltage and adjusts the bar graph meter 36 to display that value. The voltmeter output value is also digitally displayed at the center of the bar graph meter.

The host computer is further adapted to perform a variety of comput