Resource allocation

Method and apparatus for controlling an instrumentation system

5724272

Abstract

A method and apparatus for controlling instrumentation systems and for providing a user with the capability to develop instrument drivers and application software for controlling instrumentation systems. The present invention provides a system including a software architecture which defines the control and management of an instrumentation system. The method of the present invention utilizes a device resource independence approach whereby the individual capabilities of devices are broken down into a plurality of objects called resources and these resources are then used to develop instrument drivers or instrument control applications. The method of the present invention also uses object oriented technology which allows device resources to be easily combined to create higher level applications. The present invention is independent of I/O interface type, operating system, and programming language while also providing a common look and feel and consistent API to the user. The present invention includes novel methods for access control, event handling, resource management, and resource addressing, among others.


Claims

We claim:

1. An instrumentation system for controlling one or more instruments, wherein the instrumentation system comprises:

a computer system including a central processing unit and memory;

one or more instruments coupled to the computer system;

at least one input/output interface coupled between the computer system and said instruments, wherein the at least one input/output interface type used in said instrumentation system comprises one or more of the group consisting of VXI, GPIB, and serial;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said one or more instruments, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

2. The instrumentation system of claim 1,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features specifically for a single type of input/output interface.

3. The instrumentation system of claim 1, further comprising:

at least one common resource template stored in the memory of the computer system comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

4. The instrumentation system of claim 1, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the one or more instruments;

a write resource for writing values to the one or more instruments;

a trigger resource for triggering the one or more instruments;

a poll resource for polling the one or more instruments; and

a clear resource for clearing the one or more instruments.

5. The instrumentation system of claim 4, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the one or more instruments;

one or more access resources for providing register level access to the one or more instruments;

a device command resource for providing commands to the one or more instruments; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

6. The instrumentation system of claim 4, wherein said plurality of instrument control resources further comprise:

a plurality of GPIB specific resources for performing GPIB specific operations on the one or more instruments.

7. The instrumentation system of claim 4, wherein said plurality of instrument control resources further comprise:

a plurality of VXI specific resources for performing VXI specific operations on the one or more instruments.

8. The instrumentation system of claim 4, wherein said plurality of instrument control resources further comprise:

a plurality of serial specific resources for performing serial specific operations on the one or more instruments.

9. The instrumentation system of claim 1,

wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources;

wherein said resource manager comprises:

means for determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

means for creating one or more sessions with said one or more of said plurality of instrument control resources;

means for providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

10. The instrumentation system of claim 9, wherein said instrumentation control program further comprises:

means for invoking operations on said one or more of said plurality of instrument control resources, wherein said invoked operations cause said resources executing on said computer system to control at least one of said one or more instruments.

11. The instrumentation system of claim 9, wherein said at least one input/output interface has one or more types;

wherein said plurality of instrument control resources are based on said one or more types of the at least one input/output interface and said one or more instruments comprised in said instrumentation system.

12. The instrumentation system of claim 1, wherein each of said plurality of resources includes one or more operations, one or more attributes, and one or more events.

13. The instrumentation system of claim 1, wherein at least a subset of said plurality of instrument control resources each control individual capabilities of said one or more instruments.

14. The instrumentation system of claim 1, wherein said VXI, GPIB, and serial input/output interface types comprise possible input/output interface types used in said instrumentation system, wherein said instrumentation control program executes independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

15. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said instruments, wherein the input/output interface type used in said instrumentation system comprises one or more of the group consisting of VXI, GPIB, and serial, the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

16. The method of claim 15,

wherein said providing said plurality of instrument control resource classes comprises providing a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features specifically for a single type of input/output interface.

17. The method of claim 15, further comprising:

providing at least one common resource template comprising interface functions used in controlling and communicating with said plurality of instrument control resources;

said plurality of instrument control resources inheriting functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

18. The method of claim 15, wherein said providing said plurality of instrument control resources comprises providing:

a read resource for reading values from the one or more instruments;

a write resource for writing values to the one or more instruments;

a trigger resource for triggering the one or more instruments;

a poll resource for polling the one or more instruments; and

a clear resource for clearing the one or more instruments.

19. The method of claim 18, wherein said providing said plurality of instrument control resources further comprises providing:

a format resource for formatting values provided to the one or more instruments;

one or more access resources for providing register level access to the one or more instruments;

a device command resource for providing commands to the one or more instruments; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

20. The method of claim 18, wherein said generating said plurality of instrument control resources further comprises generating a plurality of GPIB specific resources for performing GPIB operations on the one or more instruments.

21. The method of claim 18, wherein said generating said plurality of instrument control resources further comprises generating a plurality of VXI specific resources for performing VXI operations on the one or more instruments.

22. The method of claim 18, wherein said generating said plurality of instrument control resources further comprises generating a plurality of serial specific resources for performing serial operations on the one or more instruments.

23. The method of claim 15, wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources, the method further comprising:

said resource manager determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

said resource manager creating one or more sessions with said one or more of said plurality of instrument control resources; and

said resource manager providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

24. The method of claim 23, further comprising:

said instrumentation control program invoking operations on said one or more of said plurality of instrument control resources; and

said one or more of said plurality of instrument control resources executing on said computer system to control at least one of said one or more instruments in response to said invoked operations.

25. The method of claim 15, further comprising:

executing said instrumentation control program to control said instrumentation system;

wherein said executing comprises:

receiving an open instruction which specifies one or more of said plurality of instrument control resources;

determining the location of said one or more of said plurality of instrument control resources specified in said receiving an open instruction;

creating one or more sessions with said one or more of said plurality of instrument control resources; and

providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

26. The method of claim 15, wherein said at least one input/output interface has one or more types;

wherein said generating generates said plurality of instrument control resources based on said one or more types of the at least one input/output interface and said one or more instruments comprised in said instrumentation system.

27. The method of claim 26, further comprising:

determining the input/output interface types and instruments comprised in said instrumentation system;

wherein said generating said plurality of instrument control resources comprises utilizing said plurality of resource classes and said determined input/output interface types and instrument types to create said plurality of instrument control resources.

28. The method of claim 15, further comprising:

registering said plurality of instrument control resources with said resource manager after said generating said plurality of instrument control resources and after said providing said resource manager.

