US6675193B1 - Method and system for remote control of a local system - Google Patents

Method and system for remote control of a local system Download PDF

Info

Publication number
US6675193B1
US6675193B1 US09/430,464 US43046499A US6675193B1 US 6675193 B1 US6675193 B1 US 6675193B1 US 43046499 A US43046499 A US 43046499A US 6675193 B1 US6675193 B1 US 6675193B1
Authority
US
United States
Prior art keywords
control
remote
computer
data
communication path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
US09/430,464
Inventor
Sean Slavin
Jay S. Cook
Hatem K. El-Sabaaly
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Invensys Software Systems
Aveva Software LLC
Original Assignee
Invensys Software Systems
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US09/430,464 priority Critical patent/US6675193B1/en
Application filed by Invensys Software Systems filed Critical Invensys Software Systems
Assigned to WONDERWARE reassignment WONDERWARE ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COOK, JAY S., EL-SABAALY, HATEM K., SLAVIN, SEAN
Priority to US10/696,386 priority patent/US7330878B2/en
Application granted granted Critical
Publication of US6675193B1 publication Critical patent/US6675193B1/en
Assigned to DEUTSCHE BANK AG, LONDON reassignment DEUTSCHE BANK AG, LONDON SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INVENSYS SYSTEMS, INC.
Assigned to INVENSYS SYSTEMS, INC. reassignment INVENSYS SYSTEMS, INC. MERGER (SEE DOCUMENT FOR DETAILS). Assignors: WONDERWARE CORPORATION
Assigned to DEUTSCHE BANK AG, LONDON BRANCH reassignment DEUTSCHE BANK AG, LONDON BRANCH SECURITY AGREEMENT Assignors: INVENSYS SYSTEMS, INC.
Assigned to INVENSYS SYSTEMS, INC. reassignment INVENSYS SYSTEMS, INC. RELEASE AND TERMINATION OF SECURITY INTEREST IN PA Assignors: DEUTSCHE BANK AG LONDON
Priority to US11/964,632 priority patent/US7917595B2/en
Priority to US13/073,867 priority patent/US8285807B2/en
Assigned to INVENSYS SYSTEMS, INC. reassignment INVENSYS SYSTEMS, INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: DEUTSCHE BANK, AG, LONDON BRANCH
Assigned to SCHNEIDER ELECTRIC SOFTWARE, LLC reassignment SCHNEIDER ELECTRIC SOFTWARE, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INVENSYS SYSTEMS, INC.
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • This invention relates generally to data processing systems and, more particularly, to a method and system for accessing remote computer systems and operating at least one particular instance of a program running on the local computer on the remote computer system.
  • the display icons that represent data or resources are typically representations of data structures called objects, which encapsulate attributes and behaviors.
  • Objects are specified by definitions, called classes, that specify the attributes and behaviors of the particular objects, which are termed “instantiations” of the class definitions.
  • GUI Graphical User Interface
  • object-oriented development environments are computer programs or groups of computer programs that allow a software developer to create object-oriented programs.
  • Object-oriented development environments typically have a palette of objects with which the developer builds an application. Each object on this palette is different and serves as a template for the developer.
  • a palette object's attribute settings are the default settings for that object.
  • To use an object on the palette the developer copies the object and places the copy on the application.
  • the copied or “derived” object has the same attribute settings as the original palette object.
  • These development environments also permit the developer to modify an object and save it as another palette object or create an entirely new object.
  • COM Component Object Model
  • COM provides a standard framework which permits objects from different applications to share data and functions.
  • COM also permits a given application program (“container application”) to contain multiple objects of different types.
  • a format for control objects known as “ActiveX” has been established to take advantage of the COM protocol.
  • An ActiveX object behaves as a “server” relative to its container application, which in turn behaves as a “client.”
  • the COM protocol manages, among other things, the setup and initialization necessary for container applications to send and receive messages and data to and from server applications.
  • an ActiveX control stored data members are known as “properties,” functions are referred to as “methods,” and event occurrences are denoted as “events.” Properties can be read from, and written to, an ActiveX control via associated methods.
  • the interface of an ActiveX control is a set of methods defining certain input, output and behavior rules. Accordingly, a container application can invoke the methods of an ActiveX control to effect the defined behavior and access the object data.
  • an ActiveX control In addition to representing data stored by an ActiveX control, properties are used in formatting the display of an ActiveX control. Events are utilized to notify a container application of the occurrence of an event, as well as to pass parameters relevant to the particular event. For example, an ActiveX control is capable of informing its container application of the occurrence of a selection event (e.g., when the user interface of the control has been “clicked on”).
  • ActiveX objects are typically implemented either as in-process servers where the ActiveX control is implemented as a Dynamic Link Library (DLL), or as out-of-process servers as an “executable.” ActiveX DLLs are loaded into the process space of the container application. As a consequence, data does not need to be transported between the container application and the ActiveX control. In contrast, ActiveX executables are loaded into a separate process space from the container application. Since there is no shared memory between such applications, data is transported between ActiveX objects and the container application. This is advantageous in the sense that an ActiveX executable does not interfere with the processing of data in the client application.
  • DLL Dynamic Link Library
  • each such ActiveX control operates independently of the container application. That is, ActiveX controls are conventionally installed in container applications so as not to be affected by changes in parameters of the container application, and vice versa. Similarly, the occurrence of ActiveX events does not automatically cause the execution of scripts or the like in the container application.
  • Still other systems as typified by Crater (U.S. Pat. No. 5,805,442), provide for the existence of controller-based web pages which are sent over the Internet and viewed in a browser which accesses the controller as a node on the Web.
  • Each of these systems uses the application running on the local system for control of the local control systems.
  • the browser systems utilize the browser simply as a data input and display device which exchanges data and instructions with the local system.
  • the present invention is directed to a system and method for remote control by at least one controller for sending and receiving remote and local control system information wherein the controller gathers local control system information and transmits the local control information over at least one communication path to at least one remote computer system (client).
  • a desktop bound program can be run on a remote computer utilizing remote data without changing the desktop software.
  • the client applications can be made to execute in any context that can host an ActiveX control. This has been accomplished by modifying the local runtime application, which in the specific embodiment is a window viewer, to become a local server and to provide an ActiveX control object to host the server.
  • the client application can be run from a browser or via the command line.
  • the remote computer system runs a remote software application and manipulates the transmitted local control information.
  • the remote control system information can be stored in the local computer's controller memory. Alternatively, the remote control system information can be stored in the remote computer's system memory.
  • the controller may contain one or more data handlers.
  • data handlers include: a runtime database handler, an alarm data handler and a history data handler.
  • Customized handlers can be created using a data handler toolkit.
  • the communication paths include secure (e.g., HTTPS) and non-secure (e.g., HTTP) paths. Multiple communication paths can be operable in a single session.
  • secure e.g., HTTPS
  • non-secure e.g., HTTP
  • FIG. 1 is a block diagram of a computing environment suitable for implementing the present invention.
  • FIG. 2 is a high-level overview diagram of the transferring of data between a local server and a remote client performed in accordance with the present invention.
  • FIG. 3 is an architecture diagram of the main components of the present invention.
  • FIG. 4 is a flow diagram illustrating the overall logic for running an application in a browser window in accordance with the present invention.
  • FIG. 5 is a flow diagram illustrating in detail the logic of running an application.
  • FIG. 6 is a flow diagram illustrating in detail the logic of a remote system executing an application.
  • FIG. 7 is a flow diagram illustrating in detail the logic of the remote system making a data request.
  • FIG. 8 is a message diagram showing the primary data flow between the major components of the present invention.
  • FIG. 9 is an exemplary user interface display of the present invention.
  • FIG. 10 is an exemplary user interface display shown in response to selection of the Alarm option of the exemplary user interface shown in FIG. 9 .
  • FIG. 11 is an exemplary user interface display shown in response to selection of the History option of the exemplary user interface shown in FIG. 9 .
  • FIG. 12 is an alternative user interface which combines the data shown in FIGS. 9-11 in one user interface display.
  • FIG. 13 is an example illustrating two sessions for one client, one HTTP session and one HTTPS session.
  • FIG. 14 is an example illustrating two HTTP connections for one client that are funneled through a single session.
  • FIG. 15 is an example of a client with two sessions each with an HTTP connection for a different username/password.
  • FIG. 1 illustrates a computing environment suitable for implementing the present invention.
  • a remote client computer 100 communicates with a local server computer 200 over a communication medium 118 .
  • the client 100 can communicate with the server 200 over the Internet.
  • the remote client computer 100 includes a central processing unit (CPU) 102 .
  • the client 100 also includes memory in the form of random access memory (RAM) 104 and read-only memory (ROM) 106 .
  • the client computer also includes a permanent storage device 108 , such as a hard disk drive.
  • the client computer 100 also includes a display device 110 , a keyboard 112 and a pointing device, such as a mouse 114 .
  • the client computer 100 runs a browser program.
  • the client computer 100 may be a Personal Computer (PC) running various operating systems, for example, Microsoft NT, Windows 95 or Windows 98. It will also be appreciated that the client 100 contains many more components than those illustrated in FIG. 1, however it is not necessary to show all of theses components in order to disclose an illustrative computing environment suitable for implementing the present invention.
  • PC Personal Computer
  • the server 200 contains similar components as those shown for the client computer 100 . As with the client computer, additional components may be included.
  • the server may an NT Server version 4 or later running Internet Information Server version 4 or later.
  • FIG. 2 is a high level diagram showing the transferring of data between a remote client 100 and a local server 200 .
  • the client 100 fills a send request buffer 120 with a data request.
  • the send request buffer 120 is filled, it is sent to a receive request buffer 220 at the server 200 where the request is read by the server and a send reply buffer 222 is filled with the reply which is sent to the client receive reply buffer 122 where the reply is read by the client.
  • the underlying framework protocol appends the necessary headers on transmission of the respective requests and replies and strips the headers on delivery.
  • the requests/replies events take place in the context of a session, which must first be established before requests/replies are exchanged.
  • the Client/Server framework of the present invention which is known as IView, supports accessing data through the World Wide Web primarily for any client written to the client abstraction application program interface (API).
  • the framework consists of two components: (1) a Data Access Component and (2) a Data Handlers Toolkit.
  • a Data Client is a component or program written using the Data Access component.
  • a client establishes a session and starts exchanging requests/replies over that session.
  • the Data Access Component hides all details pertaining to HTTP, Proxies, SSL, and so on.
  • a particular Runtime Data Client component is the Client Abstraction Layer which is an API that abstracts the communication with input/output (I/O) Servers over Dynamic Data Exchange (DDE) and other custom links that may be present.
  • This layer relies on parameter definitions to choose between DDE and the other custom links.
  • this layer is augmented by one more protocols (HTTP Tunneling) to support accessing local runtime data over HTTP.
  • the Alarm Data Client is an alarm program that uses the service of the Data Access Component directly to gain access to local alarm data over HTTP.
  • the History Data Client is a history program which uses the service of the Data Access Component to gain access to local history data over HTTP.
  • a data handler is a component written using a Data Handler toolkit in order to expose any data to Web clients.
  • the existing data handlers are shown in the architecture diagram of FIG. 3 and include:
  • RDB Runtime Database Handler 250 which exposes IOServer or runtime data to any client that. uses the Client Abstraction Layer and supports DDE and other protocols;
  • an Alarm Handler 260 which exposes alarm data from the host to the client, as well as any other client that uses the Client Abstraction Layer;
  • a history Handler 270 which exposes history data from the host to any client that uses the Client Abstraction Layer.
  • a typical Data Handler would respond to the following events:
  • the data handler is run as an NT service.
  • the data handlers receive data requests via an Internet Server Application Program Interface (ISAPI).
  • ISAPI Internet Server Application Program Interface
  • the data handler retrieves the data from the appropriate I/O server 230 and forwards it to the ISAPI DLL 280 .
  • the ISAPI forwards the data to the appropriate client 100 .
  • the data may be transmitted from the ISAPI 280 to the client 100 via a Web browser 290 over the Internet 150 .
  • FIGS. 4-7 are flow diagrams illustrating the logic of the present invention.
  • FIG. 4 is an overall flow diagram of the logic of running a remote client application in a browser.
  • the logic of FIG. 4 moves from a start block to block 500 where a browser is opened on a remote system.
  • the remote system is client computer 100 .
  • a request for a Web page is made using the browser. For example, a hyperlink is selected.
  • the local system i.e., server 200 , receives the request from the client 100 and transmits the requested Web page to the client for display in the browser.
  • the logic moves to block 506 where the client 100 displays the received Web page.
  • the Web page may be a list of applications that the client can run.
  • the list may be a list of hyperlinks.
  • the client selects an application to run.
  • the requested application is run as illustrated in detail in FIG. 5 and described next. It will be appreciated that the logic shown in FIG. 4 is standard browser processing. The key feature of FIG. 4 with respect to the present invention is that at some point (block 508 of FIG. 4 ), the remote user selects an application for execution via the Web browser.
  • FIG. 5 illustrates in detail the logic of running an application.
  • the application can be run in a browser, as illustrated in FIG. 4 .
  • the application can be run from a command line.
  • the logic of FIG. 5 moves from a start block to block 520 where the system, i.e., server 200 , receives and parses the client request to run an application.
  • the system downloads the requested application to the remote system, i.e., client 100 . See block 522 .
  • the application is compressed and downloaded as zip files.
  • blocks 524 and 526 respectively, the remote system receives and extracts the application.
  • the remote system executes the application, as shown in detail in FIG. 5 and described next.
  • the logic of FIG. 5 of executing an application moves from a start block to block 540 where the remote system makes a data request, as shown in detail in FIG. 7, and described later.
  • the ISAPI receives and parses the data request.
  • the ISAPI determines the data handler required to fulfill the data request. See block 544 .
  • the ISAPI then sends the request to the appropriate data handler.
  • the data handler then obtains the node name from the request.
  • the node name specifies the I/O server from which the requested data should be obtained. See block 548 .
  • the data handler retrieves the data from the node and sends it to the ISAPI. See block 550 .
  • the ISAPI sends the data to the client 100 .
  • the client receives and process the data. Processing the data includes parsing the data and displaying it.
  • decision block 556 a test is made to determine if more data is required. If so, the logic returns to block 540 where the remote system makes a data request. If not, the logic of FIG. 6 ends, and processing returns to FIG. 5 . In this manner, data requests are repeatedly processed until termination of the application program.
  • FIG. 7 illustrates in detail the logic of making a data request.
  • a test is made to determine whether a secure connection should be used. This information is determined by the application program and is contained in the data request.
  • the data request contains a tag for each piece of data requested.
  • the tag includes an application name, a topic and a node.
  • the present invention -uses a special form of node tag designed to run over the Internet.
  • the node tag is of the form: application@ ⁇ web_server_ip>.
  • handler string which specifies the handler that should be used for obtaining the data, for example, “RDB”, “history” or “alarm”.
  • a secure connection is to be used, the logic moves to decision block 562 where a test is made to determine whether a secure session already exists. If not, a secure session is established in block 564 . The request is then formatted and transmitted using HTTPS over the existing or newly established secure connection. See blocks 566 and 568 , respectively. If in decision block 560 it is determined that a secure connection should not be used, then a non-secure connection will be used. Accordingly, the logic moves to decision block 570 where a test is made to determine whether a non-secure session already exists. If not, the logic moves to block 572 where a non-secure session is initiated. Next, the logic moves to block 574 where a request is formatted. The formatted request is then transmitted over the existing or newly created non-secure session using HTTP. See block 576 . The logic of FIG. 7 then ends, and processing is returned to FIG. 6 .
  • FIG. 8 is a message sequence diagram showing the primary flow of data among the major components of the present invention.
  • a first data request 600 is initiated by the client 100 .
  • the data request is transmitted over the Internet 150 to the Web server 290 .
  • the Web server forwards the data request 602 to the ISAPI 280 , which in turn forwards the request 604 to the. appropriate data handler 275 .
  • the data handler may be a RDB handler 250 , an alarm handler 260 or a history handler 270 . It may also be another data handler.
  • the data handler 275 requests the data 606 from the appropriate I/O server 230 .
  • the requested data 608 is then transmitted from the I/O server 230 to the data handler 275 .
  • the data handler 275 forwards the data 610 to the ISAPI 280 .
  • the ISAPI 280 then forwards the data to the client 100 using a new data session.
  • the data session can be a secure data session which uses HTTPS or a non-secure session which uses HTTP.
  • a subsequent data request 620 is transmitted from the client 100 to the Web server 290 .
  • the second data request follows the same data path as the first data request. That is, the data request 622 is forwarded from the Web server 290 to the ISAPI 280 .
  • the data request 624 is then forwarded from the ISAPI 280 to the appropriate data handler 275 .
  • the data request 626 is then forwarded from the data handler 275 to the I/O server 230 .
  • the I/O server 230 sends the requested data 628 to the data handler 275 .
  • the data handler 275 then sends the data 630 to the ISAPI 280 .
  • the ISAPI 280 determines whether there is an existing session of the required type (i.e., secure or non-secure) over which the data can be transmitted. If there is an existing session of the proper type, the data 632 is transmitted to the client 100 using the existing session. If there is no existing session of the proper type, the data 632 is transmitted to the client 100 using a new session. Performance is boosted by using existing sessions rather than creating new sessions. Existing sessions can be shared by multiple data handlers. For example, the ISAPI 280 can send data from an RDB handler 250 , an alarm handler 260 and a history handler 270 to a given client 100 using a single session.
  • the required type i.e., secure or non-secure
  • FIGS. 9-12 illustrate exemplary user interfaces displayed on the client's display 110 .
  • the user interface may appear in a browser window or in its own application window.
  • FIG. 9 illustrates a user interface which includes runtime data 700 which is provided by the runtime database handler. Also included are an Alarm button 702 and a History button 704 . If the user depresses the Alarm button 702 , the Alarm display shown in FIG. 10 is displayed. The Alarm display shows alarm data 710 provided by the Alarm handler. If the History button 704 is depressed, the History display shown in FIG. 11 is displayed. The History display shows displays historical data 720 provided by the History handler.
  • FIG. 12 illustrates an alternative user interface to the user interface shown in FIGS. 9-11.
  • the user interface shown in FIG. 12 displays the runtime data 700 , the alarm data 710 and the history data 720 in a single window.
  • a special data client component is the Client Abstraction Layer which is an API that abstracts the communication with I/O Servers over DDE and SuiteLink. This layer relies on parameters to choose between DDE and SuiteLink. For the IView, this layer is augmented by one, more protocol (IView HTTP Tunneling) to support accessing runtime data over HTTP.
  • the protocol is an abstraction over HTTP and allows a client to establish a session with a specific handler.
  • a handler is identified by the form, ⁇ URI, HandlerName ⁇ where the URI (Uniform Resource Indicator) is of the form “http[s]://[user]:[password]:server:[port]” with the parameters in square brackets being optional.
  • the first parameter, “s,” signifies whether or not this connection will be using SSL.
  • the user and password parameters work together and allow for server side authentication of the client using standard Windows NT security.
  • the server parameter can either be the machine's Internet Protocol (IP) address or its fully qualified domain name, such as, “www.mycompany.com.”
  • IP Internet Protocol
  • the last parameter, “port,” tells the client which port to connect to on the server with the default being “80,” the standard for HTTP connections.
  • the session serves as a context identifier between the handlers and client.
  • the session id is the client context.
  • a client may establish as many sessions as it needs. Sessions are determined based on the specific data sought.
  • the data fields at the local server contain property definitions which define the type of session to be used.
  • the session API allows the user to specify extra information for the requests/replies that could be used for dispatching purposes.
  • a client 100 using the Client Abstraction Layer could make a connection using HTTP 180 for a few data points. That same client could then make another connection for other data points using HTTPS 182 . This client would then have two sessions, as well as two connections. The second session is established because the method of connection has changed from HTTP to HTTPS as defined by the data properties.
  • a client 100 makes a connection using an HTTP to server A for a set of data points. The client then makes a second HTTP connection to server B for a second set of data points. This client has two HTTP connections, which are funneled through one session.
  • a client 100 makes an HTTP connection for a set of data points that requires a username and password. The client then makes a second HTTP connection for another set of data points that requires a different username and password. This client then has two sessions and two HTTP connections.
  • the Data Access component establishes one or more HTTP connections to serve the sessions.
  • the Data Access Component abstracts the details of HTTP connections from the session. Fault tolerance is built in to allow the sessions not to be aware that an HTTP connection was lost and another one was established. From the standpoint of clients and handlers, requests are sent and replies are received in the form of buffers, as shown in FIG. 2 .
  • the Data Access Component established HTTP connections to a Web server. Requests received by the web server are delegated to an ISAPI which dispatches the requests to the correct handler and then forwards the replies back to the clients.
  • the Data Access Component serializes the client requests into packets and prepends a header used later by the ISAPI in order to dispatch the requests to the correct handler. By the same token, the ISAPI serializes the replies and prepends a header for proper dispatching to the correct session.
  • the data access component uses polling in order to send requests and receive replies. Session requests are queued and then on the next polling interval everything is sent and the replies to previous requests are picked up.
  • This invention allows existing client applications to run in the context of an Internet Browser without modification by the original developer.
  • the client applications can be made to execute in any context that can host an ActiveX control.
  • the local window viewer is launched via an icon on the desktop or through the command line.
  • the window viewer can be launched via techniques well known to COM and Distributed Component Object Model (DCOM) programmers.
  • DCOM Distributed Component Object Model
  • the instant invention provides a general technique for allowing desktop bound applications to be available over the Internet. This permits the remote system desktop bound application to send and receive data to and from a local site on the Internet.
  • This invention involves the creation of a library called VIEWLS.LIB that is linked to the existing local legacy code base.
  • the purpose of this library is twofold: (1) to provide an implementation for local server services; and (2) to provide an IDispatch based interface for interaction with the ActiveX control.
  • Local servers are required to support three command line switches: (1) /RegServer, (2) /UnregServer, and (3) /Embedding.
  • the legacy code has been modified to look for each of these switches and to call into this new library for proper handling if any of these switches are found.
  • the IDispatch based interface identified by IID_DIViewLS, provides methods for manipulating the legacy code.
  • the methods in this interface are as follows:
  • SetApplicationDirectory This method accepts the path that defines the directory for the client application.
  • WindowViewer has a feature that allows it to run any client application that appears on the command line. If no such directory is present, it defaults to the last known client application.
  • the argument to the method is used to create a command line that is handed off to WindowViewer.
  • the WindowViewer when run in the context of the Internet Browser is not constrained to use the application that would load if it had been run from the desktop.
  • the “normal” behavior for WindowViewer is to run the application that has been specified on the command line. If no application appears there, WindowViewer will read some initialization (.INI) file settings to determine which application to launch. The .INI file settings keep track of the last application run.
  • the present invention makes use of this feature and adds the application selected off of the Web page to the command line of the local server.
  • the Web page is able to launch any application that has been downloaded to the computer without requiring extensive changes to WindowViewer.
  • An additional benefit is that the desktop user's last application is not changed because WindowViewer, when running as a local server,does not modify these settings.
  • SetIPAddress This method accepts the IP Address for the local server. This parameter is then used in the legacy, i.e., existing, code to provide an ambient property in the ActiveX control container. This property allows controls that have been made aware of the property to gain access to the local server's IP Address.
  • the mechanism that the ActiveX control uses to define the values used in the connection call include this method, as well as the SetUser and SetPassword methods.
  • SetUser This method accepts the user name for the local server. This parameter is then used in the legacy code to provide an ambient property in the ActiveX control container. This property allows controls that know about it to gain access to the appropriate user name.
  • SetPassword This method accepts the password for the user specified in the SetUser method. This method is then used in the legacy code to provide an ambient property in the ActiveX control container. This property allows controls that know about it to gain access to the appropriate password.
  • CreateServerWnd This method allows another path into the initialization sequence for WindowViewer. If the “/Embedding” command line argument is present, the normal initialization sequence will be bypassed. If this happens, WindowViewer will not be initialized and will be unable to operate correctly. The expectation is that the hosting ActiveX control, which is part of this invention, will call this method.
  • the implementation of this method fully initializes WindowViewer and creates the main window of the application by calling existing initialization functions in the legacy code. This method should not be called until all parameters are correctly defined. This allows the Web page to initialize the ActiveX control before continuing the initialization of the local server.
  • the parameters to this method include size, position, window style, and parent handle.
  • the handle of the created window which is the main application window of WindowViewer, is returned via another parameter.
  • the controlling ActiveX control has access to the main application window created by the local server.
  • GetWindowList This method retrieves all the windows that are in the client application by name. The parameters to this method are used to return the created selection list and a count of the items on that list.
  • ReleaseWindowList This method releases all windows retrieved by GetWindowList.
  • the parameter to this method is the selection list.
  • GetWindowNameAndlndex This method retrieves information specific to a window.
  • the input parameters to this method are the selection list and sequence index.
  • Two output parameters return the string name of the window and the window index, which is different from the sequence index.
  • IDL Interface Definition Language
  • the local runtime code is made capable of determining whether it is running as a desktop application or in the context of the associated ActiveX control by the introduction of a global variable that contains the application directory, user name, password, a flag to indicate whether or not it is running as a local server, size, position, style, parent handle, id, and main window handle.
  • a global variable that contains the application directory, user name, password, a flag to indicate whether or not it is running as a local server, size, position, style, parent handle, id, and main window handle.
  • the startup code displaying the splash screen is omitted and code that sets the style for the main window is omitted.
  • the style is set by the controlling ActiveX control via the CreateServerWnd method. Therefore, when the WindowViewer runs in the context of an Internet Browser, no trace is left behind.
  • Two new command messages are included in the main window procedure for WindowViewer that allow various windows to be loaded and unloaded.
  • the single parameter to these new command messages is a window index. This index is cached by the ActiveX control and was obtained through the use of the method GetWindowNameAndIndex which is exposed by the local server.
  • Command line processing was modified to look for “/RegServer”, “/UnregServer”, and “/Embedding”. When any of these switches is found it calls into a function provided by VIEWLS.LIB to provide the implementation.
  • VIEWCTL.OCX is a particular ActiveX control, VIEWCTL.OCX that serves as the context for execution.
  • any program that can host an ActiveX control for example, an Internet Browser, VB, etc.
  • the hosting program creates an instance of VIEWCTL.OCX and when created it causes an instance of the local server to be created.
  • the OCX call, CreateServerWnd method is exposed by the local server. It takes the resulting window handle and makes it a child of the OCX. This results in the local server's window reacting to the things that happen to the screen area associated with the OCX. For example, if the OCX is minimized, the server window is also minimized. If the OCX is moved, the server window is also moved. When the OCX is closed, the server window is also closed.
  • the user interface presented by the OCX allows the remote user to show and hide windows as desired. If the application has been created with its own internal window management, the OCX can be configured to not show the browser navigation frame. Once the user has selected and displayed a window, the user interacts with the window as if it were on the remote desktop.
  • the IDispatch based interface identified by IID_DIViewLS, provides the methods for manipulating the legacy code.
  • the properties in this interface are as follows:
  • GetWindowSets This property returns an enumerator for windows that are part of the client application.
  • NavigationFrame This property determines whether or not the ActiveX control displays a frame filled with window names on the left side of the display. This is a useful feature when the client application does not provide any navigation mechanism. If the frame is enabled, it can be reduced in size because it is based on splitter window technology.
  • ShowWindow The parameter to this method is the name of the window.
  • the implementation will send a command message to the local server window, which results in the window being loaded and displayed.
  • HideWindow The parameter to this method is the name of the window.
  • the implementation will send a command message to the local server window, which results in the window being hidden.
  • SetApplicationDirectory The parameter to this method is the path to the client application.
  • the implementation will call into the local server to set the value in the global variable introduced by VIEWLS.LIB.
  • CreateServerWindow There are no parameters to this method. The implementation results in a call into the local server to create the main window for WindowViewer and to fully initialize it.
  • the parameter to this method is the IP Address for the machine.
  • the implementation calls into the local server to set this value.
  • the parameter to this method is the user id to be used.
  • the implementation calls into the local server to set this value.
  • SetPassword The parameter to this method is the password for the specified user.
  • the implementation calls into the local server to set this value.
  • the IDL for this interface is set forth below:
  • the IView Handler Toolkit provides an easy way for users to develop their own handlers for a specific data type.
  • the toolkit contains an abstract class that contains the functions needed to implement a handler. That class sits above a class defining the NT service functionality.
  • An example of a handler created using the handler toolkit is set forth below:
  • (1) is the abstract class needed to implement a handler
  • (7) is the user's handler object
  • (8) is the handler object provided by the toolkit

