This application relates to and claims priority from Japanese Patent Applications No. 2005-163607, filed on Jun. 3, 2005 and No. 2005-180236, filed on Jun. 21, 2005, the entire disclosure of which is incorporated by reference.
1. Technical Field
The present invention relates to control technology used in distributed printing for printing control device and printer.
2. Description of the Related Art
There are known distributed printing system wherein printing control devices that are connected to a plurality of printers distribute print jobs to the plurality of printers. In this technology it is possible to complete the printing of multiple copies in a short amount of time through allocating the number of copies to be printed to a plurality of printers and performing the printing in parallel.
In this type of distributed printing system, there is a method wherein a print job is divided into a plurality of packets and distributed. In this distribution method, the printing control device distributes print job by repetitively executing, for each packet, the process of distributing the packet to a plurality of distribution destination printers. In this distribution method, for example, when the printing control device receives the print job from client computer through a network and distributes, the printing control device is able to distribute the print job even in cases wherein the capacity of the buffer memory equipped in the printing control device is too small to receive the entire print job from the client computer all at once.
However, when the distribution method described above is used, there is the risk that the distribution destination printer may interfere with the smooth execution of the distributed printing. For example, while a printer may be able to maintain a plurality of simultaneous connections for receiving print jobs, if the printer is capable of processing only one print job at a time, then, typically, that printer would receive print job in turn from the connections established in advance, and will receive the next print job from the next established connection after completing receiving of the print job in advance. When such printers are used as distribution destination printers, the distribution method described above is used and a packet is sent to a connection that is waiting for its turn, the distributed processing necessarily stops until that packet is received.
In particular, when a plurality of printing control devices distribute print job respectively using the distribution method described above to same printers as distribution destinations, the distributed processing may come to a stop all together.
An advantage of some aspects of the invention is to provide a smooth distributed printing process.
A first aspect of the invention provides a printing control device capable of sending print jobs to at least two distribution destination printers respectively. The distribution destination printers respectively have a printing module, a first communication module and a job receiving module. The printing module executes the printing in accordance with a provided print job. The first communication module performs communication using a connection-type protocol, wherein the first communication module is capable of maintaining simultaneously a plurality of the connections for the communication. The job receiving module receives the print job through the connection to provide the received print job to the printing module. The connections from which the job receiving module is able to receive data in parallel is less than the connections that the first communication module is able to maintain simultaneously. The job receiving module receives with priority data that is sent through the connection that was established in advance when the first communication module maintains the connections in excess of a receivable number in parallel. The printing control device pertaining to the first aspect of the invention comprises a second communication module, a status determining module and a job sending module. The second communication module establishes the connections with each of the first communication modules of the at least two distribution destination printers. The status determining module determines whether each of the job receiving modules of the at least two distribution destination printers is in a receiving-capable state in which the job receiving modules is immediately able to receive data sent through the connection established by the second communication module. The job sending module transmits the print job to the distribution destination printer having the job receiving module being determined to be in a receiving-capable state.
According to the printing control device pertaining to the first aspect of the invention, the print job is sent after determining that the job receiving module of the distribution destination printer is in a state capable of immediately receiving the print job, thus making it possible to avoid the printing control device going into a waiting state, making it possible to achieve smooth distributed printing.
In the printing control device pertaining to the first aspect, the job sending module may divide the print job into a plurality of packets and may repetitively execute, for each of the divided packets, packet distribution. The packet distribution is sending one of the packets to the respective at least two distribution destination printers to send the print job to the respective at least two distribution destination printers. In distributed printing wherein packet distribution is repeated to send the print job, there is the possibility that deadlock will occur wherein the distributed printing process will stop entirely (where deadlock will be described in detail below). In this case, the printing control device is possible to prevent the distributed printing system from such a deadlock.
The second aspect of the invention provides a printer. The printer pertaining to the second aspect of the invention comprises a communication module, a job receiving module and a print executing module. The communication module maintains connections to perform communication using a connection-type protocol. The job receiving module receives print jobs through the connections. The number of the print jobs that can be received in parallel is M. The M is a natural number. The print executing module executes printing processes in parallel for the received print jobs. The number of connections that can be maintained simultaneously by the communication module is set to be less than the M.
According to the printer pertaining to the second aspect of the invention, the printer maintains no more connections than M that is the number of print jobs receivable in parallel. Thus, the printer may not make the device that sends the print jobs through the connections put into a waiting state. In particular, when used as a distribution destination printer, the printer is able to insure that the distributed printing process proceeds smoothly.
In the printer pertaining to the second aspect, the printer may be connected to a printing control device capable of sending at least one of the print jobs to at least two distribution destination printers respectively. The printing control device may divide the at least one of the print jobs into a plurality of packets and repetitively executes, for each of the divided packets, packet distribution. The packet distribution is sending one of the packets to the respective at least two distribution destination printers to send the print job to the respective at least two distribution destination printers. The printer used as one of the distribution destination printers. In this case, the printer makes it possible to prevent the distributed printing system from the deadlock that may occur in distributed printing processes in this type of printing control device.
The first aspect of the invention may be configured as a printer that houses the printing control device, rather than the configuration as a printing control device described above. Moreover, the configuration of the first aspect is not limited to this type of device invention form, but rather may also be embodied as a method invention, such as a method of sending print jobs. Furthermore, the second aspect of the present invention may also be embodied as a method invention, such as a printing method, instead of configuration as the printer described above. Furthermore, the present invention can be embodied in a variety of ways, such as in the form of a computer program for structuring the method or device described above. Furthermore the invention may also be realized in aspects such as a computer program for accomplishing the functions of the aforementioned apparatus or method, a recording medium having the computer program recorded thereon and data signals in which such a program is realized in a carrier wave.
The above and other objects, characterizing features, aspects and advantages of the invention will be clear from the description of preferred embodiments presented below along with the attached figures.
FIGS. 3A-C show schematics for explaining the reception of normal print jobs;
FIGS. 5A-C show schematics for explaining the print job data;
FIGS. 12A-B show diagrams illustrating schematically a case wherein deadlock occurs;
Embodiments of the present invention will be described below with reference to the drawings.
Structure of a Distributed Printing System:
A configuration of a distributed printing system according to a first embodiment according to the present invention will be described referencing
This distributed printing system, as shown in
Of these printers, printers PRT1 and PRT4 are each equipped with a custom network board 100. The custom network board 100 includes a distributed printing control function for executing distributed printing through distributing to other printers the print jobs received from the clients CLa and CLb and the custom network board 100 in this embodiment is equivalent to the printing control device in the claim 1. Printers PRT2 and PRT3 are each provided with a standard network board 200.
In
The printer PRT1, as shown in
The custom network board 100 is provided, primarily, with a central processing unit (CPU) 20 and a memory 30. Additionally, the custom network board 100 is also provided with, for example, a communications interface for performing the actual network communications, etc., but explanations thereof will be omitted for convenience.
The CPU 20 reads out programs, such as software to perform the distributed printing described above, from the memory 30, and executes the programs, thereby achieving in software the various functional blocks shown in the figure. Note that these various functional blocks may alternatively be structured in hardware.
The functional blocks achieved by the CPU 20 include a TCP/IP module 10, a distribution control module 50, a print job receiving module 60, an SNMP manager 40, and an SNMP agent 70.
The TCP/IP module 10 interprets the TCP/IP protocol and, primarily, performs communications with the outside via the network. TCP (Transmission Control Protocol) and UDP (User Datagram Protocol) are protocols that perform transport-layer processes in the TCP/IP protocol. TCP is a protocol that achieves high-reliability connection-type communications. On the other hand, UDP is a protocol that achieves high speed connectionless communications. The TCP/IP module 10 not only performs the print job communications using TCP, but also performs communications between the SNMP manager 40 and the SNMP agent 70 using the UDP.
The distribution control module 50 receives a print job designated for distributed printing (hereinafter termed a “distributed print job”) and distributes the print job to the distribution destinations. The distribution control module 50 is provided with a distribution destination select module 52, a receiving status determining module 54, and a print job sending module 56, as sub-function blocks. The distribution destination select module 52 selects at least one distribution destination printer from among the printers connected to the custom network board 100 to be the distribution destination for the print job. The receiving status determining module 54 determines whether or not the distribution destination printer is in a state wherein it is possible to receive the print job immediately. The receiving status determining module 54 includes a command sending module 541 for sending commands used in determining whether or not a printer is in a state capable of receiving a print job immediately, and a response receiving module 542 for receiving the responses to the commands that are sent. The print job sending module 56 sends the print job to a distribution destination printer that has been determined to be able to receive the print job immediately. The processes performed by the distribution control module 50, as described above, will be explained in greater detail.
The print job receiving module 60 receives a normal print job, for which distributed printing has not been specified (hereinafter termed a “normal print job”) and provides the print job to the printer controller 80. The print job receiving module 60 was provided with a response module 61 for receiving a response to a command included in a print job from the printer controller 80 and sending a response to the sender of the print job.
The SNMP manager 40 uses a communications protocol known as SNMP (Simple Network Management control Protocol) to query the SNMP agents 70 that are equipped in each of the printers PRT1 through PRT4 to receive a variety of information. The SNMP manager 40 designates the OID, described above, to specify information to be received in order to execute the query.
The SNMP agent 70 acquires specific information from the aforementioned MIB file in response to the query by the SNMP manager 40, and sends that information to the SNMP manager 40.
On the other hand, memory 30, in addition to storing programs for executing the various functions described above, has an OID storage area 32, a distribution destination designator file storage area 34, and a buffer 36. The OID storage area 32 stores the OID that is designated when the SNMP manager 40 performs a query as described above. The OID is stored in association with the type of information that can be queried, and the SNMP manager 40 is able to acquire the OID by referencing the OID storage area 32. The distribution destination designation file storage area 34 stores the distribution destination designation file. This distribution destination designation file is used when one wishes to limit those printers can be used as the distribution destination in distributed printing among the plurality of printers connected to the LAN, by specifying printers in advance. Consequently, when it is not necessary to make a designation in this way, nothing is stored in the distribution destination designation file storage area 34. The buffer 36 is a storage area for storing temporarily received print job data.
The printer PRT2, as shown in
As can be understood from the explanation above, the custom network boards 100 installed in the printers PRT1 and PRT4 are provided with all of the functions provided in the network boards 200 that are installed in the printers PRT2 and PRT3. In other words, when viewed from the distribution control module 50 of the custom network board 100, the printers PRT1 through PRT4 are completely identical, and all can be designated as distribution destination printers in the distributed printing process described below. The distribution control module 50 can treat the printer PRT1 that houses the distribution control module 50 itself as being no different than any of the other printers.
The client CLa, as shown in
The printer PRT4 has the same structure as the printer PRT1, described above, and the printer PRT3 has the same structure as the printer PRT2, described above. The client CLb has the same structure as the client CLa, described above. Detailed descriptions of these are omitted.
Receiving a Normal Print Job by a Printer
Before describing the distributed printing process, the reception of a normal print job by a printer PRT will be described in reference to FIGS. 3A-C. FIGS. 3A-C show schematics for explaining the reception of normal print jobs.
The print job is sent as communication data formatted according to the TCP/IP protocol. The communication data, as shown in
For example, when a normal print job is sent from the client CLa to the printer PRT2, the header 400 of the communication data has “IP2” as the destination IP address, and “9100” as the destination port number. The “9100” is a port number possessed by the print job receiving module 60 that will receive the normal print job. Moreover, the header 400 has “IPa” as the source IP address and the port number that is possessed by the print job sending module 12 as the source port number.
Further description will be presented sequentially. When the client CL application 11 issues a print instruction, the print job sending module 12 of the client CL sends the print job data through the TCP/IP module 13 according to the print protocol. In this embodiment, a non-procedural protocol is used as the print protocol. The TCP/IP module 13 of the client CL establish a connection with the TCP/IP module 10 of the printer PRT that is the transmission destination. The establishment of the connection is done according to the TCP, which is a connection-type communications protocol, prior to sending the print job data.
Establishment of the connection means forming a virtual communications path for communicating data between the two processes (which, in this embodiment, are the print job sending module 12 and the print job receiving module 60). In the below, this virtual communications path is termed a “connection.” Using the connection makes it possible to perform high reliability bi-directional streaming transfers. In other words, sending the print job though the connection makes it possible to prevent data from becoming out of sequence in the transmission, and possible to prevent the loss of data.
In this way, the TCP/IP module 10 is configured so as to be able to establish and maintain multiple connections simultaneously. In this embodiment a maximum of 8 connections can be established. This is because if it were not possible to establish more than one connection, then when multiple clients would attempt to send print jobs in parallel to the same printer PRT, it would not be possible for the client CL to recognize the printer PRT when attempting to establish a second connection, or beyond, to the printer PRT. If the client CL were unable to recognize the printer PRT there would be the danger of problems such as the client CL determining that the power is not turned onto the printer PRT, determining that the physical connection with the printer PRT was broken, or the like.
On the other hand, the print job receiving module 60 of a printer PRT is structured so as to receive one print job at a time from one connection. The printer controller 80 is unable to process multiple print jobs in parallel, so the print job receiving module 60 will have to provide the print job data, one at a time, to the printing controller 80. As described above, the print job receiving module 60 receives print jobs with the priority on the print jobs that are sent through the connection established first. In the specific example shown in
When the entire print job sent from the client CLa has been received by the print job receiving module 60, the TCP/IP module 10 terminates the connection CN1. After the connection CN1 has been terminated, then, as shown in
In this way, the print job receiving module 60 receives print jobs sequentially in the order in which the connections were established, and by providing, to the printing controller 80 of the printer body PRB2, the print jobs that have been received, the printing is performed sequentially in the order of client access.
As can be understood from the explanation above, in this embodiment, the TCP/IP module 10 that establishes the connection for the print job receiving module 60 to receive the print job is equivalent to the first communication module in the claim 1.
Distributed Printing Processing:
The distributed printing process in the first embodiment will be explained in detail next. When performing distributed printing, the user confirms that in the printer driver at the client (for example, the client CLa (
The divided mode is a distributed printing mode wherein a specified number of print copies is assigned to a distribution destination printer. For example, in the divided mode, if a distributed print job for 100 copies is received then by sending normal print jobs for 25 copies to each of the printers PRT1 to PRT4 to perform the printing will result in printing a total of 100 copies. In the divided mode, the emphasis is on printing the specified number of copies quickly.
The copy mode is a distributed printing mode wherein specified numbers of copies are printed at each of the distribution destination printers. For example, in the copy mode, if a distributed print job for one copy is received, a total of four copies is printed by sending a normal printing job for one copy to each of the printers PRT1 through PRT4. The copy mode emphasizes printing with high reliability on a large number of distributed printers, more than emphasizing the speed of printing.
Here the print job is structured as data having a specific format (hereinafter termed the “print job data”). FIGS. 5A-C show schematics for explaining the print job data.
When it comes to the size of the print job data, while the size increases depending on the amount of printing in each copy, the size of the buffer 36 is limited, so in practice the print job data 500 is divided into groups of data (hereinafter termed “packets”) that are smaller than the capacity of the buffer 36 when they are received from the client. In
The explanation continues, returning to
On the other hand, if there is no distribution destination designation file stored, then the distribution destination select module 52 uses the SNMP manager to query the IP addresses of each of the devices connected to the LAN by broadcasting to the LAN, to acquire the respondent IP addresses.
Following this, the distribution destination select module 52 acquires information pertaining to each of the devices to which the acquired IP addresses are allocated (Step S204). Specifically, the distribution destination select module 52 uses the SNMP manager to query each of the devices using a multicast to acquire the equipment name and status as the query response.
The distribution destination select module 52 searches for printers, from among all of the devices connected to the network, that fulfills specific conditions, based on the acquired equipment names and statuses, and selects as distribution destination printers the printers that are retrieved (Step S206). In the divided mode, these specific conditions are as follows:
The information regarding these conditions can all be acquired through queries through the SNMP manager. The machine type being the same as the local printer PRT1 being a condition for selecting the equipment as a distribution destination printer is to make it possible to print correctly without modifying the print job data for each of the distribution destination printers. The result is that it is possible to insure uniformity in the quality of the printed material at each of the distribution destination printers, such as uniformity in resolution, font, and the like. The color printing and double-sided printing designation will also be identical. The querying of the equipment names to the printer wherein the IP addresses are specified in the distribution destination designation file is for the following reason: After the distribution destination designation file has been generated, the IP addresses listed in the distribution destination designation file may be assigned to a printer of a different machine type than the local printer PRT1, or may be assigned to a non-printer device, due to replacement of equipment after the distribution destination designation file is made, and thus this is to confirm that the machine type is identical to the local printer PRT1.
The second through fifth conditions are to prevent the selection of a printer that will not be available to print immediately, as the distribution destination printer. The on-line status indicates a normal state wherein there is no error such as being out of paper, having a paper jam, or the like.
After this, the distribution destination select module 52 determines whether or not at least one distribution destination printer has been selected (Step S208). If at least one printer has been selected (Step S208: Yes), then the distribution destination select module 52 has completed the distribution destination selecting process. If no distribution destination printers have been selected (Step S208: No), then the distribution destination select module 52 waits a specific amount of time (Step S210), and then repeats the processes in Steps S202 through S208. In this embodiment, some or all of the printers PRT1 through PRT4, as distribution destinations printers are selected as distribution destination printers.
When the distribution destination printers have been selected, the distribution control module 50 establishes connections with each of the selected distribution destination printers in order to send the print job from the distribution control module 50 to the print job receiving module 60 in each of the distribution destination printers (Step S106). Specifically, the distribution control module 50 performs a connection establishment process between the TCP/IP module 10 of the custom network board 100, and the TCP/IP module 10 of the distribution destination printers. The connection is established when a TCP packet (the SYN packet) is sent from the custom network board 100 to the distribution destination printer indicating a first establishment request, a TCP packet (the ACK/SYN packet) that serves as both a receipt acknowledgement to the first establishment request and as a second establishment request from the distribution destination printer to the custom network board 100 is sent, and a TCP packet (the ACK packet) indicating a receipt response to the second establishment request is sent between the two TCP/IP modules 10. As can be understood by the explanation above, in this embodiment, the TCP/IP module 10 with which the distribution control module 50 establishes a connection for sending the print job is equivalent to the second communication module in the claim 1.
The command sending module 541 of the receiving status determining module 54 sends a determining command through each of the connections that has been established to each of the distribution destination printers (Step S108). In this embodiment, a EJLID command is used as the determining command. The EJLID command is written in EJL, which is the job control language described above. The EJLID command requests the print job receiving module 60 of the distribution destination printer to immediately respond with the device ID. The device ID is information for specifying the manufacturer and model of the printer, where the EJLID command is normally used by the device that is the source of the print job in selecting the type of printer driver.
The EJLID command, written in the job control language, is received by the print job receiving module 60 in the same manner as is the print job. Consequently, the receiving of the EJLID command by the print job receiving module 60 and the return of the response by the print job receiving module 60 indicates that the print job receiving module 60 is in a state wherein a print job can be received immediately (hereinafter termed the “immediate receiving-capable state”). In other words, the connection that is used in sending the EJLID command is the connection that was established first, from among the connections currently maintained to the distribution destination printers, and this indicates that print job sender will not be the aforementioned waiting states when an attempt is made to send a print job from this connection. On the other hand, if the print job receiving module 60 does not receive an EJLID command that has been sent, and does not return a response, this indicates that the print job receiving module 60 is not in an immediate receiving-capable state. In other words, a connection that has been established prior to the connection that is used for sending the EJLID command is currently maintained with the destination distribution printer. Thus when an attempt is made to send a print job from a connection that has been used in sending the EJLID command, the print job sender will be in the waiting state described above.
When the determining command is sent, the receiving status determining module 54 begins a time count for counting the time out time (Step S110), and awaits the reception of a response to the determining command that has been sent (hereinafter termed the “command response”) (Step S112). When a command response come from the print job receiving module 60 of the distribution destination printer during this time period, then the response receiving module 542 of the receiving status determining module 54 receives the command response.
The receiving status determining module 54 confirms whether or not the specific timeout time has elapsed (Step S114), and if the time out time has not elapsed (Step S114: No), then the aforementioned command response reception wait is continued. If the timeout time has elapsed (Step 114: Yes), then the response receiving module 542 determines whether or not one or more command responses has been received (Step S116). If the receiving status determining module 54 determines that the response receiving module 542 has not yet received a command response (Step S116: No), then the receiving status determining module 54 returns to Step S110, and again awaits the reception of a command response.
When the receiving status determining module 54 determine that the response receiving module 542 has received at least one command response (Step S116: Yes), then the print job sending module 56 of the distribution control module 50 sends a print job to the print job receiving module 60 of the distribution destination printer from which the command response was sent (Step S118). This is because, as described above, the print job receiving module 60 of the distribution destination printer from which the response was returned can be determined to be in an immediate receiving-capable state. Specifically, the print job sending module 56 can use, as is, the connection from which the command response was sent, to send a print job to the print job receiving module 60 that is in a waiting state at the distribution destination printer on the other end of the connection. If command responses are received from more than one distribution destination printer, then print jobs are sent to all distribution destination printers that sent command responses. On the other hand, the print job is not sent to any distribution destination printer that have not sent command responses before the timeout time has elapsed. This is because those print job receiving modules 60 for distribution destination printers that have not sent command responses immediately can be judged to be other than the immediate receiving-capable state.
Here the print job to be sent to the distribution destination printer is addressed to the print job receiving module 60 (port 9100), and so can be said to be a “normal” print job. If there is more than one possible distribution destination printer to which the normal print job should be sent, then the number of print copies notated in the distributed print job is distributed, as uniformly as possible, to normal print jobs to be sent to the two or more distribution destination printers. Specifically, in
When the sending of the print job has been completed, then the connection with the distribution destination printer to which the print job has been sent is finished. The connection is finished through mutually executing, between the two TCP/IP modules 10 of the custom network board 100 and the distribution destination printer, of the request/response process comprising a TCP packet indicating a finish request (the FIN packet) and a TCP packet indicating the acknowledgement of the receipt of the finish request (the ACK packet).
The command sending module 541 sends a determining command in Step S108, but when there is still a distribution destination printer that cannot yet send a command response, then the distribution control module 50 waits for the command response to be sent (Step S120), and once all of the command responses have been sent back (Step S122: Yes), then the process is completed. The processes in Steps S120 and S122 are processes that are required for the software specifications, which require that the response be received, and are not processes that are essentially necessary in the distributed printing process.
Following this,
When a connection is established (
Next the process that executes the copy mode will be explained referencing
When the distribution destination selecting process is started, the distribution destination select module 52 obtains the IP addresses of the devices that are connected to the network, in the same manner as in the divided mode (Step S202). Next the distribution destination select module 52 obtains information regarding each of the devices to which the obtained IP addresses are allocated (Step S204). Unlike in the divided mode, the information received here in the copy mode is only the machine name.
The distribution destination select module 52 uses the information that has been received to search among the devices connected to the network for printers that fulfill specific conditions, and selects as distribution destination printers those printers that are found (Step S206). The specific conditions in the copy mode are only the following two, unlike the case of the divided mode:
Having fewer conditions for selecting the distribution destination printers than in the divided mode is because the copy mode as described above, places the emphasis on printing to a large number of distribution destination printers.
The distribution destination select module 52 causes one or more distribution destination printers to be selected reliably using the same process as in the divided mode. (See Steps S208 and S210.)
The explanation will continue, returning to
The command sending module 541 of the receiving status determining module 54 sends a determining command to each of the distribution destination printers through the respective connections that have been established, in the same manner as for the divided mode (Step S306). When a determining command has been sent, the receiving status determining module 54 starts a time count (Step S308) and awaits a command response (Step S310) in the same manner as for the divided mode.
The receiving status determining module 54 checks whether or not a specific timeout time has elapsed (Step S312), and if the timeout time has not elapsed (Step S312: No), then the receiving status determining module 54 continues to wait for the command response, as described above. When the timeout time elapses (Step S312: Yes), the response receiving module 542 determines whether or not a command response has been received from all of the distribution destination printers (Step S314). If the receiving status determining module 54 determines that there is a distribution destination printer from which a command response has not yet been received (Step S314: No), then the distribution control module 50 terminates the connections with the distribution destination printers from which the command responses have been received (Step S316). The distribution control module 50, after waiting a specific amount of time, again establishes connections with each of the distribution destination printers for which the connections had been terminated in Step S316 (Step S318). In Step S318, random numbers are used so that the wait time will not always be the same amount of time. The reason for performing Steps S316 and S318 is to use a random number so that the wait time in this step will not always be the same. The reasons for performing Steps S316 and S318 are described below.
When the connections have been reconfirmed, the distribution control module 50 again sends a determining command (Step S320) to each of the distribution destination printers from which a command response has been received in the immediately proceeding command response reception wait interval (Step S310). When the determining commands have been resent, the distribution control module 50 returns to Step S308, and again awaits commands over a specific time period (Steps S308 through S312).
If during the specific time period, the receiving status determining module 54 determines that a command response has been received from each of the selected distribution destination printers (Step S314: Yes), the print job sending module 56 sends print jobs to the print job receiving module 60 in each of the selected distribution destination printers (Step S322). The condition that a command response is received from each of the distribution destination printers even in this step (indicating that each of the distribution destination printers is in the immediate receiving-capable state) is because printing to a large number of distribution destination printers is emphasized in the copy mode, as described above. Just as in the divided mode, the print job sending module 56 uses the connections, as they are, through which the command responses were sent, to thus send the print job to the print job receiving modules 60 of the distribution destination printers that are on the other end of these connections.
Next,
When the connections are established (
After the determining command has been resent, the command responses are received from both the printer PRT2 and the printer PRT3 within the second wait period Wt. In other words, the print job receiving module 60 of the printer PRT2 is in the immediate receiving-capable state at the point in time of the second determining command transmission as well, and the command response is returned immediately from the print job receiving module 60 of the printer PRT2 to the distribution control module 50. On the other hand, the print job receiving module 60 of the printer PRT3 transitioned into the immediate receiving-capable state during the second wait period Wt, and received its first determining command, and returned the command response to the distribution control module 50 from the print job receiving module 60 of the printer PRT3 during the second wait period Wt. The result is that at the end of the second wait period Wt it is determined that both the printer PRT2 and the printer PRT1 are in the immediate receiving-capable state, and the respective print jobs are sent to the respective print job receiving modules 60 of the printer PRT2 and the printer PRT3 from the distribution control module 50.
Next the transmission of the print job from the distribution control module 50 to the print job receiving module 60 of the distribution destination printers in the distribution control process will be explained further referencing
As was described above, referencing
When the distribution control module 50 begins the transmission of the print job (
When the completion of the packet distribution PD of the first packet P1 has been confirmed, the distribution control module 50 receives the second packet from the client CLa, as shown in
According to the custom network board 100 as a printing control device pertaining to this embodiment, when a print job is sent through a connection, the print job is sent after determining that the print job receiving module 60 of the distribution destination printers are in a state capable of receiving the transmitted print job immediately, making it possible to achieve smooth distributed printing. That is to say, when the custom network board 100 sends print jobs to the distribution destination printers, there is no obstruction to the progress of the distributed printing due to the aforementioned waiting state.
Furthermore, the custom network board 100 in this embodiment can prevent the occurrence of deadlock. Here “deadlock” refers to the problem of the distributed printing process coming to a complete stop. For example, it is assumed that a printing system that includes at least two custom network boards 100 and at least two distribution destination printers that can be specified as the distribution destinations for print jobs for the respective at least two custom network boards 100. Conventionally, in this system, deadlock may occur when at least two custom network boards 100 attempt to send print jobs to the at least two distribution destination printers as essentially the same time in a distributed printing process.
Here, for ease of understanding,
For example, the various connections are established when attempting to send print jobs, essentially simultaneously, to the print job receiving modules 60 of the printer PRT2 and the printer PRT3 from the distribution control module 50 of the printer PRT1 and the distribution control module 50 of the printer PRT2. As described above, the TCP/IP modules 10 for each of the printers are able to maintain a plurality of connections simultaneously, and thus succeed in establishing each of the connections. In
As is shown in
On the other hand, as is shown in
In such a state, the distribution control module 50 of the PRT1 attempts to perform the aforementioned packet distribution PD (
Similarly, the distribution control module 50 of the printer PRT4 attempts to send a print job to the print job receiving modules of the printers PRT2 and PRT3 through the connections C42 and C43 that have been established. In this case, the packet P1 that is sent to the print job receiving module 60 of the printer PRT3 is received immediately, while the packet P1 that is sent to the print job receiving module 60 of the printer PRT2 is not received because of the low priority position of the connection CN42. Because of this, the distribution control module 50 of the printer PRT 4 cannot complete the first packet distribution PD, and goes into a waiting state, in the same manner as the distribution control module 50 of the printer PRT1.
The result is that the distributed printing processes of the distribution control module 50 of the printer PRT1 and of the distribution control module 50 of the printer PRT4 both fall into a completely stopped state. The waiting state of the distribution control module 50 of the printer PRT1 is not released until the distributed printing process by the distribution control module 50 of the printer PRT4 is completed, while, on the other hand, the waiting state of the distribution control module 50 of the printer PRT4 is not released until the distributed printing process by the distribution control module 50 of the printer PRT1 has been completed.
The deadlock as in
The custom network board 100 according to this embodiment performs confirmations of the immediate receiving-capable state using the determining command, and so no print job is sent to a distribution destination printer that is in a waiting state. This can prevent reliably the deadlock as described above. For example, even if in the divided mode connections were established with the timing shown in
In the copy mode, the reason for temporarily terminating the connections (
Furthermore, for the determining command, the EJL ID command, which is written in EJL is used, where EJL is a language wherein at least a part of the print job is written. Consequently, if the printer has the ability of interpret the EJL function, then the printer will be able to return a response to the ELJ ID command. The result is that a printer that is able to interpret the existing EJL command can be used as the distribution destination printer as is.
Furthermore, because the connection over which the command response is sent is used as is to send the print job, this is able to determine reliably the print job receiving module 60 that is on the other end of the connection is in an immediate receiving-capable state. For example, if the check were performed using a communications protocol of a connectionless type, such as SNMP, as a higher level above the UDP layer, then the would be possible for a connection to be established to another device in the instant after the confirmation when the connection is to be established, but in this embodiment, there is no such problem.
Furthermore, the print job is divided into a plurality of packets, and is sent using the packet distribution described above (
Furthermore, the distribution control module 50 is capable of designating, as the distribution destination, the local printer that houses the custom network board 100 that contains the distribution control module 50, increasing the range of selections for the distribution destination printers.
Structure of a Distributed Printing System
A configuration of a distributed printing system according to a second embodiment is the same as the configuration in the first embodiment, which was described in reference to
When compared to the printer PRT1 in the first embodiment, the printer PRT1 in the second embodiment differs in that the configuration of the distribution control module 50 and the print job receiving module 60 within the custom network board 100. The distribution control module 50 in the second embodiment has an exclusive use request module 543 instead of the command sending module 541 in the first embodiment, and a notification receiving module 544 instead of the response receiving module 542. The exclusive use request module 543 send commands relating to exclusive use requests that request the exclusive use of the distribution destination printers. The notification receiving module 544 receives notification regarding the commands sent by the exclusive use request module.
Moreover, the print job receiving module 60 in the second embodiment is provided with an exclusive use permitting module 62 instead of the response module 61 in the first embodiment. The exclusive use permitting module 62 is a functional block for allowing the exclusive use of the printer PRT1 to the sending device that attempts to send a print job to the printer PRT1.
The other structures of the printer PRT1 in the second embodiment are the same as those of the printer PRT1 in the first embodiment shown in
When compared to the printer PRT2 in the first embodiment, the printer PRT2 in the second embodiment differs in the configuration of the print job receiving module 60 within the network board 200. That is, the print job receiving module 60 in the second embodiment is provided with the aforementioned exclusive use permitting module 62 instead of the response module 61 in the first embodiment, similar to the case for the print job receiving module 60 in the aforementioned printer PRT1. The other structures in the printer PRT2 in the second embodiment are identical to those in the printer PRT2 in the first embodiment, shown in
Process of the Exclusive use permitting module in the Distribution Destination Printers:
Further explanation is provided below regarding the processes performed in the exclusive use permitting module 62 included in the print job receiving module 60 of the printers PRT that serve as distribution destination printers in this embodiment. First an explanation will be given regarding the exclusive use scheduling process performed by the exclusive use permitting module 62, referencing
When an exclusive use ID request is received (Step S402: Yes), the exclusive use permitting module 62 sends, to the sending device from which the exclusive use ID request was received, a response that provides an exclusive use ID. In the below, the sending of this response shall be termed “issuing an exclusive use ID.” The exclusive use ID is used by the exclusive use permitting module 62 in controlling the sequence in which exclusive use is permitted to the sending devices, and is a fixed ID that is different for each exclusive use ID request.
The exclusive use permitting module 62 records the exclusive use ID that is issued to the sending device (Step S406). At this time, the exclusive use ID is recorded in such a way that the sequence in which the exclusive use IDs are issued can be understood, or the exclusive use ID itself is the serial number with which the exclusive use ID is issued. In the below, being earlier in the sequence in which the exclusive use ID is issued shall be termed as having a higher scheduling priority, and being later in the sequence in which exclusive use IDs are issued shall be termed as having a lower scheduling priority. When the exclusive use permitting module 62 stores the exclusive use ID, processing returns to Step S402, returning to a state wherein the exclusive use permitting module 62 awaits the reception of an exclusive use ID request.
Next the exclusive use permitting process performed by the exclusive use permitting module 62 will be explained in reference to
When the exclusive use request is received (Step S502: Yes), the exclusive use permitting module 62 obtains the exclusive use ID that is included in the exclusive use request that has been received (Step S504). The exclusive use permitting module 62 references the exclusive use ID that has been issued and recorded, and determines whether or not the scheduling priority of the exclusive use ID included in the exclusive use request is the highest scheduling priority (Step S506). If it is determined that the scheduling priority of the exclusive use ID that is included in the exclusive use request is not the highest scheduling priority (S506: No), then the exclusive use permitting module 62 decides not to permit exclusive use of the printer PRT to the sending device from which the exclusive use request has been sent, and instead sends, as a response to the exclusive use request, an exclusive use denial notification (Step S508).
On the other hand, when it is determined that the scheduling priority of the exclusive use ID that is included in the exclusive use request is of the highest scheduling priority (Step 506: Yes), then the exclusive use permitting module 62 decides to permit the exclusive use of the printer PRT to the sending device that sent the exclusive use request, and sends, as a response to the exclusive use request, an exclusive use permission notification (Step S510). The exclusive use permitting module 62 places the printer PRT into a state wherein the printer PRT is used exclusively by the sending device to which the permission notification is sent (Step S512). For example, the TCP/IP module 10 is informed of the IP address of the sending device to which exclusive use is permitted, and an instruction is given to the TCP/IP module 10 to establish a connection with only the device having the aforementioned IP address.
The result is that the print job receiving module 60 will always go into the aforementioned immediate receiving-capable state when the sending device to which exclusive use has been permitted has established a connection for sending the print job to the print job receiving module 60. That is, the sending device to which exclusive use has been permitted will not be in a waiting state after the connection is established, but rather the print job receiving module 60 will be able to receive immediately the print job that is sent. In other words, if the sending device receives permission for exclusive use of the printer PRT from the exclusive use permitting module 62 prior to the establishment of the connection, then it can be determined that the print job receiving module 60 will be in the immediate receiving-capable state when the connection with the print job receiving module 60 of the printer PRT is established thereafter.
When Step S512 or Step S508 is completed, then the exclusive use permitting module 62 returns to Step S502, returning to the state wherein the exclusive use permitting module 62 monitors the reception of an exclusive use request.
The exclusive use release process, performed by the exclusive use permitting module 62, will be explained next, in reference to
When the exclusive use release notification is received, the exclusive use permitting module 62 replies, as a response to the exclusive use release notification, with a release acknowledgement notification acknowledging the release of the exclusive use (Step S604). The exclusive use permitting module 62 releases the printer PRT from the state wherein the printer PRT is used exclusively by the sending device from which the exclusive use release notification has been sent (Step 606). For example, an instruction is issued to the TCP/IP module 10 to not establish any connection with a sending device. The exclusive use permitting module 62 deletes the record of the exclusive use ID contained in the exclusive use request to which exclusive use is permitted, or in other words, the exclusive use ID with the highest scheduling priority (Step S608). The result is that the exclusive use ID that had the second highest scheduling priority is recorded as the exclusive use ID with the highest scheduling priority. When the steps described above have been completed, the exclusive use permitting module 62 returns to Step 602.
In the processing by the exclusive use permitting module 62, described above, the exchange of the various types of commands with the sending device is all performed using SNMP as an upper layer of UDP, which is a connectionless-type communications protocol. In other words, the sending device is provided with an SNMP manager (for example, the SNMP manager 40 in the case wherein a custom network board 100 is the sending device), and the exclusive use ID request, exclusive use request, and exclusive use release notification are sent through the SNMP manager. The exclusive use permitting module 62 responds to these commands through an SNMP agent 70 to send the exclusive use ID, the permission notification, the denial notification, and the release acknowledgement notification. Consequently, the exchange of these commands/responses do not require a connection, and can be executed independently regardless of whether or not there is a connection for sending the print job.
The Distributed Printing Process:
The distributed printing process according to a second embodiment will be explained assuming the use of printers PRT that are equipped with the exclusive use permitting module 62, that performs the processes described above, as the distribution destination printers.
When the exclusive use IDs have been acquired, the exclusive use request module 543 of the receiving status determining module 54 records the exclusive use IDs that have been received, and sends exclusive use requests to each of the distribution destination printers that issued exclusive use IDs (Step S708). The result is that the notification receiving module 544 of the receiving status determining module 54 receives a permission notification or denial notification, described above, from the exclusive use permitting module 62 of each of the distribution destination printers in response to the exclusive use requests (Step S710).
The receiving status determining module 54 is able to determine, for a distribution destination printer that has sent a permission notification, that the print job receiving module 60 will be in an immediate receiving-capable state when a connection is established thereafter with the print job receiving module 60 of the distribution destination printer.
In the receiving status determining module 54, the notification receiving module 544 determines whether or not one or more permission notifications have been received (Step S712). In other words, this is the same as determining whether or not there are one or more distribution destination printers wherein the print job receiving module 60 is in an immediate receiving-capable state. The receiving status determining module 54 returns to Step S708 after a specific amount of wait time has elapsed (Step S714) when the received notifications are all denial notifications (Step S712: No). On the other hand, the distribution control module 50 established a connection (Step S716), for sending the print job, with the distribution destination printers that have sent a permission notification in the case wherein the receiving status determining module 54 has received at least one permission notifications (Step S712: Yes). The print job sending module 56 of the distribution control module 50 sends the print job (Step S718) to the distribution destination printer that have sent the permission notifications, through the connections that have been established. The sending of the print jobs is performed through repeating the packet distribution PD in the same manner as in the first embodiment.
When the print job sending is completed, the exclusive use request module 543 sends the release notification, described above, to the distribution destination printers that had send the exclusive use permission notifications (Step S720). When the notification receiving module 544 receives the aforementioned release acknowledgement notification, as a response to the release notification that has been sent (Step S722), the processing in the divided mode is completed.
Next the communications sequence between the distribution destination printer and the distribution control module 50 of the custom network board 100 in the divided mode will be explained in reference to
First the exclusive use ID request is sent from the distribution control module 50 to the exclusive use permitting module 62 in each of the printers PRT2 and PRT3. The transmission of the exclusive use ID request is received directly by the exclusive use permitting module 62 without having a waiting state because of the connectionless-type communications that are performed using SNMP, as described above. After the transmission of the exclusive use ID request, the exclusive use ID is immediately sent back, as a response, from the exclusive use permitting module 62 in each of the printers PRT2 and PRT3 to the distribution control module 50.
After the exclusive use ID has been returned, the distribution control module 50 sends an exclusive use request to the exclusive use permitting module 62 in each of the printers PRT2 and PRT3. The transmission of the exclusive use request is received immediately by the exclusive use permitting modules 62, without a waiting state, because of the connectionless-type communications that are performed using SNMP in the same manner as for the exclusive use ID request. After the transmission of the exclusive use request, the permission notification or the denial notification is returned immediately to the distribution control module 50 from the exclusive use permitting module 62 in each of the printers PRT2 and PRT3 as a response.
In the example illustrated in
When the transmission of the print job has been completed, the connection is terminated and an exclusive use release notification is sent to the exclusive use permitting module 62 of the printer PRT3 from the distribution control module 50. After the transmission of the exclusive use release notification, the release acknowledgement notification is sent to the distribution control module 50 from the exclusive use permitting module 62 of the printer PRT3, as an immediate response, to complete the processing.
Next the process that is executed in the copy mode will be explained in reference to
The receiving status determining module 54 determines whether or not all of the notifications from the distribution destination printers are permission notifications (Step S810). If even one of the notifications received is a denial notification (Step S810: No), then the receiving status determining module 54 sends an exclusive use release notification to the distribution destination printers for which permission notification has been received, to release, for the time being, the exclusive use of the distribution destination printers (Step S812). The result is that the notification receiving module 544 of the receiving status determining module 54 receives release acknowledgement notifications from the distribution destination printers as a response to the release notification (Step S814). Here the temporary releasing of the exclusive use of the distribution destination printers in Step S812 is for the same reason as temporarily terminating the connections with the distribution destination printers in Step S316 in the first embodiment.
Following this, the receiving status determining module 54 waits for a specific amount of time (Step S816), after which the exclusive use IDs are acquired again from the distribution destination printers for which exclusive use had been temporarily released (Step S818). Here the wait time in Step S816 uses a random number, in the same manner as in Step S318 in the first embodiment, so that the time will not always be the same. Here the wait time being determined by a random number in Step S816 is for the same reason as the wait time in Step S318 in the first embodiment being determined by a random number. After the wait time has elapsed, processing returns to Step S806, and the process described above is repeated.
When all of the notifications that have been received are permission notifications (Step S810: Yes) it is determined that the print job receiving modules 60 in each of the selected distribution destination printers are in the immediate receiving-capable state. In this state, the distribution control module 50 establishes connections with all of the distribution destination printers for sending the print job (Step S820), and sends the print job to each of the distribution destination printers through the established connection (Step S322). The transmission of the print job is performed through repeating the packet distribution PD in the same way as in the first embodiment (
When the transmission of the print job has been completed, the exclusive use request module 543 sends the exclusive use release notification, described above, to all of the distribution destination printers (Step S824). The release acknowledgement notifications, sent from the distribution destination printers, are received as the response to the exclusive use release notifications (Step S826), thus completing the processing in copy mode.
Next the communications sequence between the distribution destination printers and the distribution control module 50 of the custom network board 100 in the copy mode will be explained in reference to
First, an exclusive use ID request is sent to the exclusive use permitting modules 62 of the printers PRT2 and PRT3 from the distribution control module 50. After the exclusive use ID request has been sent, the exclusive use ID is returned immediately in response to the distribution control module 50 from the exclusive use permitting module 62 in each of the printers PRT2 and PRT3. After the exclusive use IDs have been returned, exclusive use requests are sent from the distribution control module 50 to the exclusive use permitting module 62 in each of the printers PRT2 and PRT3. After the exclusive use request has been sent, then, as the immediate response, the permission notification or denial notification is sent from the exclusive use permitting module 62 in each of the printers PRT2 and PRT3 to the distribution control module 50.
In the example shown in
After this, after a specific wait time Wr has expired, an exclusive use ID request is sent to the exclusive use permitting module 62 of the printer PRT2 from the distribution control module 50. After the transmission of the exclusive use ID request, an exclusive use ID is returned, as an immediate response, to the distribution control module 50 from the exclusive use permitting module 62 of the printer PRT2, and thus the distribution control module 50 acquires an exclusive use ID again. A second round of exclusive use requests is sent to the exclusive use permitting modules 62 of each of the printers PRT2 and PRT3 from the distribution control module 50. In the second round of exclusive use requests, the exclusive use request sent to the printer PRT2 includes the exclusive use ID that was acquired again, where the exclusive use request sent to the printer PRT3 includes the same exclusive use ID as in the first round of exclusive use requests. Again, a permission notification or a denial notification is sent from the respective exclusive use permitting modules 62 of the printers PRT2 and PRT3, as responses to the distribution control module 50. In the example shown in
Consequently, the print job receiving modules 60 of the printer PRT2 and the printer PRT3 are both determined to be in the immediate receiving-capable state. The result is that connections are established between the distribution control module 50 and the printer PRT2 and the printer PRT3, and the print job is sent through the connections that have been established from the distribution control module 50 to the respective print job receiving modules 60 of the printer PRT2 and printer PRT3.
When the transmission of the print job has been completed, each connection is terminated, and the exclusive use release notification is sent to the respective exclusive use permitting modules 62 in the printers PRT2 and PRT3 from the distribution control module 50. After the exclusive use release notification has been sent, the release acknowledgement notification is returned as an immediate response to the distribution control module 50 from the respective exclusive use control units 62 of the printers PRT2 and PRT3.
According to the custom network board 100 pertaining to this embodiment, the print job is sent to the distribution destination printers after exclusively occupying the distribution destination printers after receiving the exclusive use permission notification, so when a print job is sent, the waiting state described above does not occur, and does not present an obstacle to the progress of the distributed printing.
Furthermore, according to the custom network board 100 pertaining to this embodiment, in the same way as in the first embodiment, makes it possible to prevent the occurrence of the deadlock described above. In the same manner as in the first embodiment, this custom network board makes it possible to achieve smooth distributed printing processes in both the divided mode and the copy mode.
In this embodiment it is necessary to provide and exclusive use permitting module 62 in order to perform processes (
In the aforementioned first embodiment, the EJLID command is used as the determining command, but other commands may be used instead. The determining command may be: 1) a command that is received in the same manner as the case wherein the print job is received by the print job receiving module 60; 2) a command that is not received when a print job would not be received; and 3) a command that returns some sort of response when received. For example, if the command is sent through the connection that is used when sending the print job, then the conditions of 1 and 2 are fulfilled. For example, if the command is written in the language for writing at least portion of the print job data, then when sent through the connection that is used for sending the print job, preferably the command is interpreted similarly to the print job. Moreover, the command response is preferably returned immediately when the command is received and processed. Specifically, as the determining command, the EJL INQUIRE NAME or the EJL VALUE PAGESIZE command, which are written in the EJL language, just like the EJL ID command, maybe used. The EJL INQUIRE NAME command is the command for querying the printer model name, and a response including the printer model name is returned immediately upon receipt. The EJL VALUE PAGESIZE command is a command querying the size of the page that is currently selected in the printer and, immediately upon receipt, returns a response that includes the size of the page.
In the first and second embodiments, the printer controller 80 is unable to process a plurality of print jobs in parallel. Instead, the printer controller 80 may be a type capable of processing two or more print jobs in parallel. For example, the printer controller 80 may be structured so as to be able to process to print jobs in parallel, where the printing related to each print job is executed with alternating pages on the printer engine 90. In such a case, the print job receiving module 60 may be structured so as to be able to receive to print jobs in parallel through two connections. Moreover, when three or more connections are maintained, the print job receiving module 60 may receive print jobs sent through the first and second established connections, and may put into a waiting state a sending device that attempts to send a print job through the third or later established connection. In other words, when the number of print jobs that can be received in parallel by the print job receiving module 60 is less than the number of connections that can be maintained simultaneously by the TCP/IP module 10, there may be cases wherein sending devices are in a waiting state, and thus it is effective to provide a system to determine whether or not the print job receiving module 60 is in an immediate receiving-capable state, such as in first and second embodiments.
The divided mode and the copy mode, explained in the first and second embodiments, described above, are merely examples of forms of distributed printing, and the distributed printing process may be of another form instead. For example, the selection conditions for the distribution destination printers may be changed as appropriate. Specifically, when selecting the distribution destination printers in the divided mode in the first embodiment (Step S206), the condition of not currently printing may be removed from the selection conditions. Doing so makes it possible to execute the printing using the distribution destination printer that completes printing first because of responses to the determining command are sent sequentially from the distribution destination printers that have completed printing when all of the distribution destination printers that are selected are busy printing. In other words, the use of the determining command makes it possible to schedule printers that are busy printing.
In the second embodiment, described above, the method for controlling the exclusive use of a printer PRT through an exclusive use permitting module 62, provided in the printer PRT, maybe in a variety of forms. For example, the exclusive use request module 543 may send its own IP address instead of an exclusive use ID request, and, for the exclusive use request, the local IP address may be provided instead of the exclusive use ID. In such a case, the exclusive use printing module 62 may record the IP address that is sent, and the decision of a permission notification or a denial notification for the exclusive use request may be made based on the IP address included in the exclusive use request.
Structure of the Distributed Printing System
A configuration of a distributed printing system according to a third embodiment will be described in reference to
The distributed printing system in the third embodiment, as shown in
Of the printers in this embodiment, custom network boards 1100 are equipped in both of the printers PRTa1 and PRTa4. These custom network boards 1100 are provided with distributed printing control functions for executing distributed printing, the same as the custom network board 100 in the first embodiment. The printers PRTa2 and PRTa3 are each provided with standard network boards 1200.
The arrows shown by the solid lines in
The printer PRTa1, as shown in
The CPU 1060 reads out a program, such as software for controlling the printer body PRBa, from the memory 1070, and executes a program to achieve a variety of control functions in software. Note that each function may be structured in hardware instead. The functions achieved by the CPU 1060 include a job interpreter 1090. The job interpreter 1090 includes a plurality of sub-interpreter modules as sub-function blocks. In this embodiment, three sub-interpreter modules are provided, termed, respectively, the first interpreter module 1091, the second interpreter module 1092, and the third interpreter module 1093. (See
The custom network board 1100 includes a CPU 1020 and a memory 1030. Note that along with these, a communications interface for performing network communications is actually provided as well, but, for convenience, the explanation thereof is omitted.
The CPU 1020 reads out a program, such as software for executing distributed printing or data communications, from the memory 1030, and executes the program to achieve, in software, the various functions that are shown. Note that the various functions may instead be structured in hardware.
The functional blocks achieved by the CPU 1020 include a TCP/IP module 1010, a distribution control module 1040, and a print job receiving module 1050. The TCP/IP module 1010 is the same as the TCP/IP module 10 in the first example embodiment, and thus the explanation thereof is omitted.
The distribution control module 1040 receives a distributed print job, wherein distributed printing is specified, and distributes the print job to the distribution destinations. The processes performed by the distribution control module 1040 are explained further below.
A print job receiving module 1050 includes a plurality of sub-receiving modules as sub-functional blocks. In the present example embodiment, three sub-receiving modules are provided, termed, respectively, the first receiving module 1051, the second receiving module 1052, and the third receiving module 1053. (See
The memory 1030 not only stores a program for achieving the functions described above, but also functions as a receiving buffer for storing, temporarily, print jobs that have been received by the print job receiving module 1050.
The printer PRTa2, as shown in
As can be understood from the explanation above, the custom network board 1100 equipped in the printer PRTa1 and the printer PRTa4, is provided with all of the functions provided in the network board 1200 equipped in the printer PRTa2 and the printer PRTa3. So when viewed from the distribution control module 1040 of the custom network board 1100, the printers PRTa1 through PRTa4 are completely identical, and all can be designated as distribution destination printers in the distributed printing process described below. The distribution control module 1040 can treat the printer PRTa1 wherein the distribution control module 1040 itself is housed no differently from any of the other printers.
The printer PRTa4 has the same configuration as the printer PRTa1, described above, and the printer PRTa3 as the same structure as the printer PRTa2, described above. Detailed explanations thereof will be omitted.
Note that the TCP/IP module 1010 in third embodiment, as can be understood from the explanation above is equivalent to the communication module in the claim 19, the printer body PRBa is equivalent to the print executing module in the claim 19, and the printer engine 1080 is equivalent to the printing module in the claim 21.
The Distributed Printing Process
The distributed printing process in a third embodiment will be explained in detail next in reference to
The distributed printing process according to the third embodiment is a process that is performed by a distribution control module 1040 that is equipped with a CPU 1020 of a custom network board 1100. The distribution control module 1040 performs printing through allocating, to distribution destination printers, a specific number of printed copies, as was the case for the first embodiment.
Print job data is sent as communication data in a format following the TCP/IP protocol, in the same manner as in the first example embodiment. The data structure of the print job data is the same as the data structure explained in reference to
When performing the distributed printing, the user, in the printer driver of the client, sets a distribution destination port number to change from the normal “9100” to the special “59100” or “59101,” in the same way as in the first example embodiment. That which waits at the port number 9100 is the print job receiving module 1050, described above. On the other hand, that which waits at the port number 59100 or 59101 is the distribution control module 1040, described above.
The distributed printing process in the third embodiment will be explained in reference to
When communication data includes a print job (a distributed print job), for which the destination port number is designated as 59100 or 59101, arrives at printer PRTa1 from the client CL (Step S1102: Yes), the TCP/IP module 1010 transfers the print job to the distribution control module 104Q. The distribution control module 1040 stores the beginning part of the received print job (packet P1) temporarily in the memory 1030 (Step S1104).
The size of the print job data 500 will have a size that is dependent on the amount of printing in one copy. But the capacity of the memory area in the memory 1030 used to store the print job data 500 is limited. Consequently, in the same way as in the first embodiment, the print job data 500 is divided into a plurality of packet and then received (
The explanation will continue, referring to
When at least one distribution destination printers are selected (Step S1112: Yes), the distribution control module 1040 establishes connections with the selected distribution destination printers for sending print jobs from the distribution control module 1040 to the print job receiving modules 1050 in each of the distribution destination printers (Step S1116). Specifically, the distribution control module 1040 performs a process that establishes connections between the TCP/IP module 1010 of the custom network board 1100 and the TCP/IP modules 1010 of the distribution destination printers, in the, same manner as in the first embodiment.
The distribution control module 1040 sends the print jobs to each of the distribution destination printers through each of the connections that have been established (Step S1118). The number of copies allocated to each of the distribution destination printers is written in the job control language part 501 of the print jobs that are sent. Note that the print jobs that are sent are sent with “9100” as the destination port number. The sending of the print jobs in this step is performed through repeating the packet distribution PD (
Processing in the Distribution Destination Printers
The processing in the printer PRTa as a distribution destination printer will be described next in reference to
The connection establishing process, performed by the TCP/IP module 1010 of the printer PRTa, will be explained first. This connection establishing process is always performed when the power is turned ON on the printer PRTa. The TCP/IP module 1010 determines whether or not the number of connections that are currently maintained is less than three (Step S1202). If it is determined that there are already three connections (Step S1202: No), the TCP/IP module 1010 waits until the number of connections that are maintained is less than three. In other words, the TCP/IP module 1010 does not establish a new connection, so that the number of connections maintained simultaneously will not be greater than 3. The maximum number of connections that are maintained (which, in this embodiment, is “3”) is set to be the same as the number of print jobs that can be received in processed in parallel by the printer PRTa (which, in the present example embodiment, is “3”)
On the other hand, if the TCP/IP module 1010 determines that the number of connections that are currently established is less than 3 (Step S1202: Yes), then the TCP/IP module 1010 monitors the connection establishment request (Step S1204). Because a device that attempts to send a print job (the sending device) must establish a connection prior to sending the print job, the sending device must first send a connection establishment request (a SYN packet). The aforementioned custom network board 1100 (the distribution control module 1040), or the client CL is the sending device. When the TCP/IP module 1010 receives a connection establishment request (Step S1204: Yes), a connection is established for receiving the print job from the device that sent the connection establishment request (Step S1206). The TCP/IP module 1010 then returns to Step S1202.
The printing processing that is performed when the connection is established through the connection establishing process, described above, will be explained in reference to
Following this, the first interpreter module 1091 interprets the print job that has been received, to thus produce image data (Step S1306). The image data that is produced is stored in the memory 1070. Next, a test is performed to ascertain whether or not one page of image data has been generated (Step S1308). Whether or not one page of data has been generated is determined based on whether or not the print job has been interpreted until the point of requiring a page break. When one page of image data has been generated (Step S1308: Yes), the first interpreter module 1091 issues a print request for the one page of generated image data (Step S1310). When a print request has been issued for one page of image data, or when one page of image data has not been generated (Step S1308: No), a test is performed to ascertain whether or not there is a print job that has been received but not been interpreted (Step S1312). If there is a print job that has not been interpreted (Step S1312: Yes), processing returns to Step S1306 in order to interpret the print job that has not yet been interpreted.
On the other hand, if there is no print job that has not yet been interpreted (Step S1312: No), then a test is performed to ascertain whether or not there is a termination request for the connection from the sending device (Step S1314). The sending device sends a connection termination request when the entirety of the print job has been sent. Consequently, when there is no connection termination request from the sending device (Step S1314: No), more of the print job is sent from the sending device, and thus processing returns to Step S1304, and the steps above are repeated (Step S1304 through Step S1312).
On the other hand, when there is a connection termination request from the sending device (Step S1314: Yes), then the print job has been received in its entirety, so the connection is terminated (Step S1316). Following this, a test is performed to ascertain whether or not there is image data for which a print request has not been issued (Step S1318). If there is no image data for which a print request has not yet been issued (Step S1318: No), then this process is terminated. On the other hand, if there is image data for which no print request has been issued (Step S 1318: Yes), then the first interpreter module 1091 issues a print request for one page worth of data for the image data for which the print request had not been issued (Step S1320), and the process is then terminated. Here, in Step S1318, the test to ascertain whether or not there is image data for which a print request has not yet been issued can be for the case wherein there is a page break request at the end of the print job, or the case wherein there is no page break request. If there is a page break request at the end of the print job, then, after the connection has been terminated, there is no image data for which the print request has not yet been issued (Step S1318: No), and the process is terminated as is. On the other hand, if there is no page break request at the end of the print job, then there will be image data, for which no print request has been issued, remaining in the memory 1070 after the connection has been terminated (Step S1318: Yes), which necessitates the process described above in Step S1320.
As described above, print requests for one page of image data are sent sequentially as the print job is received. Because there is a limit to the memory 1070 that stores the image data, this process is paused temporarily when there is no remaining space in the memory 1070. This process is restarted after the print data that has already been printed is erased when printing has been performed, in accordance with a print request for one page of image data by the process in
In parallel with the process shown in
The paper that has been printed (a printed page) is sent to a sorter 1085, where the sorter 1085 stores the printed page in a particular copy receiving tray from among a plurality of copy receiving trays (Step S1412). The particular copy receiving tray is determined for the particular print job, where the printed pages for a single print job are stored in a single copy receiving tray. When the printing for the one page of image data has been completed, then the printer engine 1080 is released from exclusive use by the present process (Step S1414). In other words, when there is another printing process awaiting its turn to print, the exclusive use of the printer engine 1080 is transferred to the other printing process.
Following this, a decision is made as to whether or not the page that has been printed is the last page (Step S1416), and if it is determined that the page that has been printed is not the last page (Step S1416: No), then processing returns to Step S1402, and the reception of the print request for the next page is awaited. On the other hand, if it is determined that the page that has been printed is the last page (Step S1416: Yes), then the present process is complete.
The printer PRTa is able to process up to three of the printer processes, described above, in parallel. In the explanation above, the reception of the print job (Step S1302) and the print job interpreting process (Step S1304) are performed, respectively, by a first receiving module 1051 and a first interpreter module 1091. However, when a plurality of printing processes are processed in parallel, these processes are each processed independently of each other by the first receiving module 1051 and the first interpreter module 1091, the second receiving module 1052 and the second interpreter module 1092, or the third receiving module 1053 and the third interpreter module 1093, to perform the processing without any interactions between the processes.
However, because the printer PRTa has only a single printer engine 1080, in the plurality of printing processes that are processed in parallel, it is necessary for the printer engine 1080 to be used exclusively. In this embodiment, the exclusive use of the printer engine 1080 is released after executing the printing of a single page in each printing process, as can be understood from the process shown in
In the printer PRTa in this embodiment, explained above, the number of connections maintained simultaneously for receiving print jobs is limited to no more than the number of print jobs that can be received in parallel (that is, “3” in this embodiment). The result is that if a connection is established between the sending device and the printer PRTa, the print job that is sent through the connection is certain to be received by the printer PRTa, and the sending device will not end up in the so-called waiting state.
Consequently, if the printer PRTa in this embodiment is used as the distribution destination printer in the distributed printing process, then the occurrence of deadlock (as shown in
Performing the distributed printing process with timing wherein deadlock, as described above, can occur, but using the printer PRTa according to the present of embodiment as the distribution destination printer, prevents the distribution control module 1040 that attempts to send the print job from going into the waiting state, thus preventing the occurrence of deadlock, as described above. For example, even if connections are established with the timing shown in
Furthermore, the job interpreter 1090 of the printer PRTa in this embodiment is provided with a plurality of sub-interpreter modules (the first interpreter module 1091 through the third interpreter module 1093), enabling print jobs to be interpreted in parallel. The result is the ability to receive and quickly interpret a plurality of print jobs in parallel, expediting the printing process.
Furthermore, because for each print job the printing of one page at a time is done repetitively and a plurality of print jobs is processed, it is not necessary for the printer PRTa to receive the entirety of a print job all at once. The result is that it is possible to reduce the capacity of the memory 1030 and the memory 1070 in the printer PRTa.
Furthermore, even when a plurality of print jobs (a maximum of 3) is processed in parallel, the printed pages are separated and stored by print jobs by the sorter 1085 that is provided with three copy receiving tray. The result is the elimination of the problem of co-mingling of the printed pages from the plurality of print jobs.
The number of print jobs M that can be received in parallel by the printer PRTa is not limited to the 3 that was used to illustrate third embodiment described above. In the third embodiment, described above, the number of storage units (copy receiving trays) in the sorter 1085 is set to this same number 3; however, if a sorter that is provided with a greater number of storage units is used, then the value of M may be increased according to the number of storage units. Moreover, the number M of print jobs that can be received by the printer PRTa need not always been a constant value for a printer PRTa, but rather may be varied dynamically depending on the status of the printer PRTa. For example, the value of M may be set according to the number of those copy receiving trays in the sorter 1085 that are in a state capable of receiving printed pages. Specifically, sensors may be provided on each of the copy receiving trays of the sorter 1085 to sense whether or not the copy receiving tray contains printed pages, and the value of M can be set to the number of copy receiving trays not currently containing printed pages. In any case, the number of connections N that can be maintained simultaneously, relative to the value of M set at this time, is limited to a whole number no more than M. Doing this makes it possible to produce the operations and effects described above.
In the examples of embodiment described above, a single printer engine 1080 was provided for each printer PRTa; however, a plurality of printer engines 1080 may be provided for each printer PRTa. For example, when there are three printer engines 1080 in a single printer PRTa, one printer engine 1080 may be assigned to each of the three sub-interpreter modules (the first interpreter module 1091 through the third interpreter module 1093), making it possible to execute the printing processes even more quickly.
In third embodiment described above, when a plurality of print jobs is processed in parallel, each print job repetitively prints one page at a time; however, the unit for repetition is not limited to one page at a time. For example, two pages or three pages may be repeated at a time. This makes it possible to modify the amount of image data that is stored at one time depending on, for example, the capacity of the memory 1070.
The printer engine 1080 in third embodiment described above can use a variety of different types of printer engines. For example, the printer engine is not limited to being of a laser printer type, but rather may use printer engines of all different types including, for example, the inkjet type, the dye-sublimation type, the dot impact type, the thermal transfer type, and so forth.
While the printing control device, the printer and method pertaining to the invention have been shown and described on the basis of the embodiments and variations, the embodiments of the invention described herein are merely intended to facilitate understanding of the invention, and implies no limitation thereof. Various modifications and improvements of the invention are possible without departing from the spirit and scope thereof as recited in the appended claims, and these will naturally be included as equivalents in the invention.
Number | Date | Country | Kind |
---|---|---|---|
2005-163607 | Jun 2005 | JP | national |
2005-180236 | Jun 2005 | JP | national |