29. The method of claim 15, wherein said computer system communicates with said instruments through a type of input/output interface, the method further comprising:

executing said instrumentation control program to control said instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

30. The method of claim 15, wherein each of said plurality of instrument control resources includes one or more operations, one or more attributes, and one or more events.

31. The method of claim 15, wherein at least a subset of said plurality of instrument control resources each control individual capabilities of said one or more instruments.

32. The method of claim 15, wherein said VXI, GPIB, and serial input/output interface types comprise possible input/output interface types used in said instrumentation system, wherein said instrumentation control program executes independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

33. An instrumentation system for controlling one or more instruments, wherein the instrumentation system comprises:

a computer system including a central processing unit and memory;

one or more instruments coupled to the computer system;

at least one input/output interface coupled between the computer system and said instruments, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, serial, or data acquisition;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said one or more instruments, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

34. An instrumentation system for controlling one or more instruments, wherein the instrumentation system comprises:

a computer system including a central processing unit and memory;

one or more instruments coupled to the computer system, wherein said one or more instruments includes at least one GPIB instrument;

at least one input/output interface coupled between the computer system and said one or more instruments, wherein said at least one input/output interface includes a GPIB interface;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said one or more instruments, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said plurality of instrument control resources includes one or more GPIB specific resources for performing GPIB operations on the at least one GPIB instrument;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

35. The instrumentation system of claim 34,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features specifically for a single type of input/output interface.

36. The instrumentation system of claim 34, further comprising:

at least one common resource template stored in the memory of the computer system comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

37. The instrumentation system of claim 34, wherein said input/output interface type used in said instrumentation system comprises VXI, GPIB, or serial.

38. The instrumentation system of claim 37, wherein said plurality of instrument control resources further comprise:

a plurality of VXI specific resources for performing VXI operations on the one or more instruments.

39. The instrumentation system of claim, 37, wherein said plurality of instrument control resources further comprise:

a plurality of serial specific resources for performing serial operations on the one or more instruments.

40. The instrumentation system of claim 34, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the one or more instruments;

a write resource for writing values to the one or more instruments;

a trigger resource for triggering the one or more instruments;

a poll resource for polling the one or more instruments; and

a clear resource for clearing the one or more instruments.

41. The instrumentation system of claim 40, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the one or more instruments;

one or more access resources for providing register level access to the one or more instruments;

a device command resource for providing commands to the one or more instruments; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

42. The instrumentation system of claim 34,

wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources;

wherein said resource manager comprises:

means for determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

means for creating one or more sessions with said one or more of said plurality of instrument control resources;

means for providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

43. The instrumentation system of claim 42, wherein said instrumentation control program further comprises:

means for invoking operations on said one or more of said plurality of instrument control resources, wherein said invoked operations cause said resources executing on said computer system to control at least one of said one or more instruments.

44. The instrumentation system of claim 42, wherein said at least one input/output interface has one or more types;

wherein said plurality of instrument control resources are based on said one or more types of the at least one input/output interface and said one or more instruments comprised in said instrumentation system.

45. The instrumentation system of claim 34, wherein at least a subset of said plurality of instrument control resources each control individual capabilities of said one or more instruments.

46. The instrumentation system of claim 34, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, serial, or data acquisition.

47. The instrumentation system of claim 34, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, or serial;

wherein said VXI, GPIB, and serial input/output interface types comprise possible input/output interface types used in said instrumentation system, wherein said instrumentation control program executes independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

48. An instrumentation system for controlling one or more instruments, wherein the instrumentation system comprises:

a computer system including a central processing unit and memory;

one or more instruments coupled to the computer system, wherein said one or more instruments includes at least one VXI instrument;

at least one input/output interface coupled between the computer system and said one or more instruments, wherein said at least one input/output interface includes a VXI interface;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said one or more instruments, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said plurality of instrument control resources includes one or more VXI specific resources for performing VXI operations on the at least one VXI instrument;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

49. The instrumentation system of claim 48,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features specifically for a single type of input/output interface.

50. The instrumentation system of claim 48, further comprising:

at least one common resource template stored in the memory of the computer system comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

51. The instrumentation system of claim 48, wherein said input/output interface type used in said instrumentation system comprises VXI, GPIB, or serial.

52. The instrumentation system of claim 51, wherein said plurality of instrument control resources further comprise:

a plurality of GPIB specific resources for performing GPIB operations on the one or more instruments.

53. The instrumentation system of claim 51, wherein said plurality of instrument control resources further comprise:

a plurality of serial specific resources for performing serial operations on the one or more instruments.

54. The instrumentation system of claim 48, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the one or more instruments;

a write resource for writing values to the one or more instruments;

a trigger resource for triggering the one or more instruments;

a poll resource for polling the one or more instruments; and

a clear resource for clearing the one or more instruments.

55. The instrumentation system of claim 54, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the one or more instruments;

one or more access resources for providing register level access to the one or more instruments;

a device command resource for providing commands to the one or more instruments; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

56. The instrumentation system of claim 48,

wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources;

wherein said resource manager comprises:

means for determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

means for creating one or more sessions with said one or more of said plurality of instrument control resources;

means for providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

57. The instrumentation system of claim 56, wherein said instrumentation control program further comprises:

means for invoking operations on said one or more of said plurality of instrument control resources, wherein said invoked operations cause said resources executing on said computer system to control at least one of said one or more instruments.

58. The instrumentation system of claim 56, wherein said at least one input/output interface has one or more types;

wherein said plurality of instrument control resources are based on said one or more types of the at least one input/output interface and said one or more instruments comprised in said instrumentation system.

59. The instrumentation system of claim 48, wherein at least a subset of said plurality of instrument control resources each control individual capabilities of said one or more instruments.

60. The instrumentation system of claim 48, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, serial, or data acquisition.

61. The instrumentation system of claim 48, wherein the at least one input/output interface type used in said instrumentation system VXI, GPIB, or serial, wherein said VXI, GPIB, or serial input/output interface types comprise possible input/output interface types used in said instrumentation system;

wherein said instrumentation control program executes independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

62. An instrumentation system for controlling one or more instruments, wherein the instrumentation system comprises:

a computer system including a central processing unit and memory;

one or more instruments coupled to the computer system, wherein the one or more instruments includes at least one serial instrument;