Abstract

A system and method for remote control including a control system having a memory and a CPU for sending and receiving control information and instructions at a first location, a software application for manipulating the control information sent and received by the control system resident in the memory, a remote computer system having a CPU and memory at a second location communicating over a communication path with the control system at the first location and one desktop bound software application for manipulating the control information sent and received by the control system accessed by the remote computer system over the at least one communication path resident in the memory of the remote computer system. In variations, the control information includes alarm data, runtime data and historical data.

Description

FIELD OF THE INVENTION
This invention relates generally to data processing systems and, more particularly, to a method and system for accessing remote computer systems and operating at least one particular instance of a program running on the local computer on the remote computer system.
BACKGROUND OF THE INVENTION
Many programs are currently implemented in object-oriented programming languages, such as the C++ programming language. The display icons that represent data or resources are typically representations of data structures called objects, which encapsulate attributes and behaviors. Objects are specified by definitions, called classes, that specify the attributes and behaviors of the particular objects, which are termed “instantiations” of the class definitions. The reference Budd, T., “An Introduction to Object-Oriented Programming,” Addisori-Wesley Publishing Co., Inc. 1991, provides an introduction to object-oriented concepts and terminology.
Object-oriented programming languages make it easier for system programmers to implement the Graphical User Interface (GUI) concepts of icons and lists. For example, if the GUI icons are represented as object-oriented programming objects, the GUI program can be written so that the status of the icon is continuously updated. In this way, it is relatively simple for the GUI program to be written so that the icons can be selected with the graphical user input device and moved about on the computer system display as desired.
With the advent of object-oriented languages also came object-oriented development environments. Such development environments are computer programs or groups of computer programs that allow a software developer to create object-oriented programs. Object-oriented development environments typically have a palette of objects with which the developer builds an application. Each object on this palette is different and serves as a template for the developer. A palette object's attribute settings are the default settings for that object. To use an object on the palette, the developer copies the object and places the copy on the application. The copied or “derived” object has the same attribute settings as the original palette object. These development environments also permit the developer to modify an object and save it as another palette object or create an entirely new object.
Efforts have been made to establish a common method of communication between objects instantiated within a given operating system environment. For example, Microsoft Corporation has established a protocol, known as the Component Object Model (COM), which governs the interaction between software objects within the Microsoft Windows operating environment. COM provides a standard framework which permits objects from different applications to share data and functions. COM also permits a given application program (“container application”) to contain multiple objects of different types. A format for control objects known as “ActiveX” has been established to take advantage of the COM protocol. An ActiveX object behaves as a “server” relative to its container application, which in turn behaves as a “client.” The COM protocol manages, among other things, the setup and initialization necessary for container applications to send and receive messages and data to and from server applications.
In the context of an ActiveX control, stored data members are known as “properties,” functions are referred to as “methods,” and event occurrences are denoted as “events.” Properties can be read from, and written to, an ActiveX control via associated methods. The interface of an ActiveX control is a set of methods defining certain input, output and behavior rules. Accordingly, a container application can invoke the methods of an ActiveX control to effect the defined behavior and access the object data.
In addition to representing data stored by an ActiveX control, properties are used in formatting the display of an ActiveX control. Events are utilized to notify a container application of the occurrence of an event, as well as to pass parameters relevant to the particular event. For example, an ActiveX control is capable of informing its container application of the occurrence of a selection event (e.g., when the user interface of the control has been “clicked on”).
ActiveX objects are typically implemented either as in-process servers where the ActiveX control is implemented as a Dynamic Link Library (DLL), or as out-of-process servers as an “executable.” ActiveX DLLs are loaded into the process space of the container application. As a consequence, data does not need to be transported between the container application and the ActiveX control. In contrast, ActiveX executables are loaded into a separate process space from the container application. Since there is no shared memory between such applications, data is transported between ActiveX objects and the container application. This is advantageous in the sense that an ActiveX executable does not interfere with the processing of data in the client application.
Although a number of programming environments exist for facilitating development of ActiveX controls as object-oriented constructs, each such ActiveX control operates independently of the container application. That is, ActiveX controls are conventionally installed in container applications so as not to be affected by changes in parameters of the container application, and vice versa. Similarly, the occurrence of ActiveX events does not automatically cause the execution of scripts or the like in the container application.
Early remote control systems were designed to access and take over the local computer system and run them from a remote location, eliminating any other access and remote operation, as noted in Hyatt (U.S. Pat. No. 5,307,463) and Zapolin (U.S. Pat. No. 5,122,948).
Existing systems as typified by Slaughter (U.S. Pat. No. 5,598,536) permit accessing of data from a local controller system, for example, and the collection of data from the local controller data memory, such as, sensor and other data, as well as the sending of instructions to the controller to set or control certain switches.
Still other systems, as typified by Crater (U.S. Pat. No. 5,805,442), provide for the existence of controller-based web pages which are sent over the Internet and viewed in a browser which accesses the controller as a node on the Web.
Other systems as typified by the Mercury Project papers entitled “Desktop Teleoperation via the World Wide Web”, and “Beyond the Web: Excavating the Real World Via Mosaic” which are attached hereto and incorporated herein by reference, show multiple servers which collect data, configure web pages and provide security features for communication and the exchange of control systems data with multiple clients on the Web.
Each of these systems uses the application running on the local system for control of the local control systems. The browser systems utilize the browser simply as a data input and display device which exchanges data and instructions with the local system.
However, heretofore there has not been a mechanism or system, which has permitted desktop bound programming to run on remote computer systems, in one or more instances without the need to rewrite the remote desktop application to run as a remote system and access data and instructions on a local control system.
SUMMARY OF THE INVENTION
The present invention is directed to a system and method for remote control by at least one controller for sending and receiving remote and local control system information wherein the controller gathers local control system information and transmits the local control information over at least one communication path to at least one remote computer system (client). A desktop bound program can be run on a remote computer utilizing remote data without changing the desktop software.
The client applications can be made to execute in any context that can host an ActiveX control. This has been accomplished by modifying the local runtime application, which in the specific embodiment is a window viewer, to become a local server and to provide an ActiveX control object to host the server.
The client application can be run from a browser or via the command line.
The remote computer system runs a remote software application and manipulates the transmitted local control information.
The remote control system information can be stored in the local computer's controller memory. Alternatively, the remote control system information can be stored in the remote computer's system memory.
The controller may contain one or more data handlers. Examples of data handlers include: a runtime database handler, an alarm data handler and a history data handler. Customized handlers can be created using a data handler toolkit.
The communication paths include secure (e.g., HTTPS) and non-secure (e.g., HTTP) paths. Multiple communication paths can be operable in a single session.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a computing environment suitable for implementing the present invention.
FIG. 2 is a high-level overview diagram of the transferring of data between a local server and a remote client performed in accordance with the present invention.
FIG. 3 is an architecture diagram of the main components of the present invention.
FIG. 4 is a flow diagram illustrating the overall logic for running an application in a browser window in accordance with the present invention.
FIG. 5 is a flow diagram illustrating in detail the logic of running an application.
FIG. 6 is a flow diagram illustrating in detail the logic of a remote system executing an application.
FIG. 7 is a flow diagram illustrating in detail the logic of the remote system making a data request.
FIG. 8 is a message diagram showing the primary data flow between the major components of the present invention.
FIG. 9 is an exemplary user interface display of the present invention.
FIG. 10 is an exemplary user interface display shown in response to selection of the Alarm option of the exemplary user interface shown in FIG. 9.
FIG. 11 is an exemplary user interface display shown in response to selection of the History option of the exemplary user interface shown in FIG. 9.
FIG. 12 is an alternative user interface which combines the data shown in FIGS. 9-11 in one user interface display.
FIG. 13 is an example illustrating two sessions for one client, one HTTP session and one HTTPS session.
FIG. 14 is an example illustrating two HTTP connections for one client that are funneled through a single session.
FIG. 15 is an example of a client with two sessions each with an HTTP connection for a different username/password.
DESCRIPTION OF THE SPECIFIC EMBODIMENT
FIG. 1 illustrates a computing environment suitable for implementing the present invention. A remote client computer 100 communicates with a local server computer 200 over a communication medium 118. For example, the client 100 can communicate with the server 200 over the Internet.
The remote client computer 100 includes a central processing unit (CPU) 102. The client 100 also includes memory in the form of random access memory (RAM) 104 and read-only memory (ROM) 106. The client computer also includes a permanent storage device 108, such as a hard disk drive.
The client computer 100 also includes a display device 110, a keyboard 112 and a pointing device, such as a mouse 114. In one embodiment of the present invention, the client computer 100 runs a browser program.
It will be appreciated that many computing environments are suitable for implementing the present invention. For example, the client computer 100 may be a Personal Computer (PC) running various operating systems, for example, Microsoft NT, Windows 95 or Windows 98. It will also be appreciated that the client 100 contains many more components than those illustrated in FIG. 1, however it is not necessary to show all of theses components in order to disclose an illustrative computing environment suitable for implementing the present invention.
The server 200 contains similar components as those shown for the client computer 100. As with the client computer, additional components may be included. For example, the server may an NT Server version 4 or later running Internet Information Server version 4 or later.
IView Client/Server Framework
FIG. 2 is a high level diagram showing the transferring of data between a remote client 100 and a local server 200. When data is accessed, the client 100 fills a send request buffer 120 with a data request. After the send request buffer 120 is filled, it is sent to a receive request buffer 220 at the server 200 where the request is read by the server and a send reply buffer 222 is filled with the reply which is sent to the client receive reply buffer 122 where the reply is read by the client. The underlying framework protocol appends the necessary headers on transmission of the respective requests and replies and strips the headers on delivery. The requests/replies events take place in the context of a session, which must first be established before requests/replies are exchanged.
The Client/Server framework of the present invention, which is known as IView, supports accessing data through the World Wide Web primarily for any client written to the client abstraction application program interface (API). The framework consists of two components: (1) a Data Access Component and (2) a Data Handlers Toolkit.
A Data Client is a component or program written using the Data Access component. A client establishes a session and starts exchanging requests/replies over that session. The Data Access Component hides all details pertaining to HTTP, Proxies, SSL, and so on. In the particular embodiment described, there are three data clients: a Runtime Data Client, an Alarm Data Client and a History Data Client.
A particular Runtime Data Client component is the Client Abstraction Layer which is an API that abstracts the communication with input/output (I/O) Servers over Dynamic Data Exchange (DDE) and other custom links that may be present. This layer relies on parameter definitions to choose between DDE and the other custom links. In the instant invention, this layer is augmented by one more protocols (HTTP Tunneling) to support accessing local runtime data over HTTP.
The Alarm Data Client is an alarm program that uses the service of the Data Access Component directly to gain access to local alarm data over HTTP. The History Data Client is a history program which uses the service of the Data Access Component to gain access to local history data over HTTP.
In order to process the data accessed, data handlers must be developed. A data handler is a component written using a Data Handler toolkit in order to expose any data to Web clients. There are currently three handlers available which handle the data for the three clients. The existing data handlers are shown in the architecture diagram of FIG. 3 and include:
1. a Runtime Database Handler (RDB) Handler 250 which exposes IOServer or runtime data to any client that. uses the Client Abstraction Layer and supports DDE and other protocols;
2. an Alarm Handler 260 which exposes alarm data from the host to the client, as well as any other client that uses the Client Abstraction Layer; and
3. a history Handler 270 which exposes history data from the host to any client that uses the Client Abstraction Layer.
A typical Data Handler would respond to the following events:
Session creation (client context);
Requests via the created sessions;
Session deletion; and
Session timeout.
The data handler is run as an NT service. The data handlers receive data requests via an Internet Server Application Program Interface (ISAPI). The data handler retrieves the data from the appropriate I/O server 230 and forwards it to the ISAPI DLL 280. The ISAPI forwards the data to the appropriate client 100. The data may be transmitted from the ISAPI 280 to the client 100 via a Web browser 290 over the Internet 150.
While the disclosed embodiment contains three data handlers, (runtime database handler alarm handler and history handler), it will be appreciated that other data handlers can be used instead of or in addition to these data handlers.
Flow Logic
FIGS. 4-7 are flow diagrams illustrating the logic of the present invention. FIG. 4 is an overall flow diagram of the logic of running a remote client application in a browser. The logic of FIG. 4 moves from a start block to block 500 where a browser is opened on a remote system. The remote system is client computer 100. Next, in block 502, a request for a Web page is made using the browser. For example, a hyperlink is selected. The local system, i.e., server 200, receives the request from the client 100 and transmits the requested Web page to the client for display in the browser. Upon receipt of the Web page, the logic moves to block 506 where the client 100 displays the received Web page. For example, the Web page may be a list of applications that the client can run. The list may be a list of hyperlinks. Next, in block 508, the client selects an application to run. Finally, in block 510, the requested application is run as illustrated in detail in FIG. 5 and described next. It will be appreciated that the logic shown in FIG. 4 is standard browser processing. The key feature of FIG. 4 with respect to the present invention is that at some point (block 508 of FIG. 4), the remote user selects an application for execution via the Web browser.
FIG. 5 illustrates in detail the logic of running an application. The application can be run in a browser, as illustrated in FIG. 4. Alternatively, the application can be run from a command line. The logic of FIG. 5 moves from a start block to block 520 where the system, i.e., server 200, receives and parses the client request to run an application. The system downloads the requested application to the remote system, i.e., client 100. See block 522. Preferably, the application is compressed and downloaded as zip files. Next, in blocks 524 and 526, respectively, the remote system receives and extracts the application. Next, the remote system executes the application, as shown in detail in FIG. 5 and described next.
The logic of FIG. 5 of executing an application moves from a start block to block 540 where the remote system makes a data request, as shown in detail in FIG. 7, and described later. Next, in block 42, the ISAPI receives and parses the data request. The ISAPI then determines the data handler required to fulfill the data request. See block 544. The ISAPI then sends the request to the appropriate data handler. The data handler then obtains the node name from the request. The node name specifies the I/O server from which the requested data should be obtained. See block 548. The data handler then retrieves the data from the node and sends it to the ISAPI. See block 550. Next, in block 552, the ISAPI sends the data to the client 100. Next, in block 554, the client receives and process the data. Processing the data includes parsing the data and displaying it. Next, in decision block 556 a test is made to determine if more data is required. If so, the logic returns to block 540 where the remote system makes a data request. If not, the logic of FIG. 6 ends, and processing returns to FIG. 5. In this manner, data requests are repeatedly processed until termination of the application program.
FIG. 7 illustrates in detail the logic of making a data request. First, in decision block 560 a test is made to determine whether a secure connection should be used. This information is determined by the application program and is contained in the data request. The data request contains a tag for each piece of data requested. The tag includes an application name, a topic and a node. The present invention-uses a special form of node tag designed to run over the Internet. The node tag is of the form: application@<web_server_ip>. Also included in the data request is a handler string which specifies the handler that should be used for obtaining the data, for example, “RDB”, “history” or “alarm”. If a secure connection is to be used, the logic moves to decision block 562 where a test is made to determine whether a secure session already exists. If not, a secure session is established in block 564. The request is then formatted and transmitted using HTTPS over the existing or newly established secure connection. See blocks 566 and 568, respectively. If in decision block 560 it is determined that a secure connection should not be used, then a non-secure connection will be used. Accordingly, the logic moves to decision block 570 where a test is made to determine whether a non-secure session already exists. If not, the logic moves to block 572 where a non-secure session is initiated. Next, the logic moves to block 574 where a request is formatted. The formatted request is then transmitted over the existing or newly created non-secure session using HTTP. See block 576. The logic of FIG. 7 then ends, and processing is returned to FIG. 6.
FIG. 8 is a message sequence diagram showing the primary flow of data among the major components of the present invention. A first data request 600 is initiated by the client 100. The data request is transmitted over the Internet 150 to the Web server 290. The Web server forwards the data request 602 to the ISAPI 280, which in turn forwards the request 604 to the. appropriate data handler 275. In the embodiment described herein, the data handler may be a RDB handler 250, an alarm handler 260 or a history handler 270. It may also be another data handler. The data handler 275 requests the data 606 from the appropriate I/O server 230. The requested data 608 is then transmitted from the I/O server 230 to the data handler 275. The data handler 275, in turn, forwards the data 610 to the ISAPI 280. The ISAPI 280 then forwards the data to the client 100 using a new data session. The data session can be a secure data session which uses HTTPS or a non-secure session which uses HTTP.
A subsequent data request 620 is transmitted from the client 100 to the Web server 290. The second data request follows the same data path as the first data request. That is, the data request 622 is forwarded from the Web server 290 to the ISAPI 280. The data request 624 is then forwarded from the ISAPI 280 to the appropriate data handler 275. The data request 626 is then forwarded from the data handler 275 to the I/O server 230. The I/O server 230 sends the requested data 628 to the data handler 275. The data handler 275 then sends the data 630 to the ISAPI 280. The ISAPI 280 determines whether there is an existing session of the required type (i.e., secure or non-secure) over which the data can be transmitted. If there is an existing session of the proper type, the data 632 is transmitted to the client 100 using the existing session. If there is no existing session of the proper type, the data 632 is transmitted to the client 100 using a new session. Performance is boosted by using existing sessions rather than creating new sessions. Existing sessions can be shared by multiple data handlers. For example, the ISAPI 280 can send data from an RDB handler 250, an alarm handler 260 and a history handler 270 to a given client 100 using a single session.
An Illustrated Example
FIGS. 9-12 illustrate exemplary user interfaces displayed on the client's display 110. As described earlier, the user interface may appear in a browser window or in its own application window. FIG. 9 illustrates a user interface which includes runtime data 700 which is provided by the runtime database handler. Also included are an Alarm button 702 and a History button 704. If the user depresses the Alarm button 702, the Alarm display shown in FIG. 10 is displayed. The Alarm display shows alarm data 710 provided by the Alarm handler. If the History button 704 is depressed, the History display shown in FIG. 11 is displayed. The History display shows displays historical data 720 provided by the History handler.
FIG. 12 illustrates an alternative user interface to the user interface shown in FIGS. 9-11. The user interface shown in FIG. 12 displays the runtime data 700, the alarm data 710 and the history data 720 in a single window.
HTTP Tunneling Protocol
A special data client component is the Client Abstraction Layer which is an API that abstracts the communication with I/O Servers over DDE and SuiteLink. This layer relies on parameters to choose between DDE and SuiteLink. For the IView, this layer is augmented by one, more protocol (IView HTTP Tunneling) to support accessing runtime data over HTTP.
The protocol is an abstraction over HTTP and allows a client to establish a session with a specific handler. A handler is identified by the form, {URI, HandlerName} where the URI (Uniform Resource Indicator) is of the form “http[s]://[user]:[password]:server:[port]” with the parameters in square brackets being optional. The first parameter, “s,” signifies whether or not this connection will be using SSL. The user and password parameters work together and allow for server side authentication of the client using standard Windows NT security. The server parameter can either be the machine's Internet Protocol (IP) address or its fully qualified domain name, such as, “www.mycompany.com.” The last parameter, “port,” tells the client which port to connect to on the server with the default being “80,” the standard for HTTP connections.
The session serves as a context identifier between the handlers and client. For the handlers, the session id is the client context. A client may establish as many sessions as it needs. Sessions are determined based on the specific data sought. The data fields at the local server contain property definitions which define the type of session to be used. The session API allows the user to specify extra information for the requests/replies that could be used for dispatching purposes.
For example, as shown in FIG. 13, a client 100 using the Client Abstraction Layer could make a connection using HTTP 180 for a few data points. That same client could then make another connection for other data points using HTTPS 182. This client would then have two sessions, as well as two connections. The second session is established because the method of connection has changed from HTTP to HTTPS as defined by the data properties.
In another example, shown in FIG. 14, a client 100 makes a connection using an HTTP to server A for a set of data points. The client then makes a second HTTP connection to server B for a second set of data points. This client has two HTTP connections, which are funneled through one session.
In a third example, shown in FIG. 15, a client 100 makes an HTTP connection for a set of data points that requires a username and password. The client then makes a second HTTP connection for another set of data points that requires a different username and password. This client then has two sessions and two HTTP connections.
The Data Access component establishes one or more HTTP connections to serve the sessions. The Data Access Component abstracts the details of HTTP connections from the session. Fault tolerance is built in to allow the sessions not to be aware that an HTTP connection was lost and another one was established. From the standpoint of clients and handlers, requests are sent and replies are received in the form of buffers, as shown in FIG. 2.
From the framework standpoint, the Data Access Component established HTTP connections to a Web server. Requests received by the web server are delegated to an ISAPI which dispatches the requests to the correct handler and then forwards the replies back to the clients. The Data Access Component serializes the client requests into packets and prepends a header used later by the ISAPI in order to dispatch the requests to the correct handler. By the same token, the ISAPI serializes the replies and prepends a header for proper dispatching to the correct session. The data access component uses polling in order to send requests and receive replies. Session requests are queued and then on the next polling interval everything is sent and the replies to previous requests are picked up.
This invention allows existing client applications to run in the context of an Internet Browser without modification by the original developer. In fact, the client applications can be made to execute in any context that can host an ActiveX control. This has been accomplished by modifying the local runtime application, which in the specific embodiment is a window viewer (view.exe), to become a local server and to provide an ActiveX control object to host the server. Normally the local window viewer is launched via an icon on the desktop or through the command line. Once modified to be a local server, the window viewer can be launched via techniques well known to COM and Distributed Component Object Model (DCOM) programmers. Thus, the instant invention provides a general technique for allowing desktop bound applications to be available over the Internet. This permits the remote system desktop bound application to send and receive data to and from a local site on the Internet.
Local Server Support
This invention involves the creation of a library called VIEWLS.LIB that is linked to the existing local legacy code base. The purpose of this library is twofold: (1) to provide an implementation for local server services; and (2) to provide an IDispatch based interface for interaction with the ActiveX control. Local servers are required to support three command line switches: (1) /RegServer, (2) /UnregServer, and (3) /Embedding. The legacy code has been modified to look for each of these switches and to call into this new library for proper handling if any of these switches are found.
The implementation of “/RegServer” results in registry entries being created. These entries are sufficient for COM to locate and launch the local server. The implementation of “/UnregServer” removes the registry entries created by “/RegServer.”The implementation of “/Embedding” results in the registration of the class object. COM requires a class object in order to create an instance of the COM object. In the case of “/Embedding” the local legacy code has been modified to bypass its normal initialization sequence. Instead, the host ActiveX control will call a method in the IDispatch based interface to do the initialization.
The IDispatch based interface, identified by IID_DIViewLS, provides methods for manipulating the legacy code. The methods in this interface are as follows:
SetApplicationDirectory: This method accepts the path that defines the directory for the client application. WindowViewer has a feature that allows it to run any client application that appears on the command line. If no such directory is present, it defaults to the last known client application. The argument to the method is used to create a command line that is handed off to WindowViewer. The WindowViewer, when run in the context of the Internet Browser is not constrained to use the application that would load if it had been run from the desktop. The “normal” behavior for WindowViewer is to run the application that has been specified on the command line. If no application appears there, WindowViewer will read some initialization (.INI) file settings to determine which application to launch. The .INI file settings keep track of the last application run. The present invention makes use of this feature and adds the application selected off of the Web page to the command line of the local server. Thus, the Web page is able to launch any application that has been downloaded to the computer without requiring extensive changes to WindowViewer. An additional benefit is that the desktop user's last application is not changed because WindowViewer, when running as a local server,does not modify these settings.
SetIPAddress: This method accepts the IP Address for the local server. This parameter is then used in the legacy, i.e., existing, code to provide an ambient property in the ActiveX control container. This property allows controls that have been made aware of the property to gain access to the local server's IP Address. The mechanism that the ActiveX control uses to define the values used in the connection call include this method, as well as the SetUser and SetPassword methods.
SetUser: This method accepts the user name for the local server. This parameter is then used in the legacy code to provide an ambient property in the ActiveX control container. This property allows controls that know about it to gain access to the appropriate user name.
SetPassword: This method accepts the password for the user specified in the SetUser method. This method is then used in the legacy code to provide an ambient property in the ActiveX control container. This property allows controls that know about it to gain access to the appropriate password.
CreateServerWnd: This method allows another path into the initialization sequence for WindowViewer. If the “/Embedding” command line argument is present, the normal initialization sequence will be bypassed. If this happens, WindowViewer will not be initialized and will be unable to operate correctly. The expectation is that the hosting ActiveX control, which is part of this invention, will call this method. The implementation of this method fully initializes WindowViewer and creates the main window of the application by calling existing initialization functions in the legacy code. This method should not be called until all parameters are correctly defined. This allows the Web page to initialize the ActiveX control before continuing the initialization of the local server. The parameters to this method include size, position, window style, and parent handle. The handle of the created window, which is the main application window of WindowViewer, is returned via another parameter. Thus, the controlling ActiveX control has access to the main application window created by the local server.
GetWindowList: This method retrieves all the windows that are in the client application by name. The parameters to this method are used to return the created selection list and a count of the items on that list.
ReleaseWindowList: This method releases all windows retrieved by GetWindowList. The parameter to this method is the selection list.
GetWindowNameAndlndex: This method retrieves information specific to a window. The input parameters to this method are the selection list and sequence index. Two output parameters return the string name of the window and the window index, which is different from the sequence index.
The Interface Definition Language (IDL) for this interface is set forth below:
[object, oleautomation, dual,
uuid(C8947A20-E9CD-11d1-B158-00A0C95AC277)]
interface DIViewLS:IDispatch
{
[helpstring(“Set Application Directory”)]
HRESULT SetApplicationDirectory([in] BSTR
sZApplicationDirectory);
[helpstring(“Set IP Address”)]
HRESULT SetIPAddress([in] BSTR szIPAddress);
[helpstring(“Set User”)]
HRESULT SetUser([in] BSTR szUser);
[helpstring(“Set Password”)]
HRESULT SetPassword([in] BSTR szPassword);
[helpstring(“Create Server Window” )]
HRESULT CreateServerWnd
(
[in] LONG Size_cx,
[in] LONG Size_cy,
[in] LONG Pos_cx,
[in] LONG Pos_cy,
[in] ULONG Style,
[in] ULONG hwndParent,
[in] ULONG id,
[Out] ULONG* phwnd
);
[helpstring(“Get list of windows within the application”)]
HRESULT GetWindowList
(
[out] ULONG* pWindowList,
[out] ULONG* pCount
);
[helpstring(“Release list of windows within the application”)]
HRESULT ReleaseWindowList([in] ULONG WindowList);
[helpstring(“Get name of specific window within the application”)]
HRESULT GetWindowNameAndIndex
(
[in] ULONG WindowList,
[in] ULONG SequenceIndex,
[out] BSTR* pWindowName,
[out] ULONG* pWindowIndex
);
};
The local runtime code is made capable of determining whether it is running as a desktop application or in the context of the associated ActiveX control by the introduction of a global variable that contains the application directory, user name, password, a flag to indicate whether or not it is running as a local server, size, position, style, parent handle, id, and main window handle. At any point in the legacy code where behavior in the browser should differ from behavior of a desktop application this global variable is consulted to determine the execution context.
Thus, when running in the context of a local server, the startup code displaying the splash screen is omitted and code that sets the style for the main window is omitted. (The style is set by the controlling ActiveX control via the CreateServerWnd method.) Therefore, when the WindowViewer runs in the context of an Internet Browser, no trace is left behind.
Two new command messages are included in the main window procedure for WindowViewer that allow various windows to be loaded and unloaded. The single parameter to these new command messages is a window index. This index is cached by the ActiveX control and was obtained through the use of the method GetWindowNameAndIndex which is exposed by the local server.
Command line processing was modified to look for “/RegServer”, “/UnregServer”, and “/Embedding”. When any of these switches is found it calls into a function provided by VIEWLS.LIB to provide the implementation.
ActiveX Control
Another new feature of this invention is a particular ActiveX control, VIEWCTL.OCX that serves as the context for execution. Essentially any program that can host an ActiveX control, for example, an Internet Browser, VB, etc., can be a WindowViewer host. The hosting program creates an instance of VIEWCTL.OCX and when created it causes an instance of the local server to be created. Once the local server is created, the OCX call, CreateServerWnd method, is exposed by the local server. It takes the resulting window handle and makes it a child of the OCX. This results in the local server's window reacting to the things that happen to the screen area associated with the OCX. For example, if the OCX is minimized, the server window is also minimized. If the OCX is moved, the server window is also moved. When the OCX is closed, the server window is also closed.
The user interface presented by the OCX allows the remote user to show and hide windows as desired. If the application has been created with its own internal window management, the OCX can be configured to not show the browser navigation frame. Once the user has selected and displayed a window, the user interacts with the window as if it were on the remote desktop.
The IDispatch based interface, identified by IID_DIViewLS, provides the methods for manipulating the legacy code. The properties in this interface are as follows:
GetWindowSets: This property returns an enumerator for windows that are part of the client application.
NavigationFrame: This property determines whether or not the ActiveX control displays a frame filled with window names on the left side of the display. This is a useful feature when the client application does not provide any navigation mechanism. If the frame is enabled, it can be reduced in size because it is based on splitter window technology.
The methods in this interface are as follows:
ShowWindow: The parameter to this method is the name of the window. The implementation will send a command message to the local server window, which results in the window being loaded and displayed.
HideWindow: The parameter to this method is the name of the window. The implementation will send a command message to the local server window, which results in the window being hidden.
SetApplicationDirectory: The parameter to this method is the path to the client application. The implementation will call into the local server to set the value in the global variable introduced by VIEWLS.LIB.
CreateServerWindow: There are no parameters to this method. The implementation results in a call into the local server to create the main window for WindowViewer and to fully initialize it.
SetIPAddress: The parameter to this method is the IP Address for the machine. The implementation calls into the local server to set this value.
SetUser: The parameter to this method is the user id to be used. The implementation calls into the local server to set this value.
SetPassword: The parameter to this method is the password for the specified user. The implementation calls into the local server to set this value.
The IDL for this interface is set forth below:
[uuid(BFB5EDD4-E9DA-11D1-B158-00A0C95AC277),
helpstring(“Dispatch interface for IView Control”), hidden]
dispinterface_DIView
{
properties:
// NOTE - ClassWizard will maintain property information here.
// Use extreme caution when editing this section.
//{{AFX_ODL_PROP(CIViewCtrl)
[id(1)] VARIANT GetWindowSets;
[id(2)] Boolean NavigationFrame;
//}}AFX_ODL_PROP
methods:
// NOTE - ClassWizard will maintain method information here.
// Use extreme caution when editing this section.
//{{AFX_ODL_METHOD(CIViewCtrl)
[id(3)] void ShowWindow(BSTR szWindowName);
[id(4)] void HideWindow(BSTR szWindowName);
[id(5)] void SetApplicationDirectory(BSTR szApplicationDirectory);
[id(6)] void CreateServerWindow( );
[id(7)] void SetIPAddress(BSTR szIPAddress);
[id(8)] void SetUser(BSTR szUser);
[id(9)] void SetPassword(BSTR szPassword);
//}}AFX_ODL_METHOD
[id(DISPID_ABOUTBOX)] void AboutBox( );
};
Handler Toolkit
The IView Handler Toolkit provides an easy way for users to develop their own handlers for a specific data type. The toolkit contains an abstract class that contains the functions needed to implement a handler. That class sits above a class defining the NT service functionality. An example of a handler created using the handler toolkit is set forth below:
(1) class TestHandlerListener:public OutpostHandlerActionListener
{
bool m_bDone;
bool m_bPause;
DWORD m_dwThreadID;
public:
bool OnInit() {
m_bDone  = false;
m_bPause  = false;
m_dwThreadID = 0;
return true;
}
(2) void Run(int argc,char* argv[ ]) {
MSG msg;
m_dwThreadID = GetCurrentThreadId( );
while (m_bDone == false) {
while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
// get next message in queue
if (WM_QUIT == msg.message) {
m_bDone = TRUE;
Beep(400,400);
Beep(400,400);
Beep(400,400);
break;
}
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
printf(“\nEnd Run threadId = %d\n,” GetCurrentThreadId( ));
}
(3) void OnStop( ) {
m_bDone = true;
}
(3) void OnInterrogate( ) { }
(3) void OnPause( ) {
m_bPause = true;
}
(3) void OnContinue( ) {
m_bPause = false;
}
(3) void OnShutdown( ) {
m_bDone = true;
}
(3) bool OnUserControl(DWORD dwOpcode) {
return true;
}
(4) unsigned long OnData(unsigned long uniqueSessionID,
long IRequestSize,
unsigned char *pRequestData,
long *IReplySize,
unsigned char **ppReplyData)
{
printf(“OnData uniqueSessionID = %d\n,” uniqueSessionID);
printf(“\t\tRequestSize = %d\n,” IRequestSize);
printf(“%s\n,” pRequestData);
*1ReplySize = 1RequestSize;
*ppReplyData = (unsigned char *)
OutpostHandler::AllocateMemory(1RequestSize);
if (*ppReplyData)
memcpy(*ppReplyData, pRequestData, 1RequestSize);
else
printf(“Memory Error\n”);
return 0;
}
(5) unsigned long OnCreateSession(unsigned long uniqueSessionID) {
printf(“OnCreateSession uniqueSessionID = %d\n,”
uniqueSessionID);
return 0;
}
(6) unsigned long OnCloseSession(unsigned long uniqueSessionID) {
printf(“OnCloseSession uniqueSessionID = %d\n,”
uniqueSessionID);
return 0;
}
};
In the handler's main method, the object is created and initialized as follows:
(7) TestHandlerListener *pTestHandlerListener =
new TestHandlerListener( );
(8) OutpostHandler *pHandler = new OutpostHandler( );
if (!pHandler->Init(argc, argv,
pTestHandlerListener,
handler, handler))
printf(“pHandler->Init Failed\n”);
The toolkit also allows for easy development of clients by users. Below is a class
illustrating client functionality:
class EchoListener:public IOutpostSessionListener
{
public:
bool OKToSend;
(9) EchoListener( ) { OKToSend = false; };
void SessionCreated(DWORD dwSessionID) {
cout <<“SessionCreated(“<<dwSessionID<<“)”<<endl;
OKToSend = true;
}
(10) void SessionCreateFail(DWORD dwErrorCode) {
printf(“SessionCreateFail(dwErrorCode = %ld
[0x%08x])\n,” dwErrorCode, dwErrorCode);
}
(11) void SessionClosed(DWORD dwSessionID) {
cout <<“SessionClosed(“<<dwSessionID<<“)”<<endl;
}
(12) void Receive(DWORD dwSessionID,
LPVOID lpBuf,
DWORD dwSize,
DWORD dwRequestID,
DWORD dwSenderID) {
printf(“Data: %.*s\n,” dwSize, IpBuf);
OKToSend = true;
}
(13) void SendFail(DWORD dwSessionID,
DWORD dwReason,
DWORD dwRequestID,
DWORD dwSenderID) {
printf(“SendFail(RequestID:%d,SenderID:%d)\n,”
dwRequestID, dwSenderID);
}
(14) void SendSucceed(DWORD dwSessionID,
DWORD dwRequestID,
DWORD dwSenderID) {
printf(“SendSucceed(RequestID:%d,SenderID:%d)\n,”
dwRequestID, dwSenderID);
}
(15) void SessionError(DWORD dwErrorCode, char szErrorCode[128]) {
printf(“SessionError(ErrorCode = 0x%08x,
szErrorCode:%.*s)\n,” dwErrorCode, 128, szErrorCode);
}
};
In the client, objects similar to the handler are used to open a session such as
shown below:
EchoListener  *pEchoListener = new EchoListener( );
IOutpostSession *pSession  = new IOutpostSession( );
bool rc = pSession->Open(outpost, handler, pEchoListener);
if (rc == false)
cout <<“pSession->Open Failed”<<endl;
The loop set forth below starts the polling for data:
for (size_t requestID=1, senderID=200; rc == true;) {
if(pEchoListener->OKToSend == true) {
char szWord[4096] = {0}; cout <<“Enter string:”;
if(0 == gets(szWord) ∥ 0 == szWord[0])
break;
pSession->Send(szWord, strlen(szWord) + 1,
requestID, senderID);
pEchoListener->OKToSend = faise;
requestID++, senderID++;
}
Sleep(500);
}
Where
(1) is the abstract class needed to implement a handler;
(2) is the run method which starts the handler's thread;
(3) are six functions that correspond to the needs of a service;
(4) is a function that handles the request/reply;
(5) creates the session given a unique id passed from the client;
(6) closes the session corresponding to the id passed from the client;
(7) is the user's handler object;
(8) is the handler object provided by the toolkit;
(9) notifies the client that a session has been created;
(10) notifies the client that a session creation failed;
(11) notifies the client that a session has been closed;
(12) handles the data coming from the server;
(13) provides error information for a failed send;
(14) notifies the client that the send was successful; and
(15) provides error code information for session errors.
While a specific embodiment of this invention has been described above, those skilled in the art will readily appreciate that many modifications are possible in the specific embodiment, without materially departing from the novel teachings and advantages of this invention. Accordingly, all such modifications are intended to be included within the scope of this invention, as defined in the following claims.

Claims (27)

Having thus described the invention, what is claimed is:
1. A method for remote control by at least one control system located on at least one first computer, said method comprising:
a. causing the control system to gather control system information;
b. transmitting the control system information gathered by the control system over at least one communication path to an object container on at least one second computer system; and
c. running a software application in the object container to manipulate the transmitted control information.
2. The method for remote control as described in claim 1, further comprising:
a. causing the at least one second computer system to gather control information;
b. transmitting the control information gathered by the at least one second computer system over at least one communication path to an object container on the control system; and
c. controlling the control system with the control information gathered by the at least one second computer system.
3. The method for remote control as described in claim 2, further comprising:
a. storing the control system information gathered by the control system in a control system memory located in the first computer; and
b. storing the control system information gathered by the at least one second computer system in the control system memory located in the first computer.
4. The method for remote control as described in claim 2, further comprising:
a. storing the control system information gathered by the at least one second computer system in a computer system memory located in the second computer; and
b. storing the control system information gathered by the control system in the computer system memory located in the second computer.
5. The method for remote control as described in claim 1, further comprising the at least one control system communicating with the at least one second computer system over a plurality of communication paths.
6. The method for remote control as described in claim 5, wherein the plurality of communication paths includes secure paths and non-secure paths.
7. The method for remote control as described in claim 1, wherein control system information comprises alarm data.
8. The method for remote control as described in claim 1, wherein control system information comprises runtime data, wherein incremental real time data changes are stored in a runtime data base.
9. The method for remote control as described in claim 1, wherein control system information comprises historical data.
10. A system for remote control of a local system comprising:
a. at least one control system having memory and a CPU for sending and receiving control information and instructions at a first location;
b. at least one first software application for manipulating the control information sent and received by the control system resident in the memory;
c. at least one remote computer system having a CPU and memory at a second location communicating over at least one communication path with the at least one control system at the first location; and
d. at least one desktop bound software application for manipulating the control information sent and received by the control system accessed by the remote computer system over the at least one communication path resident in the memory of the remote computer system.
11. The system for remote control as described in claim 10, wherein the communication path is selected from a communication path type, and wherein the communication path type is selected from at least one of the following:
a. a secure communication path; and
b. a non-secure communication path.
12. The system for remote control as described in claim 11, wherein the communication path includes at least one secure communication path which has at least one session and at least one non-secure communication path which has at least one session, wherein none of the sessions includes both a secure communication path and a non-secure communication path.
13. The system for remote control as described in claim 11, wherein the communication path includes a plurality of connections, wherein the plurality of connections are all the same communication path type, and wherein the plurality of connections are funneled through a single session.
14. The system for remote control as described in claim 10, wherein the control information comprises alarm data.
15. The system for remote control as described in claim 10, wherein the at least one communication path is operable in a single session.
16. The system for remote control as described in claim 10, wherein the at least one communication path is operable across multiple session.
17. The system for remote control as described in claim 10, wherein the control information comprises runtime data.
18. The system for remote control as described in claim 10, wherein the control information comprises historical data.
19. In a computer system having memory and a CPU for sending and receiving remote and local system information at a first location having at least one system for controlling a local system by at least one remote computer system having a CPU and memory at a second location, a computer-readable medium holding computer-executable instructions for performing a method comprising:
a. causing the local system to gather local system information;
b. transmitting the local system information over at least one communication path to an object container on the at least one remote computer system; and
c. running a software application in the object container to manipulate the transmitted local system information.
20. The computer readable medium as described in claim 19, further comprising computer executable instructions for:
a. causing the remote computer system to gather remote system information;
b. transmitting the remote system information over at least one communication path to an object container on the control system; and
c. controlling the local system with the remote system information.
21. The computer readable medium as described in claim 20, further comprising computer executable instructions for:
a. storing the local system information in the computer system memory; and
b. storing the remote system information in the computer system memory.
22. The computer readable medium as described in claim 20, further comprising computer executable instructions for:
a. storing the local system information in the computer system memory; and
b. storing the remote system information in the computer system memory.
23. The computer readable medium as described in claim 19, further comprising computer executable instructions for the local system communicating with the at least one remote computer system over a plurality of communication paths.
24. The computer readable medium as described in claim 23, wherein the plurality of communication paths includes secure paths and non-secure paths.
25. The computer readable medium as described in claim 19, wherein local and remote system information comprises alarm data.
26. The computer readable medium as described in claim 19, wherein local and remote system information comprises runtime data, wherein incremental real time data changes are stored in a runtime data base.
27. The computer readable medium as described in claim 19, wherein local and remote system information comprises historical data.
US09/430,464 1999-10-29 1999-10-29 Method and system for remote control of a local system Expired - Lifetime US6675193B1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US09/430,464 US6675193B1 (en) 1999-10-29 1999-10-29 Method and system for remote control of a local system
US10/696,386 US7330878B2 (en) 1999-10-29 2003-10-29 Method and system for remote control of a local system
US11/964,632 US7917595B2 (en) 1999-10-29 2007-12-26 Method and system for remote control of a local system
US13/073,867 US8285807B2 (en) 1999-10-29 2011-03-28 Method and system for remote industrial factory automation control of a local system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/430,464 US6675193B1 (en) 1999-10-29 1999-10-29 Method and system for remote control of a local system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US10/696,386 Continuation US7330878B2 (en) 1999-10-29 2003-10-29 Method and system for remote control of a local system

Publications (1)

Publication Number Publication Date
US6675193B1 true US6675193B1 (en) 2004-01-06

Family

ID=29736789

Family Applications (4)

Application Number Title Priority Date Filing Date
US09/430,464 Expired - Lifetime US6675193B1 (en) 1999-10-29 1999-10-29 Method and system for remote control of a local system
US10/696,386 Expired - Lifetime US7330878B2 (en) 1999-10-29 2003-10-29 Method and system for remote control of a local system
US11/964,632 Expired - Lifetime US7917595B2 (en) 1999-10-29 2007-12-26 Method and system for remote control of a local system
US13/073,867 Expired - Fee Related US8285807B2 (en) 1999-10-29 2011-03-28 Method and system for remote industrial factory automation control of a local system

Family Applications After (3)

Application Number Title Priority Date Filing Date
US10/696,386 Expired - Lifetime US7330878B2 (en) 1999-10-29 2003-10-29 Method and system for remote control of a local system
US11/964,632 Expired - Lifetime US7917595B2 (en) 1999-10-29 2007-12-26 Method and system for remote control of a local system
US13/073,867 Expired - Fee Related US8285807B2 (en) 1999-10-29 2011-03-28 Method and system for remote industrial factory automation control of a local system

Country Status (1)

Country Link
US (4) US6675193B1 (en)

Cited By (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020065908A1 (en) * 2000-11-30 2002-05-30 Agerholm Alex O. New communication techniques for simple network management protocol
US20020188672A1 (en) * 2001-06-08 2002-12-12 Bob Janssen Server-based computing environment
US20030018725A1 (en) * 2000-10-20 2003-01-23 Tod Turner System and method for using an instant messaging environment to establish a hosted application sharing session
US20030093536A1 (en) * 2001-11-09 2003-05-15 't Hooft Maarten W. Support interface module
US20030217155A1 (en) * 2002-05-20 2003-11-20 Siemens Information And Communication Networks, Inc. Send of software tracer messages via IP from several sources to be stored by a remote server
US20040003054A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Systems and methods for transparently accessing Web applications remotely and locally
US20040001089A1 (en) * 2002-06-28 2004-01-01 Internationl Business Machines Corporation Systems and methods for messaging in a multi-frame Web application
US20040003130A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Systems and methods for accessing web services using a tag library
US20040024841A1 (en) * 2002-06-28 2004-02-05 International Business Machines Corporation Systems and methods for displaying and executing web services in multiple content domains
US20040093405A1 (en) * 2001-11-09 2004-05-13 Sun Microsystems, Inc., A California Corporation Support interface module bug submitter
US20040093391A1 (en) * 2002-11-07 2004-05-13 Heng-Chien Chen Computer console for wirelessly controlling remote computers
US20040153493A1 (en) * 1999-10-29 2004-08-05 Sean Slavin Method and system for remote control of a local system
US20040172560A1 (en) * 2003-02-28 2004-09-02 Ikuko Kobayashi Stream server apparatus, program, and NAS device
US20040230643A1 (en) * 1996-08-20 2004-11-18 Invensys Systems, Inc. Methods and apparatus for remote process control
US20040254648A1 (en) * 1999-06-11 2004-12-16 Alexander Johnson Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US20050071784A1 (en) * 2003-09-30 2005-03-31 Udo Klein Successively displaying panels in a computer user interface
US20050080909A1 (en) * 2003-10-10 2005-04-14 Anatoliy Panasyuk Methods and apparatus for scalable secure remote desktop access
US20050198648A1 (en) * 2004-01-16 2005-09-08 Microsoft Corporation Remote system administration using command line environment
US7024497B1 (en) * 2000-09-07 2006-04-04 Adaptec, Inc. Methods for accessing remotely located devices
US20060184538A1 (en) * 2005-02-16 2006-08-17 Sonic Solutions Generation, organization and/or playing back of content based on incorporated parameter identifiers
US20060206860A1 (en) * 1999-05-17 2006-09-14 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US20060294579A1 (en) * 2004-03-01 2006-12-28 Invensys Systems, Inc. Process control methods and apparatus for intrusion detection, protection and network hardening
US20080011864A1 (en) * 2004-03-02 2008-01-17 Honeywell International Inc. Wireless controller with gateway
US20080103751A1 (en) * 2000-03-10 2008-05-01 Smiths Detection, Inc. Temporary expanding integrated monitoring network
US20080120570A1 (en) * 2006-11-22 2008-05-22 Bluetie, Inc. Methods for managing windows within an internet environment and systems thereof
US20090001181A1 (en) * 2007-06-28 2009-01-01 Honeywell International Inc. Thermostat with usage history
US20090001180A1 (en) * 2007-06-28 2009-01-01 Honeywell International Inc. Thermostat with utility messaging
US20090057424A1 (en) * 2007-08-27 2009-03-05 Honeywell International Inc. Remote hvac control with user privilege setup
US20090062964A1 (en) * 2007-08-27 2009-03-05 Honeywell International Inc. Remote hvac control with remote sensor wiring diagram generation
US20090057426A1 (en) * 2007-08-27 2009-03-05 Honeywell International Inc. Remote hvac control wtih universal engineering tool
US20090125128A1 (en) * 1999-05-17 2009-05-14 Invensys Systems, Inc. Control systems and methods with versioning
US20090210948A1 (en) * 2008-02-20 2009-08-20 International Business Machines Corporation Remote computer rebooting tool
US20090307324A1 (en) * 2008-06-06 2009-12-10 Glenn Rasmussen System and A Method For Implementing A Plurality of Interface Definitions
US20100049795A1 (en) * 2000-11-03 2010-02-25 Juniper Networks, Inc. Method and system for providing secure access to private networks
US7770181B2 (en) 2004-01-16 2010-08-03 Microsoft Corporation System and method for transferring computer-readable objects across a remote boundary
US7779097B2 (en) 2000-09-07 2010-08-17 Sonic Solutions Methods and systems for use in network management of content
US20100305720A1 (en) * 2009-05-29 2010-12-02 Invensys Systems, Inc. Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US7860857B2 (en) 2006-03-30 2010-12-28 Invensys Systems, Inc. Digital data processing apparatus and methods for improving plant performance
US20110093098A1 (en) * 2009-05-29 2011-04-21 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US20120326851A1 (en) * 2011-06-23 2012-12-27 Sony Corporation Remote control device, a far-end device, a multimedia system and a control method thereof
US8484703B2 (en) 2004-10-06 2013-07-09 Mcafee, Inc. Systems and methods for delegation and notification of administration of internet access
US8594814B2 (en) 2008-06-20 2013-11-26 Invensys Systems, Inc. Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control
US20150150007A1 (en) * 2009-12-18 2015-05-28 Microsoft Technology Licensing, Llc Session monitoring of virtual desktops in a virtual machine farm
US9098312B2 (en) 2011-11-16 2015-08-04 Ptc Inc. Methods for dynamically generating an application interface for a modeled entity and devices thereof
US9158532B2 (en) 2013-03-15 2015-10-13 Ptc Inc. Methods for managing applications using semantic modeling and tagging and devices thereof
US9350812B2 (en) 2014-03-21 2016-05-24 Ptc Inc. System and method of message routing using name-based identifier in a distributed computing environment
US9348943B2 (en) 2011-11-16 2016-05-24 Ptc Inc. Method for analyzing time series activity streams and devices thereof
US9350791B2 (en) 2014-03-21 2016-05-24 Ptc Inc. System and method of injecting states into message routing in a distributed computing environment
US9462085B2 (en) 2014-03-21 2016-10-04 Ptc Inc. Chunk-based communication of binary dynamic rest messages
US9467533B2 (en) 2014-03-21 2016-10-11 Ptc Inc. System and method for developing real-time web-service objects
US9560170B2 (en) 2014-03-21 2017-01-31 Ptc Inc. System and method of abstracting communication protocol using self-describing messages
US9576046B2 (en) 2011-11-16 2017-02-21 Ptc Inc. Methods for integrating semantic search, query, and analysis across heterogeneous data types and devices thereof
US9762637B2 (en) 2014-03-21 2017-09-12 Ptc Inc. System and method of using binary dynamic rest messages
US20180025704A1 (en) * 2016-07-21 2018-01-25 Tektronix, Inc. Composite user interface
US9961058B2 (en) 2014-03-21 2018-05-01 Ptc Inc. System and method of message routing via connection servers in a distributed computing environment
US10025942B2 (en) 2014-03-21 2018-07-17 Ptc Inc. System and method of establishing permission for multi-tenancy storage using organization matrices
US20180212930A1 (en) * 2017-01-24 2018-07-26 International Business Machines Corporation Secure network connections
US10313410B2 (en) 2014-03-21 2019-06-04 Ptc Inc. Systems and methods using binary dynamic rest messages
US10338896B2 (en) 2014-03-21 2019-07-02 Ptc Inc. Systems and methods for developing and using real-time data applications
US10436977B2 (en) 2013-12-11 2019-10-08 Ademco Inc. Building automation system setup using a remote control device
US10488062B2 (en) 2016-07-22 2019-11-26 Ademco Inc. Geofence plus schedule for a building controller
US10852025B2 (en) 2013-04-30 2020-12-01 Ademco Inc. HVAC controller with fixed segment display having fixed segment icons and animation

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7331019B2 (en) * 2003-08-02 2008-02-12 Pathway Technologies, Inc. System and method for real-time configurable monitoring and management of task performance systems
GB2415065B (en) * 2004-06-09 2009-01-21 Symbian Software Ltd A computing device having a multiple process architecture for running plug-in code modules
US8875040B2 (en) * 2005-06-07 2014-10-28 Rockwell Automation Technologies, Inc. Universal web-based reprogramming method and system
US20070033538A1 (en) * 2004-11-03 2007-02-08 Rockwell Automation Technologies, Inc. Real time parallel interface configuration and device representation method and system
US20070055386A1 (en) * 2004-11-03 2007-03-08 Rockwell Automation Technologies, Inc. Abstracted display building method and system
US8743019B1 (en) 2005-05-17 2014-06-03 Nvidia Corporation System and method for abstracting computer displays across a host-client network
US9195428B2 (en) 2006-04-05 2015-11-24 Nvidia Corporation Method and system for displaying data from auxiliary display subsystem of a notebook on a main display of the notebook
US8775704B2 (en) 2006-04-05 2014-07-08 Nvidia Corporation Method and system for communication between a secondary processor and an auxiliary display subsystem of a notebook
WO2008113641A1 (en) * 2007-03-19 2008-09-25 International Business Machines Corporation A method for logging of a remote control session
US8670942B2 (en) 2008-05-02 2014-03-11 Inguran, Llc Flow cytometer remote monitoring system
US8060353B2 (en) * 2008-05-02 2011-11-15 Iguran LLC Flow cytometer remote monitoring system
US7921195B2 (en) * 2008-06-09 2011-04-05 International Business Machines Corporation Optimizing service processing based on business information, operational intelligence, and self-learning
US9141105B2 (en) * 2008-07-23 2015-09-22 Hurco Companies, Inc. Method and apparatus for monitoring or controlling a machine tool system
US8736617B2 (en) * 2008-08-04 2014-05-27 Nvidia Corporation Hybrid graphic display
US8799425B2 (en) * 2008-11-24 2014-08-05 Nvidia Corporation Configuring display properties of display units on remote systems
US8780122B2 (en) * 2009-09-16 2014-07-15 Nvidia Corporation Techniques for transferring graphics data from system memory to a discrete GPU
US9111325B2 (en) 2009-12-31 2015-08-18 Nvidia Corporation Shared buffer techniques for heterogeneous hybrid graphics
EP2542982A4 (en) * 2010-03-05 2016-10-26 Infrared5 Inc System and method for two way communication and controlling content in a web browser
US9183560B2 (en) 2010-05-28 2015-11-10 Daniel H. Abelow Reality alternate
US8854177B2 (en) 2010-12-02 2014-10-07 Viscount Security Systems Inc. System, method and database for managing permissions to use physical devices and logical assets
KR101251250B1 (en) * 2011-07-01 2013-04-08 알서포트 주식회사 System for performing remote control using remote device driver and method for performing the same
US8825748B2 (en) 2011-07-06 2014-09-02 Sharp Laboratories Of America, Inc. Sandboxed daemon process invocation through HTTP
CN104219314B (en) * 2014-09-10 2017-07-28 珠海市君天电子科技有限公司 The method and system of electronic equipment, remotely controlling electronic devices

Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5122948A (en) 1990-06-28 1992-06-16 Allen-Bradley Company, Inc. Remote terminal industrial control communication system
US5307463A (en) 1990-03-08 1994-04-26 Allen-Bradley Company, Inc. Programmable controller communication module
US5550984A (en) 1994-12-07 1996-08-27 Matsushita Electric Corporation Of America Security system for preventing unauthorized communications between networks by translating communications received in ip protocol to non-ip protocol to remove address and routing services information
US5598536A (en) 1994-08-09 1997-01-28 Shiva Corporation Apparatus and method for providing remote users with the same unique IP address upon each network access
US5619638A (en) * 1989-07-31 1997-04-08 Hewlett-Packard Company Object based computer system having representation objects for providing interpretative views onto a data object
US5623601A (en) 1994-11-18 1997-04-22 Milkway Networks Corporation Apparatus and method for providing a secure gateway for communication and data exchanges between networks
US5720035A (en) 1994-11-21 1998-02-17 France Telecom System for control of access to computer machines which are connected in a private network
US5778173A (en) 1996-06-12 1998-07-07 At&T Corp. Mechanism for enabling secure electronic transactions on the open internet
US5778174A (en) 1996-12-10 1998-07-07 U S West, Inc. Method and system for providing secured access to a server connected to a private computer network
US5790977A (en) 1997-02-06 1998-08-04 Hewlett-Packard Company Data acquisition from a remote instrument via the internet
US5805442A (en) 1996-05-30 1998-09-08 Control Technology Corporation Distributed interface architecture for programmable industrial control systems
US5805803A (en) 1997-05-13 1998-09-08 Digital Equipment Corporation Secure web tunnel
US5826014A (en) 1996-02-06 1998-10-20 Network Engineering Software Firewall system for protecting network elements connected to a public network
US5828674A (en) 1997-09-16 1998-10-27 Teradyne, Inc. Production interface for integrated circuit test system
US5847957A (en) 1997-06-16 1998-12-08 Base Ten Systems, Inc. Web access for a manufacturing execution system
US5875322A (en) 1997-03-31 1999-02-23 International Business Machines Corporation Making a control available to a computer without installing the control
US5884025A (en) 1995-05-18 1999-03-16 Sun Microsystems, Inc. System for packet filtering of data packet at a computer network interface
US6012100A (en) * 1997-07-14 2000-01-04 Freegate Corporation System and method of configuring a remotely managed secure network interface
US6259443B1 (en) * 1998-02-06 2001-07-10 Henry R. Williams, Jr. Method and apparatus for enabling multiple users to concurrently access a remote server using set-top boxes
US6304895B1 (en) * 1997-08-22 2001-10-16 Apex Inc. Method and system for intelligently controlling a remotely located computer
US6343311B1 (en) * 1997-05-27 2002-01-29 International Business Machines Corporation Methods, systems and computer program products for remote control of a processing system
US6463468B1 (en) * 1999-06-01 2002-10-08 Netzero, Inc. Targeted network video download interface

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5909545A (en) * 1996-01-19 1999-06-01 Tridia Corporation Method and system for on demand downloading of module to enable remote control of an application program over a network
US6788314B1 (en) * 1996-03-22 2004-09-07 Interval Research Corporation Attention manager for occupying the peripheral attention of a person in the vicinity of a display device
US7146408B1 (en) * 1996-05-30 2006-12-05 Schneider Automation Inc. Method and system for monitoring a controller and displaying data from the controller in a format provided by the controller
EP0825506B1 (en) * 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
US5818716A (en) * 1996-10-18 1998-10-06 Taiwan Semiconductor Manufacturing Company Ltd. Dynamic lot dispatching required turn rate factory control system and method of operation thereof
US5995756A (en) * 1997-02-14 1999-11-30 Inprise Corporation System for internet-based delivery of computer applications
US6405111B2 (en) * 1997-05-16 2002-06-11 Snap-On Technologies, Inc. System and method for distributed computer automotive service equipment
US7035898B1 (en) * 1997-09-10 2006-04-25 Schneider Automation Inc. System for programming a factory automation device using a web browser
US20020152289A1 (en) * 1997-09-10 2002-10-17 Schneider Automation Inc. System and method for accessing devices in a factory automation network
US6470386B1 (en) * 1997-09-26 2002-10-22 Worldcom, Inc. Integrated proxy interface for web based telecommunications management tools
US6453127B2 (en) * 1997-09-26 2002-09-17 Nexpress Solutions Llc Establishment at a remote location of an internet/intranet user interface to a copier/printer
US6370569B1 (en) * 1997-11-14 2002-04-09 National Instruments Corporation Data socket system and method for accessing data sources using URLs
US6763395B1 (en) * 1997-11-14 2004-07-13 National Instruments Corporation System and method for connecting to and viewing live data using a standard user agent
US6061602A (en) * 1998-06-23 2000-05-09 Creative Lifestyles, Inc. Method and apparatus for developing application software for home automation system
US6198480B1 (en) * 1998-10-07 2001-03-06 Wonderware Corporation Object-oriented tag browser
US6810522B2 (en) * 1998-10-07 2004-10-26 Invensys Systems, Inc. Method and system for associating parameters of containers and contained objects
US6601087B1 (en) * 1998-11-18 2003-07-29 Webex Communications, Inc. Instant document sharing
US6658491B1 (en) * 1998-12-04 2003-12-02 Honeywell Inc. System and method for constructing an ole process control compliant data server from a noncompliant user application
US6501995B1 (en) * 1999-06-30 2002-12-31 The Foxboro Company Process control system and method with improved distribution, installation and validation of components
US6788980B1 (en) * 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6510352B1 (en) * 1999-07-29 2003-01-21 The Foxboro Company Methods and apparatus for object-based process control
DE60027025T2 (en) * 1999-09-16 2006-12-28 General Electric Co. VIRTUAL, MODULAR RELAY
US6675193B1 (en) * 1999-10-29 2004-01-06 Invensys Software Systems Method and system for remote control of a local system
US6473660B1 (en) * 1999-12-03 2002-10-29 The Foxboro Company Process control system and method with automatic fault avoidance
US7512906B1 (en) * 2002-06-04 2009-03-31 Rockwell Automation Technologies, Inc. System and methodology providing adaptive interface in an industrial controller environment
US7151966B1 (en) * 2002-06-04 2006-12-19 Rockwell Automation Technologies, Inc. System and methodology providing open interface and distributed processing in an industrial controller environment
US7222131B1 (en) * 2002-09-24 2007-05-22 Rockwell Automation Technologies, Inc. System and methodology facilitating data warehousing of controller images in a distributed industrial controller environment

Patent Citations (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619638A (en) * 1989-07-31 1997-04-08 Hewlett-Packard Company Object based computer system having representation objects for providing interpretative views onto a data object
US5307463A (en) 1990-03-08 1994-04-26 Allen-Bradley Company, Inc. Programmable controller communication module
US5122948A (en) 1990-06-28 1992-06-16 Allen-Bradley Company, Inc. Remote terminal industrial control communication system
US5598536A (en) 1994-08-09 1997-01-28 Shiva Corporation Apparatus and method for providing remote users with the same unique IP address upon each network access
US5623601A (en) 1994-11-18 1997-04-22 Milkway Networks Corporation Apparatus and method for providing a secure gateway for communication and data exchanges between networks
US5720035A (en) 1994-11-21 1998-02-17 France Telecom System for control of access to computer machines which are connected in a private network
US5550984A (en) 1994-12-07 1996-08-27 Matsushita Electric Corporation Of America Security system for preventing unauthorized communications between networks by translating communications received in ip protocol to non-ip protocol to remove address and routing services information
US5884025A (en) 1995-05-18 1999-03-16 Sun Microsystems, Inc. System for packet filtering of data packet at a computer network interface
US5826014A (en) 1996-02-06 1998-10-20 Network Engineering Software Firewall system for protecting network elements connected to a public network
US5805442A (en) 1996-05-30 1998-09-08 Control Technology Corporation Distributed interface architecture for programmable industrial control systems
US5778173A (en) 1996-06-12 1998-07-07 At&T Corp. Mechanism for enabling secure electronic transactions on the open internet
US5778174A (en) 1996-12-10 1998-07-07 U S West, Inc. Method and system for providing secured access to a server connected to a private computer network
US5790977A (en) 1997-02-06 1998-08-04 Hewlett-Packard Company Data acquisition from a remote instrument via the internet
US5875322A (en) 1997-03-31 1999-02-23 International Business Machines Corporation Making a control available to a computer without installing the control
US5805803A (en) 1997-05-13 1998-09-08 Digital Equipment Corporation Secure web tunnel
US6343311B1 (en) * 1997-05-27 2002-01-29 International Business Machines Corporation Methods, systems and computer program products for remote control of a processing system
US5847957A (en) 1997-06-16 1998-12-08 Base Ten Systems, Inc. Web access for a manufacturing execution system
US6012100A (en) * 1997-07-14 2000-01-04 Freegate Corporation System and method of configuring a remotely managed secure network interface
US6304895B1 (en) * 1997-08-22 2001-10-16 Apex Inc. Method and system for intelligently controlling a remotely located computer
US5828674A (en) 1997-09-16 1998-10-27 Teradyne, Inc. Production interface for integrated circuit test system
US6259443B1 (en) * 1998-02-06 2001-07-10 Henry R. Williams, Jr. Method and apparatus for enabling multiple users to concurrently access a remote server using set-top boxes
US6463468B1 (en) * 1999-06-01 2002-10-08 Netzero, Inc. Targeted network video download interface

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Beyond the Web: Excavating the Real World Via Mosaic, Second International WWW Conference.
Desktop Teleoperation via the World Wide Web, Goldberg, et al., University of Southern California.

Cited By (142)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040230643A1 (en) * 1996-08-20 2004-11-18 Invensys Systems, Inc. Methods and apparatus for remote process control
US8081584B2 (en) 1996-08-20 2011-12-20 Invensys Systems, Inc. Control system apparatus and systems using value-based transfers
US8023500B2 (en) 1996-08-20 2011-09-20 Invensys Systems, Inc. Methods for process control with change updates
US7979488B2 (en) 1996-08-20 2011-07-12 Invensys Systems, Inc. Control system methods using value-based transfers
US7899070B2 (en) 1996-08-20 2011-03-01 Invensys Systems, Inc. Control system apparatus with change updates
US7882197B2 (en) 1996-08-20 2011-02-01 Invensys Systems, Inc. Control system methods that transfer control apparatus information over IP networks in web page-less transfers
US7739361B2 (en) 1996-08-20 2010-06-15 Thibault Richard L Methods for remote process control with networked digital data processors and a virtual machine environment
US7720944B2 (en) 1996-08-20 2010-05-18 Invensys Systems, Inc. Process control system with networked digital data processors and a virtual machine environment
US20090094326A1 (en) * 1996-08-20 2009-04-09 Invensys Systems, Inc. Control system methods and apparatus with services
US20080222276A1 (en) * 1996-08-20 2008-09-11 Invensys Systems, Inc. Control system apparatus and systems based thereon that transfer control apparatus information over IP networks in web page-less transfers
US20080148170A1 (en) * 1996-08-20 2008-06-19 Invensys Systems, Inc. Control system apparatus with change updates
US20080134215A1 (en) * 1996-08-20 2008-06-05 Invensys Systems, Inc. Methods for process control with change updates
US20080052632A1 (en) * 1996-08-20 2008-02-28 Invensys Systems, Inc. Methods for remote process control with networked digital data processors and a virtual machine environment
US7890927B2 (en) 1999-05-17 2011-02-15 Invensys Systems, Inc. Apparatus and method for configuring and editing a control system with live data
US8060222B2 (en) 1999-05-17 2011-11-15 Invensys Systems, Inc. Control system configurator and methods with object characteristic swapping
US20090125129A1 (en) * 1999-05-17 2009-05-14 Invensys Systems, Inc. Control system configurator and methods with edit selection
US20090125130A1 (en) * 1999-05-17 2009-05-14 Invensys Systems, Inc. Control system editor and methods with live data
US20090125128A1 (en) * 1999-05-17 2009-05-14 Invensys Systems, Inc. Control systems and methods with versioning
US20090132996A1 (en) * 1999-05-17 2009-05-21 Invensys Systems, Inc. Apparatus for control systems with objects that are associated with live data
US20060206860A1 (en) * 1999-05-17 2006-09-14 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US8225271B2 (en) 1999-05-17 2012-07-17 Invensys Systems, Inc. Apparatus for control systems with objects that are associated with live data
US8229579B2 (en) 1999-05-17 2012-07-24 Invensys Systems, Inc. Control systems and methods with versioning
US8368640B2 (en) 1999-05-17 2013-02-05 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US8028275B2 (en) 1999-05-17 2011-09-27 Invensys Systems, Inc. Control systems and methods with smart blocks
US7984420B2 (en) 1999-05-17 2011-07-19 Invensys Systems, Inc. Control systems and methods with composite blocks
US20100223593A1 (en) * 1999-05-17 2010-09-02 Invensys Systems, Inc. Methods and apparatus for control configuration with object hierarchy, versioning, change records, object comparison, and other aspects
US20090125131A1 (en) * 1999-05-17 2009-05-14 Invensys Systems, Inc. Control systems and methods with composite blocks
US8028272B2 (en) 1999-05-17 2011-09-27 Invensys Systems, Inc. Control system configurator and methods with edit selection
US20080052386A1 (en) * 1999-06-11 2008-02-28 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an ip network
US20100011127A1 (en) * 1999-06-11 2010-01-14 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an ip network
US20040254648A1 (en) * 1999-06-11 2004-12-16 Alexander Johnson Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US20090164031A1 (en) * 1999-06-11 2009-06-25 Invensys Systems, Inc. Methods and apparatus for control using control devices that communicate via an ip network
US20100076604A1 (en) * 1999-06-11 2010-03-25 Invensys Systems, Inc. Method and apparatus for control using control devices that provide a virtual machine environment and that communicate via an ip network
US8090452B2 (en) 1999-06-11 2012-01-03 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US20040153493A1 (en) * 1999-10-29 2004-08-05 Sean Slavin Method and system for remote control of a local system
US7330878B2 (en) 1999-10-29 2008-02-12 Invensys, Inc. Method and system for remote control of a local system
US20080103751A1 (en) * 2000-03-10 2008-05-01 Smiths Detection, Inc. Temporary expanding integrated monitoring network
US8352049B2 (en) 2000-03-10 2013-01-08 Smiths Detection Inc. Temporary expanding integrated monitoring network
US7912561B2 (en) * 2000-03-10 2011-03-22 Smiths Detection Inc. Temporary expanding integrated monitoring network
US20060085574A1 (en) * 2000-09-07 2006-04-20 Sonic Solutions Methods for accessing remotely located devices
US7779097B2 (en) 2000-09-07 2010-08-17 Sonic Solutions Methods and systems for use in network management of content
US7024497B1 (en) * 2000-09-07 2006-04-04 Adaptec, Inc. Methods for accessing remotely located devices
US20030018725A1 (en) * 2000-10-20 2003-01-23 Tod Turner System and method for using an instant messaging environment to establish a hosted application sharing session
US9130936B2 (en) * 2000-11-03 2015-09-08 Pulse Secure, Llc Method and system for providing secure access to private networks
US9444791B2 (en) 2000-11-03 2016-09-13 Pulse Secure, Llc Method and system for providing secure access to private networks
US20100049795A1 (en) * 2000-11-03 2010-02-25 Juniper Networks, Inc. Method and system for providing secure access to private networks
US7093008B2 (en) * 2000-11-30 2006-08-15 Intel Corporation Communication techniques for simple network management protocol
US20020065908A1 (en) * 2000-11-30 2002-05-30 Agerholm Alex O. New communication techniques for simple network management protocol
US20090077174A1 (en) * 2001-06-08 2009-03-19 Real Enterprise Solutions Development B.V. Server-based computing environment
US7725527B2 (en) * 2001-06-08 2010-05-25 Real Enterprise Solutions Development B.V. Server-based computing environment
US20020188672A1 (en) * 2001-06-08 2002-12-12 Bob Janssen Server-based computing environment
US20040093405A1 (en) * 2001-11-09 2004-05-13 Sun Microsystems, Inc., A California Corporation Support interface module bug submitter
US7143313B2 (en) 2001-11-09 2006-11-28 Sun Microsystems, Inc. Support interface module bug submitter
US20030093536A1 (en) * 2001-11-09 2003-05-15 't Hooft Maarten W. Support interface module
US20030217155A1 (en) * 2002-05-20 2003-11-20 Siemens Information And Communication Networks, Inc. Send of software tracer messages via IP from several sources to be stored by a remote server
US7451206B2 (en) * 2002-05-20 2008-11-11 Siemens Communications, Inc. Send of software tracer messages via IP from several sources to be stored by a remote server
US8645862B2 (en) 2002-06-28 2014-02-04 International Business Machines Corporation Displaying and executing web services in multiple content domains
US7792929B2 (en) 2002-06-28 2010-09-07 International Business Machines Corporation Systems and methods for transparently accessing web applications remotely and locally
US20040003130A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Systems and methods for accessing web services using a tag library
US7426545B2 (en) * 2002-06-28 2008-09-16 International Business Machines Corporation Systems and methods for transparently accessing Web applications remotely and locally
US20040001089A1 (en) * 2002-06-28 2004-01-01 Internationl Business Machines Corporation Systems and methods for messaging in a multi-frame Web application
US20040024841A1 (en) * 2002-06-28 2004-02-05 International Business Machines Corporation Systems and methods for displaying and executing web services in multiple content domains
US20040003054A1 (en) * 2002-06-28 2004-01-01 International Business Machines Corporation Systems and methods for transparently accessing Web applications remotely and locally
US20090164563A1 (en) * 2002-06-28 2009-06-25 International Business Machines Corporation Systems and Methods for Transparently Accessing Web Applications Remotely and Locally
US7200818B2 (en) 2002-06-28 2007-04-03 International Business Machines Corporation Systems and methods for messaging in a multi-frame Web application
US20040093391A1 (en) * 2002-11-07 2004-05-13 Heng-Chien Chen Computer console for wirelessly controlling remote computers
US20040172560A1 (en) * 2003-02-28 2004-09-02 Ikuko Kobayashi Stream server apparatus, program, and NAS device
US7228562B2 (en) * 2003-02-28 2007-06-05 Hitachi, Ltd. Stream server apparatus, program, and NAS device
US7831931B2 (en) * 2003-09-30 2010-11-09 Sap Aktiengesellschaft Successively displaying panels in a computer user interface
US20050071784A1 (en) * 2003-09-30 2005-03-31 Udo Klein Successively displaying panels in a computer user interface
US8719433B2 (en) 2003-10-10 2014-05-06 Citrix Systems, Inc Methods and apparatus for scalable secure remote desktop access
US20050080909A1 (en) * 2003-10-10 2005-04-14 Anatoliy Panasyuk Methods and apparatus for scalable secure remote desktop access
US7770181B2 (en) 2004-01-16 2010-08-03 Microsoft Corporation System and method for transferring computer-readable objects across a remote boundary
US20050198648A1 (en) * 2004-01-16 2005-09-08 Microsoft Corporation Remote system administration using command line environment
US7698359B2 (en) * 2004-01-16 2010-04-13 Microsoft Corporation Remote system administration using command line environment
US7761923B2 (en) 2004-03-01 2010-07-20 Invensys Systems, Inc. Process control methods and apparatus for intrusion detection, protection and network hardening
US20060294579A1 (en) * 2004-03-01 2006-12-28 Invensys Systems, Inc. Process control methods and apparatus for intrusion detection, protection and network hardening
US20080011864A1 (en) * 2004-03-02 2008-01-17 Honeywell International Inc. Wireless controller with gateway
US20100168924A1 (en) * 2004-03-02 2010-07-01 Honeywell International Inc. Wireless controller with gateway
US8870086B2 (en) 2004-03-02 2014-10-28 Honeywell International Inc. Wireless controller with gateway
US9033255B2 (en) 2004-03-02 2015-05-19 Honeywell International Inc. Wireless controller with gateway
US8499337B1 (en) 2004-10-06 2013-07-30 Mcafee, Inc. Systems and methods for delegation and notification of administration of internet access
US8484703B2 (en) 2004-10-06 2013-07-09 Mcafee, Inc. Systems and methods for delegation and notification of administration of internet access
US9292516B2 (en) 2005-02-16 2016-03-22 Sonic Solutions Llc Generation, organization and/or playing back of content based on incorporated parameter identifiers
US20060184538A1 (en) * 2005-02-16 2006-08-17 Sonic Solutions Generation, organization and/or playing back of content based on incorporated parameter identifiers
US7860857B2 (en) 2006-03-30 2010-12-28 Invensys Systems, Inc. Digital data processing apparatus and methods for improving plant performance
US20080120570A1 (en) * 2006-11-22 2008-05-22 Bluetie, Inc. Methods for managing windows within an internet environment and systems thereof
US20110199209A1 (en) * 2007-06-28 2011-08-18 Honeywell International Inc. Thermostat with utility messaging
US20090001181A1 (en) * 2007-06-28 2009-01-01 Honeywell International Inc. Thermostat with usage history
US7954726B2 (en) 2007-06-28 2011-06-07 Honeywell International Inc. Thermostat with utility messaging
US8091794B2 (en) 2007-06-28 2012-01-10 Honeywell International Inc. Thermostat with usage history
US20090001180A1 (en) * 2007-06-28 2009-01-01 Honeywell International Inc. Thermostat with utility messaging
US8523084B2 (en) 2007-06-28 2013-09-03 Honeywell International Inc. Thermostat with utility messaging
US9152153B2 (en) 2007-08-27 2015-10-06 Honeywell International Inc. Remote HVAC control with universal engineering tool
US20090057424A1 (en) * 2007-08-27 2009-03-05 Honeywell International Inc. Remote hvac control with user privilege setup
US8239922B2 (en) 2007-08-27 2012-08-07 Honeywell International Inc. Remote HVAC control with user privilege setup
US20090062964A1 (en) * 2007-08-27 2009-03-05 Honeywell International Inc. Remote hvac control with remote sensor wiring diagram generation
US20090057426A1 (en) * 2007-08-27 2009-03-05 Honeywell International Inc. Remote hvac control wtih universal engineering tool
US7963454B2 (en) 2007-08-27 2011-06-21 Honeywell International Inc. Remote HVAC control with remote sensor wiring diagram generation
US20090210948A1 (en) * 2008-02-20 2009-08-20 International Business Machines Corporation Remote computer rebooting tool
US8924306B2 (en) 2008-02-20 2014-12-30 International Business Machines Corporation Remote computer rebooting tool
US9356805B2 (en) * 2008-06-06 2016-05-31 International Business Machines Corporation Implementing a plurality of interface definitions
US20090307324A1 (en) * 2008-06-06 2009-12-10 Glenn Rasmussen System and A Method For Implementing A Plurality of Interface Definitions
US8594814B2 (en) 2008-06-20 2013-11-26 Invensys Systems, Inc. Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control
US20100305720A1 (en) * 2009-05-29 2010-12-02 Invensys Systems, Inc. Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US20110093098A1 (en) * 2009-05-29 2011-04-21 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US10073709B2 (en) * 2009-12-18 2018-09-11 Microsoft Technology Licensing, Llc Session monitoring of virtual desktops in a virtual machine farm
US20150150007A1 (en) * 2009-12-18 2015-05-28 Microsoft Technology Licensing, Llc Session monitoring of virtual desktops in a virtual machine farm
US20120326851A1 (en) * 2011-06-23 2012-12-27 Sony Corporation Remote control device, a far-end device, a multimedia system and a control method thereof
US9024734B2 (en) * 2011-06-23 2015-05-05 Sony Corporation Remote control device, a far-end device, a multimedia system and a control method thereof
US10025880B2 (en) 2011-11-16 2018-07-17 Ptc Inc. Methods for integrating semantic search, query, and analysis and devices thereof
US9576046B2 (en) 2011-11-16 2017-02-21 Ptc Inc. Methods for integrating semantic search, query, and analysis across heterogeneous data types and devices thereof
US9348943B2 (en) 2011-11-16 2016-05-24 Ptc Inc. Method for analyzing time series activity streams and devices thereof
US9098312B2 (en) 2011-11-16 2015-08-04 Ptc Inc. Methods for dynamically generating an application interface for a modeled entity and devices thereof
US9965527B2 (en) 2011-11-16 2018-05-08 Ptc Inc. Method for analyzing time series activity streams and devices thereof
US9578082B2 (en) 2011-11-16 2017-02-21 Ptc Inc. Methods for dynamically generating an application interface for a modeled entity and devices thereof
US9158532B2 (en) 2013-03-15 2015-10-13 Ptc Inc. Methods for managing applications using semantic modeling and tagging and devices thereof
US10852025B2 (en) 2013-04-30 2020-12-01 Ademco Inc. HVAC controller with fixed segment display having fixed segment icons and animation
US10712718B2 (en) 2013-12-11 2020-07-14 Ademco Inc. Building automation remote control device with in-application messaging
US10591877B2 (en) 2013-12-11 2020-03-17 Ademco Inc. Building automation remote control device with an in-application tour
US10534331B2 (en) 2013-12-11 2020-01-14 Ademco Inc. Building automation system with geo-fencing
US10436977B2 (en) 2013-12-11 2019-10-08 Ademco Inc. Building automation system setup using a remote control device
US10649418B2 (en) 2013-12-11 2020-05-12 Ademco Inc. Building automation controller with configurable audio/visual cues
US10768589B2 (en) 2013-12-11 2020-09-08 Ademco Inc. Building automation system with geo-fencing
US9560170B2 (en) 2014-03-21 2017-01-31 Ptc Inc. System and method of abstracting communication protocol using self-describing messages
US9762637B2 (en) 2014-03-21 2017-09-12 Ptc Inc. System and method of using binary dynamic rest messages
US10025942B2 (en) 2014-03-21 2018-07-17 Ptc Inc. System and method of establishing permission for multi-tenancy storage using organization matrices
US10313410B2 (en) 2014-03-21 2019-06-04 Ptc Inc. Systems and methods using binary dynamic rest messages
US10338896B2 (en) 2014-03-21 2019-07-02 Ptc Inc. Systems and methods for developing and using real-time data applications
US10432712B2 (en) 2014-03-21 2019-10-01 Ptc Inc. System and method of injecting states into message routing in a distributed computing environment
US9961058B2 (en) 2014-03-21 2018-05-01 Ptc Inc. System and method of message routing via connection servers in a distributed computing environment
US9350812B2 (en) 2014-03-21 2016-05-24 Ptc Inc. System and method of message routing using name-based identifier in a distributed computing environment
US9350791B2 (en) 2014-03-21 2016-05-24 Ptc Inc. System and method of injecting states into message routing in a distributed computing environment
US9462085B2 (en) 2014-03-21 2016-10-04 Ptc Inc. Chunk-based communication of binary dynamic rest messages
US9467533B2 (en) 2014-03-21 2016-10-11 Ptc Inc. System and method for developing real-time web-service objects
US20180025704A1 (en) * 2016-07-21 2018-01-25 Tektronix, Inc. Composite user interface
US10488062B2 (en) 2016-07-22 2019-11-26 Ademco Inc. Geofence plus schedule for a building controller
US20180212930A1 (en) * 2017-01-24 2018-07-26 International Business Machines Corporation Secure network connections
US10547597B2 (en) * 2017-01-24 2020-01-28 International Business Machines Corporation Secure network connections
US11082413B2 (en) * 2017-01-24 2021-08-03 International Business Machines Corporation Secure network connections

Also Published As

Publication number Publication date
US7917595B2 (en) 2011-03-29
US20110225503A1 (en) 2011-09-15
US7330878B2 (en) 2008-02-12
US20080167732A1 (en) 2008-07-10
US8285807B2 (en) 2012-10-09
US20040153493A1 (en) 2004-08-05

Similar Documents

Publication Publication Date Title
US6675193B1 (en) Method and system for remote control of a local system
US11171897B2 (en) Method and apparatus for composite user interface generation
US7739657B2 (en) Pipeline architecture for use with net-centric application program architectures
US20200117486A1 (en) Method and Apparatus for Composite User Interface Creation
US5928323A (en) Apparatus and method for dynamically generating information with server-side software objects
CA2210755C (en) Creating proxies for distribution of beans and event objects
US20110078708A1 (en) System and Method for Communication Between Portal Applications and Portlet Containers
US7533114B2 (en) Mobile device having extensible software for presenting server-side applications, software and methods
JPH09223116A (en) Positional penetrability of distributed objects for plural middlewares
US7181747B2 (en) Method and device for executing a function with selection and sending of multiple results in a client-server environment
US7197712B2 (en) Server visualization and control
US7257819B1 (en) Method and system for dispatching service requests to sub-applications
US7353521B1 (en) Object oriented distributed software system with methodology for piggybacked reflective callbacks
US7853605B2 (en) Auxiliary data provider
WO1998021671A1 (en) Distributed document processing through an object request broker and a receptionist object
JP2003076563A (en) Distributed object middleware connection method and recording medium with program recorded thereon and program
AU2006200734B2 (en) Pipeline architecture for use with net-centric application program architectures
CA2551059C (en) Pipeline architecture for use with net-centric application program architectures
AU2006200733B2 (en) Application framework for the use with net-centric application program architectures
Johnson The structure of the OpenVMS Management Station
Elledge Creating Dynamic Web Content with CA-Visual Objects 2.5

Legal Events

Date Code Title Description
AS Assignment

Owner name: WONDERWARE, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SLAVIN, SEAN;COOK, JAY S.;EL-SABAALY, HATEM K.;REEL/FRAME:010354/0055

Effective date: 19991029

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: DEUTSCHE BANK AG, LONDON, UNITED KINGDOM

Free format text: SECURITY INTEREST;ASSIGNOR:INVENSYS SYSTEMS, INC.;REEL/FRAME:015279/0874

Effective date: 20040401

Owner name: DEUTSCHE BANK AG, LONDON,UNITED KINGDOM

Free format text: SECURITY INTEREST;ASSIGNOR:INVENSYS SYSTEMS, INC.;REEL/FRAME:015279/0874

Effective date: 20040401

AS Assignment

Owner name: INVENSYS SYSTEMS, INC.,MASSACHUSETTS

Free format text: MERGER;ASSIGNOR:WONDERWARE CORPORATION;REEL/FRAME:017846/0653

Effective date: 20020331

Owner name: INVENSYS SYSTEMS, INC., MASSACHUSETTS

Free format text: MERGER;ASSIGNOR:WONDERWARE CORPORATION;REEL/FRAME:017846/0653

Effective date: 20020331

AS Assignment

Owner name: DEUTSCHE BANK AG, LONDON BRANCH,UNITED KINGDOM

Free format text: SECURITY AGREEMENT;ASSIGNOR:INVENSYS SYSTEMS, INC.;REEL/FRAME:017921/0766

Effective date: 20060713

Owner name: DEUTSCHE BANK AG, LONDON BRANCH, UNITED KINGDOM

Free format text: SECURITY AGREEMENT;ASSIGNOR:INVENSYS SYSTEMS, INC.;REEL/FRAME:017921/0766

Effective date: 20060713

AS Assignment

Owner name: INVENSYS SYSTEMS, INC., MASSACHUSETTS

Free format text: RELEASE AND TERMINATION OF SECURITY INTEREST IN PA;ASSIGNOR:DEUTSCHE BANK AG LONDON;REEL/FRAME:018367/0749

Effective date: 20060727

FPAY Fee payment

Year of fee payment: 4

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: INVENSYS SYSTEMS, INC., MASSACHUSETTS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:DEUTSCHE BANK, AG, LONDON BRANCH;REEL/FRAME:030982/0663

Effective date: 20080723

REMI Maintenance fee reminder mailed
FPAY Fee payment

Year of fee payment: 12

SULP Surcharge for late payment

Year of fee payment: 11

AS Assignment

Owner name: SCHNEIDER ELECTRIC SOFTWARE, LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INVENSYS SYSTEMS, INC.;REEL/FRAME:041935/0683

Effective date: 20161221