Abstract:
A system and method for interfacing a single host application with multiple machines to be controlled by the host application via a local area network minimizes the complexity of dealing with multiple controlled entities by utilizing a single virtual state machine manager communicating with the host application. The virtual machine manager communicates with the controlled machines via machine proxies in conjunction with a command cache state machine and a command cache, which stores previous action requests generated by the host application. A machine epoxy is created for physical controlled entity attached to the system.

Description:
This application claims benefit of provisional application 60/101,118, filed Sep. 21, 1998. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates generally to a networked system of controlled machines, such as document processors, sharing a single control processing unit containing a host application for controlling the machines. More particularly, the invention concerns a mechanism for enabling relatively simple communication among a single application program and a plurality of controlled machines, such as document processors. 
     2. The Prior Art 
     With reference to  FIG. 1 , larger, more expensive document processors such as check processor  100  have conventionally been controlled by a dedicated central processing unit  102 . This is true regardless of the speed of the check processing machine. Central processor  102  hosts the customer&#39;s application software and provides some (or all) of the data manipulation services for check processing machine  100 . However, central processor  102  typically has excess processing power when used to control relatively low speed check processing machines  100 . This means that a low speed check-processing machine  100  generally makes a very uneconomical use of a central processor  102  and its resident host application. Additionally, multiple host applications are burdened with the added complexity of coordinating data from each of their respective check-processing machines with each other. 
     An example of a “host application” is a program to control a check-processing machine in capturing preselected image types, deciding what type of endorsement to print on the check, and which sorting pocket should receive the processed document. Such a host application could additionally communicate with a remote site for transfer of captured images for purposes such as archiving, amount entry or remittance. 
     With reference to  FIG. 2 , traditional systems comprising a plurality of document processing machines  200   a ,  200   b , and  200   c  require dedicated central processors  202   a ,  202   b  and  202   c  for each document processing machine  200   a,b,c.    
     Recently, the concept of a check reading/processing machine that is relatively small and economical enough to enable a bank to have several distributed such machines at each of its branches has been developed. This device, often referred to as a “teller/scanner” machine, is designed to quickly preprocess checks at the intake point of the branch office and to send data to a host computer at the financial institution&#39;s central processing center. This results in faster and more economical processing of the banking documents. This new teller/scanner device has been found best utilized in a network of a plurality of such teller/scanners. However, to avoid wasting excess capacity of associating a controlling processor unit with each of the multiple teller/scanner units, there is seen to be a need in the field of document processor systems for simplifying application host programs used by a plurality of machines while eliminating wasted processing capacity of multiple central processors. 
     SUMMARY OF THE INVENTION 
     Our solution takes advantage of a typical central processor&#39;s excess processing power by arranging for control of a plurality of teller/scanner machines by a single application program resident on a single related controlling processor. 
     In accordance with the invention, an interface for enabling a single application program, resident on a control processor, to communicate with any one of a plurality of machines to be controlled by the application program comprises a virtual machine manager in communication with the application program and with each of the plurality of machines, the virtual machine manager operative to present the plurality of machines as a single virtual machine to the application program. 
     In accordance with another aspect of the invention, a method of providing simplified communications among a host application program and a plurality of physical machines to be controlled by the host comprises the steps of providing a virtual machine manager in communication with the host and with each of the plurality of physical machines and making the plurality of physical machines, via the virtual machine manager, appear as a single unit to the host. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWING 
       The objects and features of the invention will become apparent from a reading of a detailed description of a preferred embodiment, taken in conjunction with the drawing, in which: 
         FIG. 1  is a system block diagram of a prior art check processing arrangement; 
         FIG. 2  is a prior art arrangement showing a plurality of check processing machines, each having a dedicated control processor; 
         FIG. 3  is a functional block diagram of a system of teller/scanner units arranged in accordance with the principles of the invention; and 
         FIG. 4  is a state transition diagram for the command cache state machine of  FIG. 3 . 
     
    
    
     DETAILED DESCRIPTION 
     Referring to  FIGS. 2 and 3 , one may note the difference between two different types of systems utilizing multiple low-speed check processing machines—a traditional system composed of multiple machines  200   a,b,c  ( FIG. 2 ) and a system arranged in accordance with the invention using multiple teller/scanner machines  300 - 1  to  300 -N. Note that the traditional system of  FIG. 2  requires a separate processor/host application pair  202   a,b,c  for each check-processing machine  200   a,b,c  whereas the system of  FIG. 3  using the multiple teller/scanners  300 - 1  to  300 -N requires only a single controlling processor  302  with a resident host application  304 . Furthermore, the host application  304  controlling the multiple teller/scanner machines can be the same host application that is used to control the older single document processor units  202   a,b  or  c  of  FIG. 2 . 
     The object of the invention is to make the multiple teller/scanner machines  300 - 1  through  300 N of  FIG. 3  appear as a single input unit to the central processor host application  304 . This “virtual machine” approach is implemented by the functional units set forth in  FIG. 3 . Typically, these virtual machine elements are resident on the same control processor  302  as the host application  304 . 
     The virtual machine manager  310  provides the crux of the interface between the host application  304  and all connected teller/scanner machines  300 - 1  to  300 N. By communicating with the virtual machine manger  310  instead of the individual teller/scanner machines  300 - 1  to  300 -N, host application  304  can be simplified. Virtual machine manager  310  hides the complexity of the asynchronous state changes of the individual teller/scanner machines  300 . 
     Virtual machine manager  310  builds the application command cache  316  and saves a copy of the most recent, valid set of initialization commands received from the host application. As newly activated teller/scanner machines  300  power-up and connect to virtual machine manager  310  via a computer network, such as a local area network  318 , manager  310  creates a machine proxy  312  to serve as an interface between host application  304  and the newly connected teller/scanner unit  300 . 
     Any initialization commands in the cache  316  are sent to the actual teller/scanner machine  300 - 1  to  300 -N by the machine proxy  312 - 1  to  312 -N, respectively, from the application command cache  316 . As host application  304  sends initialization commands to manager  310 , manager  310  forwards those commands directly to any existing machine proxies  312 , as well as to the command cache  316  for use by future machine proxies  312  as they are created by the virtual machine manager  310 . 
     As each teller/scanner machine  300  comes on-line to local area network  318 , it broadcasts its identification on network  318 , advising the virtual manger  310  that it is “alive”. Virtual machine manager  310  then creates a corresponding machine proxy  312  to represent the actual teller/scanner machine  300  for use by the single host application  304 . Machine proxy  312  assigns an address to its corresponding teller/scanner  300 , assigns a logical identifier to that teller/scanner  300 , obtains all initialization commands from the application command cache  316  and sends these commands to its corresponding teller/scanner machine  300 . 
     When a teller/scanner machine  300  disconnects from local area network  318 , the corresponding machine proxy  312  generates responses to any document-related commands for which that teller/scanner  300  has failed to provide a response. Thus, a host application  304  is not negatively impacted when one of several attached teller/scanner machines disconnects while the host application is processing documents. 
     Command cache  316  stores the most recent initialization commands that the host application  304  has sent to the virtual machine manager  310 . Note that typical operation of a check processing machine  300  involves several initialization commands, followed by one or more document processing commands, and finally by several unintialization commands. The initialization commands are complemented with a corresponding uninitialization command, each creating a system of pairs of initialization/uninitialization command sets. 
     For example, if there is a power-up command, then that command is canceled or complemented by a power-down command. In most check processing systems, the following types of initialization/uninitialization command pairs are provided:
         1.) power-up/power-down;   2.) go ready (configure)/go idle;   3.) start document flow/stop document flow.       

     In general, an initialization command is saved in the application cache  316  while an uninitialization command results in a deletion of its corresponding initialization command from cache  316 . Whether a command is stored or results in a deletion of a queued command is determined by a command cache state machine  314 . Command cache state machine  314  provides a mechanism for allowing the virtual machine manager  310  to determine what to do with initialized/uninitialized commands as they are received from host application  304 . The state machine  314  is defined by the state transition diagram of  FIG. 4 . 
     With reference to  FIG. 4 , command cache state machine  314  handles the above three pairs of complementary application commands in the manner set forth in the transition diagram. In the inactive or “dead” state  400 , receipt of a power-up command from the host application would result in transition  410  to idle state  402 . Any subsequent complementary power-down command received at this point would result in transition  412  back to dead state  400 . 
     If the state machine is in idle state  402  and the application host generates a ready to process order via the command cache, then the state change indicated at  420  will place the command cache state machine in the ready-to-process state  404 . If while in this state, the complementary go idle command is received from the host, then transition  422  will place the state machine back in the idle state  402 . 
     While in ready-to-process state  404 , if the host application generates a start document flow command, then transition  430  will place the state machine in processing document state  406 . If the host tells the document processor or teller/scanner to stop processing documents while in state  406 , then transition  432  returns the machine state to  404 , or ready to process. 
     Returning to  FIG. 3 , whereas host application  304  may not be required to determine the identity of each teller/scanner  300 , or how many physical teller/scanner machines are attached to central processor  302  via the computer network  318 , virtual machine manager  310  provides an optional mechanism for allowing host application  304  to uniquely identify each physical teller/scanner machine  300 - 1  to N if desired. This is accomplished through physical machine map  308 . Structure  308  can be created by host application  304  and stored on the file system of central processor  302  for use by virtual machine manager  310  to map a specific logical identifier (e.g.  1  through N) to one or more teller/scanner machines  300 - 1  to N as those machines come on-line to local area network  318 . Structure  308  comprises a list that maps a physical identifier of a teller/scanner machine, such as its serial number, to a host application-supplied logical identifier ( 1 -N). As each teller/scanner machine  300  comes “alive”, that machine broadcasts its serial number over local area network  318 . If a mapping to a specific logical identifier has been supplied in the physical machine map  308 , then the virtual machine manager  310  assigns that logical identifier to that specific teller/scanner machine  300 . 
     Element  306  of  FIG. 3  comprises a common or universal interface between host application  304  and the virtual machine. Such a universal interface allows communication between the same virtual machine manager and a variety of different host applications, without the necessity of altering the virtual machine manager to accommodate a different host. A preferred form of such a universal interface is a document processor OLE Custom Control, or DPOCX. This type of universal interface is described in U.S. patent application Ser. No. 08/993,454, filed Dec. 18, 1997, assigned to the Assignee of this application, and hereby incorporated by reference. 
     Interface  306  is enhanced to support the functionality that is unique to each teller/scanner  300 , such as:
         1.) filtering red ink from document images;   2.) printing of Hangul characters on the back of each document;   3.) selectively stopping individual documents while still in a teller/scanner document track;   4.) allowing a host application  304  to uniquely identify each attached teller/scanner  300 ; and   5.) providing identification of each teller/scanner machine  300  when multiple teller/scanner machines are attached to a single host application  304  as shown in  FIG. 3 .       

     Each machine proxy  312  and the virtual machine manager  310  communicates with the interface  306  through semaphore-protected shared memory. This approach enables each of the machine proxies  312 - 1  to N to be executing concurrently without interfering with each other&#39;s communications with the host  304 . 
     With the arrangement of  FIG. 3 , the virtual machine centered around virtual machine manager  310  provides a single interface to host application  304  which conceals the plurality of teller/scanner machines  300 - 1  to N from the host  304  by making the teller/scanners appear as a single entity. 
     The invention has been described with reference to an exemplary embodiment for the sake of example only. The scope and spirit of the invention are to be determined from a proper interpretation of the appended claims.