at least one input/output interface coupled between the computer system and said one or more instruments, wherein said at least one input/output interface includes a serial interface;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said one or more instruments, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said plurality of instrument control resources includes one or more serial specific resources for performing serial operations on the at least one serial instrument;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

63. The instrumentation system of claim 62,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features specifically for a single type of input/output interface.

64. The instrumentation system of claim 62, further comprising:

at least one common resource template stored in the memory of the computer system comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

65. The instrumentation system of claim 62, wherein said input/output interface type used in said instrumentation system comprises VXI, GPIB, or serial.

66. The instrumentation system of claim 65, wherein said plurality of instrument control resources further comprise:

a plurality of VXI specific resources for performing VXI operations on the one or more instruments.

67. The instrumentation system of claim 65, wherein said plurality of instrument control resources further comprise:

a plurality of GPIB specific resources for performing GPIB operations on the one or more instruments.

68. The instrumentation system of claim 62, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the one or more instruments;

a write resource for writing values to the one or more instruments;

a trigger resource for triggering the one or more instruments;

a poll resource for polling the one or more instruments; and

a clear resource for clearing the one or more instruments.

69. The instrumentation system of claim 68, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the one or more instruments;

one or more access resources for providing register level access to the one or more instruments;

a device command resource for providing commands to the one or more instruments; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

70. The instrumentation system of claim 62,

wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources;

wherein said resource manager comprises:

means for determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

means for creating one or more sessions with said one or more of said plurality of instrument control resources;

means for providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

71. The instrumentation system of claim 70, wherein said instrumentation control program further comprises:

means for invoking operations on said one or more of said plurality of instrument control resources, wherein said invoked operations cause said resources executing on said computer system to control at least one of said one or more instruments.

72. The instrumentation system of claim 70, wherein said at least one input/output interface has one or more types;

wherein said plurality of instrument control resources are based on said one or more types of the at least one input/output interface and said one or more instruments comprised in said instrumentation system.

73. The instrumentation system of claim 62, wherein at least a subset of said plurality of instrument control resources each control individual capabilities of said one or more instruments.

74. The instrumentation system of claim 62, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, serial, or data acquisition.

75. The instrumentation system of claim 62, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, or serial;

wherein said VXI, GPIB, and serial input/output interface types comprise possible input/output interface types used in said instrumentation system, wherein said instrumentation control program executes independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

76. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said instruments, wherein the input/output interface type used in said instrumentation system comprises VXI, GPIB, serial, or data acquisition, the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

77. A computer-implemented method for creating a program for controlling instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said instruments, wherein the at least one input/output interface includes a GPIB interface, the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said generating said plurality of instrument control resources includes generating one or more GPIB specific resources for performing GPIB operations on the one or more instruments;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

78. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said instruments, wherein the at least one input/output interface includes a VXI interface, the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said generating said plurality of instrument control resources includes generating one or more VXI specific resources for performing VXI operations on the one or more instruments;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

79. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said instruments, wherein the at least one input/output interface includes a serial interface, the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said generating said plurality of instrument control resources includes generating one or more serial specific resources for performing serial operations on the one or more instruments;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

80. An instrumentation control system, comprising:

a computer system including a central processing unit and memory;

at least one instrument coupled to said computer system, wherein the at least one instrument couples to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system comprise VXI, GPIB, or serial;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said at least one instrument;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said at least one instrument, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said at least one instrument comprised in said instrumentation system;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.

81. The instrumentation control system of claim 80, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system without any modifications to said instrumentation control program.

82. The instrumentation control system of claim 80, wherein said two or more of said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system comprises a subset of all of the possible input/output (I/O) interface types for coupling said at least one instrument to said computer system.

83. The instrumentation system of claim 80,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features which are specific to one or more, but not all, of said input/output interface types.

84. The instrumentation system of claim 80, further comprising:

at least one common resource template stored in the memory of the computer system comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

85. The instrumentation system of claim 80, wherein said plurality of instrument control resources further comprise:

a plurality of VXI specific resources for performing VXI operations on the at least one instrument.

86. The instrumentation system of claim 80, wherein said plurality of instrument control resources further comprise:

a plurality of GPIB specific resources for performing GPIB operations on the at least one instrument.

87. The instrumentation system of claim 80, wherein said plurality of instrument control resources further comprise:

a plurality of serial specific resources for performing serial operations on the at least one instrument.

88. The instrumentation system of claim 80, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the at least one instrument;

a write resource for writing values to the at least one instrument;

a trigger resource for triggering the at least one instrument;

a poll resource for polling the at least one instrument; and

a clear resource for clearing the at least one instrument.

89. The instrumentation system of claim 88, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the at least one instrument;

one or more access resources for providing register level access to the at least one instrument;

a device command resource for providing commands to the at least one instrument; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

90. The instrumentation system of claim 80,

wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources;

wherein said resource manager comprises:

means for determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

means for creating one or more sessions with said one or more of said plurality of instrument control resources;

means for providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

91. The instrumentation system of claim 90, wherein said instrumentation control program further comprises:

means for invoking operations on said one or more of said plurality of instrument control resources, wherein said invoked operations cause said resources executing on said computer system to control said at least one instrument.

92. The instrumentation system or claim 90, wherein said at least one input/output interface has one or more types;

wherein said plurality of instrument control resources are based on said one or more types of the at least one input/output interface and said at least one instrument comprised in said instrumentation system.

93. The instrumentation system of claim 80, wherein at least a subset of said plurality of instrument control resources each control individual capabilities of said at least one instrument.

94. The instrumentation system of claim 80, wherein said VXI, GPIB, and serial input/output interface types comprise possible input/output interface types used in said instrumentation system, wherein said instrumentation control program executes independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

95. An instrumentation control system, comprising:

a computer system including a central processing unit and memory;

at least one instrument coupled to said computer system, wherein the at least one instrument couples to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system comprise VXI, GPIB, serial, or data acquisition;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said at least one instrument;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said at least one instrument, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said at least one instrument comprised in said instrumentation system;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.

96. An instrumentation system for controlling one or more instruments, wherein the instrumentation system comprises:

a computer system including a central processing unit and memory;

at least one instrument coupled to said computer system, wherein said at least one instrument includes at least one GPIB instrument;

at least one input/output interface coupled between the computer system and said at least one instrument, wherein the at least one instrument couples to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said at least one input/output interface includes a GPIB interface;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said at least one instrument;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said at least one instrument, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said at least one instrument comprised in said instrumentation system, wherein said plurality of instrument control resources include GPIB specific resources for performing GPIB operations on the at least one GPIB instrument;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system.

97. The instrumentation control system of claim 96, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system without any modifications to said instrumentation control program.

98. The instrumentation control system of claim 96, wherein said two or more of said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system comprises a subset of all of the possible input/output (I/O) interface types for coupling said at least one instrument to said computer system.

99. The instrumentation system of claim 98, wherein said input/output interface type used in said instrumentation system comprises VXI, GPIB, or serial.

100. The instrumentation system of claim 96,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features which are specific to one or more, but not all, of said input/output interface types.

101. The instrumentation system of claim 96, further comprising:

at least one common resource template stored in the memory of the computer system comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

102. The instrumentation system of claim 96, wherein said plurality of instrument control resources further comprise:

a plurality of VXI specific resources for performing VXI operations on the at least one instrument.

103. The instrumentation system of claim 96, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the at least one instrument;

a write resource for writing values to the at least one instrument;

a trigger resource for triggering the at least one instrument;

a poll resource for polling the at least one instrument; and

a clear resource for clearing the at least one instrument.

104. The instrumentation system of claim 103, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the at least one instrument;

one or more access resources for providing register level access to the at least one instrument;

a device command resource for providing commands to the at least one instrument; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

105. The instrumentation system of claim 96, wherein at least a subset of said plurality of instrument control resources each control individual capabilities of said at least one instrument.

106. The instrumentation system of claim 96, wherein VXI, GPIB, and serial input/output interface types comprise possible input/output interface types used in said instrumentation system, wherein said instrumentation control program executes independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

107. An instrumentation system for controlling one or more instruments, wherein the instrumentation system comprises:

a computer system including a central processing unit and memory;

at least one instrument coupled to said computer system, wherein said at least one instrument includes at least one VXI instrument;

at least one input/output interface coupled between the computer system and said at least one instrument, wherein the at least one instrument couples to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said at least one input/output interface includes a VXI interface;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said at least one instrument;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said at least one instrument, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said at least one instrument comprised in said instrumentation system, wherein said plurality of instrument control resources includes one or more VXI specific resources for performing VXI operations on the at least one VXI instrument;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system.

108. The instrumentation control system of claim 107, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system without any modifications to said instrumentation control program.

109. The instrumentation control system of claim 107, wherein said two or more of said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system comprises a subset of all of the possible input/output (I/O) interface types for coupling said at least one instrument to said computer system.

110. The instrumentation system of claim 109, wherein said input/output interface type used in said instrumentation system comprises VXI, GPIB, or serial.

111. The instrumentation system of claim 107,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features which are specific to one or more, but not all, of said input/output interface types.

112. The instrumentation system of claim 107, further comprising:

at least one common resource template stored in the memory of the computer system comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

113. The instrumentation system of claim 107, wherein said plurality of instrument control resources further comprise:

a plurality of GPIB specific resources for performing GPIB operations on the at least one instrument.

114. The instrumentation system of claim 107, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the at least one instrument;

a write resource for writing values to the at least one instrument;

a trigger resource for triggering the at least one instrument;

a poll resource for polling the at least one instrument; and

a clear resource for clearing the at least one instrument.

115. The instrumentation system of claim 114, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the at least one instrument;

one or more access resources for providing register level access to the at least one instrument;

a device command resource for providing commands to the at least one instrument; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

116. The instrumentation system of claim 107, wherein at least a subset said plurality of instrument control resources each control individual capabilities of said at least one instrument.

117. The instrumentation system of claim 107, wherein VXI, GPIB, and serial input/output interface types comprise possible input/output interface types used in said instrumentation system, wherein said instrumentation control program executes independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

118. An instrumentation system for controlling one or more instruments, wherein the instrumentation system comprises:

a computer system including a central processing unit and memory;

at least one instrument coupled to said computer system, wherein said at least one instrument includes at least one serial instrument;

at least one input/output interface coupled between the computer system and said at least one instrument, wherein the at least one instrument couples to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said at least one input/output interface includes a serial interface;

a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said at least one instrument;

a plurality of instrument control resources stored in the memory of the computer system for controlling instrument device capabilities of said at least one instrument, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said at least one instrument comprised in said instrumentation system, wherein said plurality of instrument control resources includes one or more serial specific resources for performing serial operations on the at least one serial instrument;

a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program stored in the memory of the computer system using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system.

119. The instrumentation control system of claim 118, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system without any modifications to said instrumentation control program.

120. The instrumentation control system of claim 118, wherein said two or more of said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system comprises a subset of all of the possible input/output (I/O) interface types for coupling said at least one instrument to said computer system.

121. The instrumentation system of claim 120, wherein said input/output interface type used in said instrumentation system comprises VXI, GPIB, or serial.

122. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said one or more instruments, wherein the one or more instruments couple to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system comprises VXI, GPIB, or serial; the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.

123. The method of claim 122, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system without any modifications to said instrumentation control program.

124. The method of claim 122, wherein said two or more of said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system comprises a subset of all of the possible input/output (I/O) interface types for coupling said one or more instruments to said computer system.

125. The method of claim 122,

wherein said providing said plurality of instrument control resource classes comprises providing a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which are specific to one or more, but not all, of said input/output interface types.

126. The method of claim 122, further comprising:

providing at least one common resource template comprising interface functions used in controlling and communicating with said plurality of instrument control resources;

said plurality of instrument control resources inheriting functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

127. The method of claim 122, wherein said providing said plurality of instrument control resources comprises providing:

a read resource for reading values from the one or more instruments;

a write resource for writing values to the one or more instruments;

a trigger resource for triggering the one or more instruments;

a poll resource for polling the one or more instruments; and

a clear resource for clearing the one or more instruments.

128. The method of claim 127, wherein said providing said plurality of instrument control resources further comprises providing:

a format resource for formatting values provided to the one or more instruments;

one or more access resources for providing register level access to the one or more instruments;

a device command resource for providing commands to the one or more instruments; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

129. The method of claim 122, wherein said providing said plurality of instrument control resources further comprises providing a plurality of GPIB specific resources for performing GPIB operations on the one or more instruments.

130. The method of claim 122, wherein said providing said plurality of instrument control resources further comprises providing a plurality of VXI specific resources for performing VXI operations on the one or more instruments.

131. The method of claim 122, wherein said providing said plurality of instrument control resources further comprises providing a plurality of serial specific resources for performing serial operations on the one or more instruments.

132. The method of claim 122, wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources, the method further comprising:

said resource manager determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

said resource manager creating one or more sessions with said one or more of said plurality of instrument control resources; and

said resource manager providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

133. The method of claim 132, further comprising:

said instrumentation control program invoking operations on said one or more of said plurality of instrument control resources; and

said one or more of said plurality of instrument control resources executing on said computer system to control at least one of said one or more instruments in response to said invoked operations.

134. The method of claim 122, further comprising:

executing said instrumentation control program to control said instrumentation system;

wherein said executing comprises:

receiving an open instruction which specifies one or more of said plurality of instrument control resources;

determining the location of said one or more of said plurality of instrument control resources specified in said receiving an open instruction;

creating one or more sessions with said one or more of said plurality of instrument control resources; and

providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

135. The method of claim 122, wherein said at least one input/output interface has one or more types;

wherein said generating generates said plurality of instrument control resources based on said one or more types of the at least one input/output interface and said one or more instruments comprised in said instrumentation system.

136. The method of claim 135, further comprising:

determining the input/output interface types and instruments comprised in said instrumentation system;

wherein said generating said plurality of instrument control resources comprises utilizing said plurality of resource classes and said determined input/output interface types and instrument types to create said plurality of instrument control resources.

137. The method of claim 122, further comprising:

registering said plurality of instrument control resources with said resource manager after said generating said plurality of instrument control resources and after said providing said resource manager.

138. The method of claim 122, wherein said computer system communicates with said instruments through said at least one input/output interface, the method further comprising:

executing said instrumentation control program to control said instrumentation system, wherein said instrumentation control program executes independent of said input/output interface type used in said instrumentation system.

139. The method of claim 122, wherein each of said plurality of instrument control resources includes one or more operations, one or more attributes, and one of more events.

140. The method of claim 122, wherein at least a subset of said plurality of instrument control resources each control individual capabilities of said one or more instruments.

141. The method of claim 122, wherein said VXI, GPIB, and serial input/output interface types comprise possible input/output interface types used in said instrumentation system, wherein said instrumentation control program executing to control the instrumentation system comprises the instrumentation control program executing independent of which one or more of a plurality of said possible input/output interface types is used in said instrumentation system.

142. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said one or more instruments, wherein the one or more instruments couple to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system comprise VXI, GPIB, serial, or data acquisition; the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.

143. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said one or more instruments, wherein the one or more instruments couple to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said at least one input/output includes a GPIB interface, the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said generating includes generating one or more GPIB specific resources for performing GPIB operations;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.

144. The method of claim 143, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system without any modifications to said instrumentation control program.

145. The method of claim 143, wherein said two or more of said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system comprises a subset of all of the possible input/output (I/O) interface types for coupling said one or more instruments to said computer system.

146. The method of claim 143, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, serial, or data acquisition.

147. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said one or more instruments, wherein the one or more instruments couple to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said at least one input/output includes a VXI interface, the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said generating includes generating one or more VXI specific resources for performing VXI operations;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.

148. The method of claim 147, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system without any modifications to said instrumentation control program.

149. The method of claim 147, wherein said two or more of said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system comprises a subset of all of the possible input/output (I/O) interface types for coupling said one or more instruments to said computer system.

150. The method of claim 147, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, serial, or data acquisition.

151. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said one or more instruments, wherein the one or more instruments couple to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said at least one input/output includes a serial interface, the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system, wherein said generating includes generating one or more serial specific resources for performing serial operations;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

constructing an instrumentation control program which uses one or more of said plurality of instrument control resources to control the instrumentation system, wherein said constructing is in response to user input; and

said instrumentation control program executing to control the instrumentation system, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.

152. The method of claim 151, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system without any modifications to said instrumentation control program.

153. The method of claim 151, wherein said two or more of said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system comprises a subset of all of the possible input/output (I/O) interface types for coupling said one or more instruments to said computer system.

154. The method of claim 151, wherein the at least one input/output interface type used in said instrumentation system comprises VXI, GPIB, serial, or data acquisition.

155. A computer-readable storage media for operating in an instrumentation system, the instrumentation system comprising a computer system including a central processing unit, one or more instruments coupled to the computer system, and at least one input/output interface coupled between the computer system and the instruments, wherein the at least one input/output interface type used in the instrumentation system includes one or more of the group comprising VXI, GPIB, and serial, wherein the computer-readable storage media includes a substrate having a physical configuration representing data, the storage media comprising:

a plurality of instrument control resource classes comprised on the storage media which provide functionality for controlling instrument device capabilities of said one or more instruments;

a plurality of instrument control resources comprised on the storage media for controlling instrument device capabilities of said one or more instruments, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

a resource manager comprised on the storage media for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program comprised on the storage media using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program executes regardless of said input/output interface type used in said instrumentation system.

156. The computer-readable storage media of claim 155,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features specifically for a single type of input/output interface.

157. The computer-readable storage media of claim 155, further comprising:

at least one common resource template comprised on the storage media comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

158. The computer-readable storage media of claim 155, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the one or more instruments;

a write resource for writing values to the one or more instruments;

a trigger resource for triggering the one or more instruments;

a poll resource for polling the one or more instruments; and

a clear resource for clearing the one or more instruments.

159. The computer-readable storage media of claim 158, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the one or more instruments;

one or more access resources for providing register level access to the one or more instruments;

a device command resource for providing commands to the one or more instruments; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

160. The computer-readable storage media of claim 155, wherein said plurality of instrument control resources further comprise:

a plurality of GPIB specific resources for performing GPIB specific operations on the one or more instruments.

161. The computer-readable storage media of claim 155, wherein said plurality of instrument control resources further comprise:

a plurality of VXI specific resources for performing VXI specific operations on the one or more instruments.

162. The computer-readable storage media of claim 155, wherein said plurality of instrument control resources further comprise:

a plurality of serial specific resources for performing VXI specific operations on the one or more instruments.

163. The computer-readable storage media of claim 155, wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources;

wherein said resource manager comprises:

means comprised on the storage media for determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

means comprised on the storage media for creating one or more sessions with said one or more of said plurality of instrument control resources;

means comprised on the storage media for providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

164. The computer-readable storage media of claim 163, wherein said instrumentation control program further comprises:

means comprised on the storage media for invoking operations on said one or more of said plurality of instrument control resources, wherein said invoked operations cause said resources executing on said computer system to control at least one of said one or more instruments.

165. The computer-readable storage media of claim 163, wherein said at least one input/output interface has one or more types;

wherein said plurality of instrument control resources are based on said one or more types of the at least one input/output interface and said one or more instruments comprised in said instrumentation system.

166. A computer-readable storage media for operating in an instrumentation system, the instrumentation system comprising a computer system including a central processing unit, one or more instruments coupled to the computer system, and at least one input/output interface coupled between the computer system and the one or more instruments, wherein the one or more instruments couple to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said plurality of possible input/output (I/O) interface types for coupling said at least one instrument to said computer system include one or more from the group comprising: VXI, GPIB, and serial; wherein the computer-readable storage media includes a substrate having a physical configuration representing data, the storage media comprising:

a plurality of instrument control resource classes comprised on the storage media which provide functionality for controlling instrument device capabilities of said one or more instruments;

a plurality of instrument control resources comprised on the storage media for controlling instrument device capabilities of said one or more instruments, wherein said plurality of instrument control resources inherit functionality from said plurality of instrument control resource classes, wherein said plurality of instrument control resources are based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

a resource manager comprised on the storage media for providing user control, communication and access to said plurality of instrument control resources, wherein said resource manager maintains a data structure comprising information on said instrument control resources; and

an instrumentation control program comprised on the storage media using one or more of said plurality of instrument control resources, wherein said instrumentation control program controls the instrumentation system, wherein said instrumentation control program is operable to control the at least one instrument independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.

167. The computer-readable storage media of claim 166,

wherein said plurality of instrument control resource classes comprise a first number of common resource classes which have commonality with two or more input/output interface types, and a second number of specific resource classes which control features specifically for a single type of input/output interface.

168. The computer-readable storage media of claim 166, further comprising:

at least one common resource template comprised on the storage media comprising interface functions used in controlling and communicating with said plurality of instrument control resources, wherein said plurality of instrument control resources inherit functionality from said common resource template, wherein said common resource template does not include instrumentation-specific interface functions.

169. The computer-readable storage media of claim 166, wherein said plurality of instrument control resources comprise:

a read resource for reading values from the one or more instruments;

a write resource for writing values to the one or more instruments;

a trigger resource for triggering the one or more instruments;

a poll resource for polling the one or more instruments; and

a clear resource for clearing the one or more instruments.

170. The computer-readable storage media of claim 169, wherein said plurality of instrument control resources further comprise:

a format resource for formatting values provided to the one or more instruments;

one or more access resources for providing register level access to the one or more instruments;

a device command resource for providing commands to the one or more instruments; and

a status/service request resource for requesting services, and for detecting requests for service and procuring status information.

171. The computer-readable storage media of claim 166, wherein said plurality of instrument control resources further comprise:

a plurality of GPIB specific resources for performing GPIB specific operations on the one or more instruments.

172. The computer-readable storage media of claim 166, wherein said plurality of instrument control resources further comprise:

a plurality of VXI specific resources for performing VXI specific operations on the one or more instruments.

173. The computer-readable storage media of claim 166, wherein said plurality of instrument control resources further comprise:

a plurality of serial specific resources for performing VXI specific operations on the one or more instruments.

174. The computer-readable storage media of claim 166, wherein said instrumentation control program includes an open instruction which specifies one or more of said plurality of instrument control resources;

wherein said resource manager comprises:

means comprised on the storage media for determining the location of said one or more of said plurality of instrument control resources specified in said open instruction;

means comprised on the storage media for creating one or more sessions with said one or more of said plurality of instrument control resources;

means comprised on the storage media for providing one or more identifiers to said instrument control program corresponding to said one or more sessions.

175. The computer-readable storage media or claim 174, wherein said instrumentation control program further comprises:

means comprised on the storage media for invoking operations on said one or more of said plurality of instrument control resources, wherein said invoked operations cause said resources executing on said computer system to control at least one of said one or more instruments.

176. The computer-readable storage media of claim 174, wherein said at least one input/output interface has one or more types;

wherein said plurality of instrument control resources are based on said one or more types of the at least one input/output interface and said one or more instruments comprised in said instrumentation system.

177. A computer-implemented method for creating a program for controlling an instrumentation system, wherein the instrumentation system comprises a computer system and one or more instruments coupled to the computer system, wherein the instrumentation system further includes at least one input/output interface coupled between the computer system and said one or more instruments, wherein the one or more instruments couple to the computer system through one or more of a plurality of possible input/output (I/O) interface types, wherein said plurality of possible input/output (I/O) interface types for coupling said one or more instruments to said computer system comprises VXI, GPIB, or serial; the method comprising:

providing a plurality of instrument control resource classes stored in the memory of the computer system which provide functionality for controlling instrument device capabilities of said one or more instruments;

generating a plurality of instrument control resources for controlling instrument device capabilities of said one or more instruments, wherein said generating includes said plurality of instrument control resources inheriting functionality from said plurality of instrument control resource classes, wherein said generating further comprises storing said plurality of instrument control resources in the memory of the computer system, wherein said plurality of instrument control resources are generated based on the at least one input/output interface and said one or more instruments comprised in said instrumentation system;

providing a resource manager stored in the memory of the computer system for providing user control, communication and access to said plurality of instrument control resources;

wherein said plurality of instrument control resources and said resource manager are usable to construct an instrumentation control program to control the instrumentation system, wherein said instrumentation control program is executable to control the instrumentation system, wherein said instrumentation control program is operable to control the one or more instruments independent of two or more of said plurality of possible input/output (I/O) interface types for coupling said instrument to said computer system.


Description

FIELD OF THE INVENTION

The present invention relates to I/O control software for instrumentation systems, and more particularly to I/O control software which utilizes a device resource independence model that is independent of instrument type, interface type, operating system, and programming language.

This application includes microfiche appendix, 6 sheets, 479 frames.

DESCRIPTION OF THE RELATED ART

An instrument is a device which collects data or information from an environment or unit under test and displays this information to a user. An instrument may also perform various data analysis and data processing on acquired data prior to displaying the data to the user. Examples of various types of instruments include oscilloscopes, digital multimeters, pressure sensors, etc., and the types of information which might be collected by respective instruments include voltage, resistance, distance, velocity, pressure, frequency of oscillation, humidity or temperature, among others.

In the past, many instrumentation systems comprised individual instruments physically interconnected with each other. 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 interacts with software executing on the computer system through the computer's video monitor rather than through a manually operated front panel to control one or more real world instruments. The software executing on the computer system can be used to simulate the operation of an instrument in software or to control or communicate with one or more real world instruments, these software created/controlled instruments being referred to as virtual instruments.

Therefore, modern instrumentation systems are moving from dedicated stand-alone hardware instruments such as oscilloscopes, digital multimeters, etc., to a concept referred to as virtual instrumentation. Virtual instrumentation comprises general purpose personal computers and workstations combined with instrumentation software and hardware to build a complete instrumentation system. In a virtual instrumentation system, a virtual instrument operating on a central computer controls the 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, and computerized instrumentation systems provide significant performance efficiencies over earlier systems for linking and controlling test instruments.

The various hardware interface options currently available for instrumentation systems can be categorized into four distinct types, including IEEE 488-controlled instruments (GPIB instruments), VXI bus instruments, plug-in data acquisition (DAQ) boards, and RS-232-controlled (serial) instruments. Background on these various hardware interface options is deemed appropriate.

The GPIB (general purpose interface bus) began as a bus designed by Hewlett-Packard in 1965, referred to as the Hewlett-Packard Interface Bus (HPIB), to connect their line of programmable instruments to their computers. National Instruments Corporation expanded the use of this bus to computers manufactured by companies other than Hewlett-Packard and hence the name General Purpose Interface Bus (GPIB) became more widely used than HPIB. The GPIB interface bus gained popularity due to its high transfer rates and was later accepted as IEEE standard 488-1975, and the bus later evolved to ANSI/IEEE standard 488.1-1987. In order to improve on this standard, two new standards were drafted, these being ANSI/IEEE 488.2-1987 and the SCPI (Standard Commands for Programmable Instruments) standard. The IEEE 488.2 standard strengthened the original standard by defining precisely how controllers and instruments communicated. The IEEE 488.2 standard removed ambiguities of the IEEE 488.1 standard by defining data formats, status reporting, a message exchange protocol, IEEE 488.2 controller requirements, and common configuration commands to which all IEEE 488.2 instruments must respond in a precise manner. Thus, the IEEE 488.2 standard created more compatible, more reliable systems that were simpler to program. In 1990, a new specification was developed referred to as the Standard Commands for Programmable Instruments (SCPI), which used the command structures defined in the IEEE 488.2 standard and formed a single, comprehensive programming command set that is used with any SCPI instrument. The SCPI standard simplified the programming process for manufacturers and users alike. Rather than having to learn a different command set for each instrument, the user could focus on solving the measurement tests of his or her application, thus decreasing programming time.

The VXI (VME eXtension for Instrumentation) bus is a platform for instrumentation systems that was first introduced in 1987 and was originally designed as an extension of the VME bus standard. The VXI standard has experienced tremendous growth and acceptance around the world and is used in a wide variety of traditional test and measurement and ATE applications. The VXI standard uses a mainframe chassis with a plurality of slots to hold modular instruments on plug-in boards. The VXI architecture is capable of interfacing with both message based instruments and register based instruments. A message based instrument is an instrument which is controlled by a string of ASCII characters, whereas a register based instrument is controlled by writing a bitstream of 1's and 0's directly to registers in the instrument hardware.

An instrumentation system using a data acquisition interface method typically includes transducers which sense physical phenomena from the process or unit under test and provide electrical signals to data acquisition hardware inside the computer system. The electrical signals generated by the transducers are converted into a form that the data acquisition board can accept, typically by signal conditioning logic positioned between the transducers and the data acquisition card in the computer system. A computer can also control an instrumentation system through the computer's serial or RS-232 port. There are currently thousands of instruments with an RS-232 interface.

Due to the wide variety of possible testing situations and environments, and also the wide array of instruments available, it is often necessary for a user to develop a program to control respective instruments in the desired instrumentation system. Therefore, implementation of such systems frequently require the involvement of a programmer to develop software for acquisition, analysis and presentation of instrumentation data.

The software architecture for a virtual instrumentation system comprises several components. The top level of the software architecture typically comprises an applications program used for high level control of the virtual instrument. Examples of high level applications programs for instrumentation control are LabVIEW and LabWindows from National Instruments Corp. Other examples of applications programs are HP VEE from Hewlett-Packard and Wavetest from Wavetek Corp. among others. These applications programs provide a user with the tools to control instruments, including acquiring data, analyzing data, and presenting data.

The applications programs mentioned above typically operate in conjunction with one or more instrument drivers to interface to actual physical instruments. For example, the LabVIEW and LabWindows applications software each include instrument libraries comprising drivers for more than three hundred GPIB, VXI, and RS-232 instruments from numerous manufacturers. The instrument drivers are designed to reduce a user's application development time by providing intuitive high level functions that relieve the user of complex low level instrument programming.

A software level referred to as driver level software is below the instrument driver level. Driver level software is used to interface the commands in the instrument driver to the actual hardware interface being used, such as a GPIB interface card, a data acquisition card, or a VXI card. In other words, driver level software handles the details of communication, i.e., the transfer of commands and data, over a physical connection between the computer and instruments. There have been many implementations of I/O control software, some of which were custom-developed by end users, while others were developed by vendors and sold along with interface hardware. Examples of driver level software include NI-488, NI-DAQ, and NI-VXI driver level software offered by National Instruments, Inc., which has become a de facto standard in the industry. Another example of driver level software is the Standard Instrument Control Library (SICL) offered by Hewlett-Packard.

A primary problem with current driver level software is that there generally is no common look and feel and no common programming constructs. For example, one problem with driver level software implemented by many vendors is that the software includes separate application programming interfaces for the different types of hardware interfaces, such as GPIB, VXI, and data acquisition. In many cases there are also significant differences in the API within the specific product lines of a company, i.e., features are not implemented or are implemented differently within the product line. Also, many times the driver level software includes separate utilities such as installation, configuration and interactive tools utilities within the same product line. Some utilities are incomplete or conflict with other utilities. Further, there are often no common programming styles or constructs, no common approaches to handling DMA and interrupt requests, no common method for interfacing to higher level application software, and no common graphical user interface tools.

One cause of this problem is that the driver level software for respective hardware interfaces is developed by independent teams of programmers, often resulting in inconsistencies. Each I/O control or driver level software designer has flexibility to address the respective users in his or her own way. For example, some designers may concentrate on high level simple tools with narrowly defined functionality to maximize ease of use for certain applications. On the other hand, other designers may emphasize complete functionality, i.e., low level flexibility and performance tuning capabilities for the knowledgeable users.

As a result of the above problems, the quality of driver level software is generally very product specific, and there are typically inconsistent implementations. Further, incorrect bug fixes can generate other bugs or go against the original intention of the product. These problems make it very difficult to update and port driver level software to other platforms. Also, since driver level software is generally created by different teams of programmers, there is typically no common look and feel of the software. Therefore, different implementations of driver level software have generally had dramatically different features and different user interfaces.

As discussed above, the instrument driver level of software is layered on top of the driver level software for every function call to an instrument for every instrument driver. Because of the inconsistencies in driver level software described above, developers of instrument driver software, who many times are non-professional software engineers, typically do not use the full platform capabilities available, such as interrupt handling, register based control, and triggers. Further, developers of instruments driver software often do not include centralized management of resources, and thus instrument drivers may conflict. As a result, various implementations of instrument driver soft-ware do not use the full functionality of the instrument being controlled. Also, there is no common creation mechanism or requirements, no common source code and no common testing criteria.

Software development is widely recognized as a major cost factor in the development, deployment, and maintenance of instrumentation control systems. Software design requires modularity in an attempt to simplify instrumentation programming. Software design for instrumentation has also inspired powerful new instrument programming tools and concepts, such as instrument driver software libraries and graphical development tools. However, due to the difficulties discussed above with regard to driver level software, software design has generally lagged behind hardware capabilities.

It would be highly desirable to provide instrumentation programmers with the ability to write software that is independent of hardware. For example, it would be highly desirable to allow instrumentation programmers to develop software that is independent of operating system and I/O interface. It would also be greatly desirable for the software API of an instrumentation system to have a common look and feel as well as more consistent implementations for cross-platform development and integration, cross-product development and integration, and the reusability of source code.

In addition to the above, various trends are occurring in instrumentation control systems which promise to place greater burdens on the software used to control these systems. One future trend in instrumentation control systems is the move from a one engineer-one project paradigm to a higher level of coordination, i.e., a move to a more highly complex and distributed environment. This trend toward distributed instrumentation systems includes systems where the instruments themselves are stand-alone in instruments with built-in network interfaces or modular VXI mainframes with multiple processors. These instruments are controlled over industry standard backplanes such as VXI and industry standard networks such as Ethernet. As VXI becomes a mainstream technology and distributed test system architectures become more and more popular, the I/O control software used by end users must be continuously improved.

Instrument drivers and applications software are encountering other new requirements, including the capability to interface with dynamic link libraries and shared objects. This requirement includes the ability to be used by other applications or application software packages, and also the ability to be changed or updated without recompilation of the user's application. There is also a need for instrument drivers to be able to support other languages as well as have more extensive error handling. Despite the need for new capabilities in instrumentation software, it is important that new I/O control software remain compatible with existing instrument drivers and applications software. Therefore, there is a need for an I/O control software architecture that not only provides access to new capabilities, but also bridges with the past and provides a smooth migration path for the installed base and huge investment in existing systems.

As mentioned above, an important requirement of I/O control software is referred to as I/O interface independence. When users write application software to control a specific set of instruments, they typically want their applications to work with a variety of hardware for a respective I/O interface, perhaps even supplied from different vendors. A user controlling GPIB instruments with a PC, for example, may want to use a plug-in GPIB card in one application and use an external SCSI-to-GPIB interface box in another application. A consistent I/O software interface for these two approaches would allow the user to do this without modifying his application software code.

It is noted that hardware interface independence for a respective I/O interface has been available for some time, principally within a particular I/O interface vendor's product line. Many of these product lines are very wide indeed, covering most of the market needs with a standardized I/O software interface that is even consistent across interfaces for different computer platforms. In addition, some interface hardware-only vendors have cloned the interface of the most popular products to achieve compatibility with the most popular I/O interface software on the market. This activity, in essence, established de facto standards for I/O interface software. Users who were not totally satisfied with these de facto standards have generally written their own I/O software layer to sit on top of specific I/O software interface libraries from different vendors. In this way, they decouple their application software from specific I/O interface products.

Another aspect of interface independence has become of interest to more and more users, especially those who are using VXI technology. Rather than simply developing software that is hardware independent for a respective I/O interface, i.e., software for a particular GPIB instrument that is independent of the computer-to-GPIB interface hardware used, many users desire the ability to write software that is also independent of the type of I/O interface used, such as whether GPIB, VXI, or some other type of connection is used between the computer and the instrument. For example, a user may want to write one piece of software to control an instrument that has options for both GPIB and RS-232 control. As another example, a user may want to write software to control a VXI instrument and have that software work whether the computer is embedded in the VXI chassis, connected to VXI through the MXIbus, or connected to VXI through a GPIB-to-VXI translator.

There are many ways to model driver level instrumentation control software. One common approach to creating software to control instrumentation systems at this level has been to create distinct, function-oriented, Application Programmer Interfaces (APIs) tailored to the specific systems and the specific hardware interfaces that they support. Many of these APIs offer unique performance and feature specific benefits. As system designers add new types of hardware interfaces, or their existing interfaces evolve in capability, it is often necessary to create new APIs or add new functions to an existing API. These APIs and their approaches are still a very effective means of programming instrumentation systems.

However, given the size and diversity of the hardware and the software within many instrumentation systems, several companies have made an effort over recent years to come up with alternative approaches to developing this level of instrumentation control software. The size and diversity of instrumen