Image forming apparatus and computer program for image forming apparatus

By establishing a server-push type connection, the image forming apparatus can efficiently stop print jobs directly from the server, addressing the inefficiencies in existing systems and enhancing job control responsiveness.

JP7855937B2Active Publication Date: 2026-05-11BROTHER KOGYO KK
View PDF 5 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
BROTHER KOGYO KK
Filing Date
2022-06-22
Publication Date
2026-05-11

AI Technical Summary

Technical Problem

Existing image forming apparatuses do not consider stopping print jobs quickly when receiving a command from a cloud print server, leading to inefficiencies in job execution control.

Method used

The image forming apparatus establishes a server-push type connection with the server upon receiving a job execution response, allowing it to receive an image forming stop command directly from the server without additional inquiry requests, thereby enabling quick job termination.

Benefits of technology

This configuration allows the image forming apparatus to stop printing more quickly by utilizing the established connection for direct command reception, reducing processing and communication loads.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007855937000001
    Figure 0007855937000001
  • Figure 0007855937000002
    Figure 0007855937000002
  • Figure 0007855937000003
    Figure 0007855937000003
Patent Text Reader

Abstract

To provide a technique which enables an image formation apparatus to quickly stop image formation.SOLUTION: An image formation apparatus repeatedly transmits an inquiry request to a server and starts image formation by controlling an image formation engine when receiving a job execution response from the server. The image formation apparatus establishes server-push type connection with the server when receiving the job execution response from the server. The server transmits an image formation stop command to the image formation apparatus by using connection even if the inquiry request is not received from the image formation apparatus when receiving a job stop instruction from a terminal device. The image formation apparatus stops image formation when receiving a job stop response from the server.SELECTED DRAWING: Figure 5
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This specification discloses a technology related to an image forming apparatus that executes image formation in response to receiving a job execution response from a server.

Background Art

[0002] Patent Document 1 discloses a system including an image forming apparatus, a cloud print server, and a client terminal. The image forming apparatus repeatedly transmits an event confirmation request to the cloud print server. When the cloud print server receives a print job transmission command from the client terminal, it transmits an event confirmation response indicating the existence of a print job to the image forming apparatus in response to the event confirmation request. Thereby, the image forming apparatus executes the print job.

Prior Art Documents

Patent Documents

[0003]

Patent Document 1

Summary of the Invention

Problems to be Solved by the Invention

[0004] In the above technology, no consideration is given to the cloud print server receiving a command for stopping the execution of a print job from the client terminal. This specification provides a technology that enables an image forming apparatus to quickly stop image formation.

[0005] The image forming apparatus disclosed herein may include an image forming engine, a transmission unit that repeatedly transmits inquiry requests to a server, wherein the server, upon receiving a job execution instruction from a terminal device, transmits a job execution response to the image forming apparatus indicating that a job should be executed in response to the inquiry requests received from the image forming apparatus; an image forming control unit that controls the image forming engine to start image forming when the job execution response is received from the server; and an establishment unit that establishes a server-push type connection with the server when the job execution response is received from the server, wherein the server, upon receiving a job stop instruction from the terminal device, transmits an image forming stop command to the image forming apparatus using the connection, even if it has not received the inquiry requests from the image forming apparatus; and image forming may be stopped when the image forming stop command is received from the server.

[0006] According to the above configuration, the image forming apparatus establishes a server-push type connection with the server when it receives a job execution response from the server. Since this connection is established, when the server receives a job stop instruction from a terminal device, it can use this connection to send an image forming stop command to the image forming apparatus without receiving an inquiry request from the image forming apparatus. Therefore, the image forming apparatus can receive the image forming stop command from the server more quickly than in a configuration where the above connection is not established in response to receiving a job execution response from the server. For this reason, the image forming apparatus can stop image forming quickly.

[0007] The computer program for realizing the above-described image forming apparatus, the computer-readable recording medium for storing the computer program, and the method executed by the above-described image forming apparatus are also novel and useful. Furthermore, a system comprising the above-described image forming apparatus and other devices (e.g., a server, terminal device, etc.) is also novel and useful. [Brief explanation of the drawing]

[0008] [Figure 1] This shows the configuration of the communication system. [Figure 2] The sequence diagram of the registration process is shown. [Figure 3] The flowchart for the print execution process is shown below. [Figure 4] A flowchart for proxy environment processing is shown. [Figure 5] A flowchart for processing in a non-proxy environment is shown. [Figure 6] The sequence diagram for Case A1 is shown. [Figure 7] The sequence diagram for Case A2 is shown. [Figure 8] The sequence diagram for Case A3 is shown. [Figure 9] The sequence diagram for Case A4 is shown. [Figure 10] The sequence diagram for Case B is shown. [Figure 11] The sequence diagram for the second embodiment is shown. [Modes for carrying out the invention]

[0009] (First embodiment) (Configuration of communication system 2; Figure 1) As shown in Figure 1, the communication system 2 comprises a printer 10, a mobile terminal 50, multiple access points (hereinafter referred to as "AP (Access Point)") 60, 70, and a print mediation server 100. The printer 10 can selectively belong to a LAN (Local Area Network) 62 where AP 60 is operating as the master station, or to a LAN 72 where AP 70 is operating as the master station. The print mediation server 100 is connected to the Internet 6. When the printer 10 belongs to LAN 62 or LAN 72, it can communicate with the print mediation server 100 via AP 60 or AP 70. In a modified example, LAN 62 and LAN 72 may be wired LANs instead of wireless LANs. When the mobile terminal 50 belongs to LAN 62 or LAN 72, it can communicate with the printer 10 and the print mediation server 100 via AP 60 or 70. In a modified example, the mobile terminal 50 may communicate with the print intermediary server 100 using cellular communication such as 3G, 4G, or 5G.

[0010] (Printer 10 configuration) The printer 10 is a peripheral device (for example, a peripheral device of a mobile terminal 50) capable of performing printing functions. The printer 10 comprises an operation unit 12, a display unit 14, a communication interface 16, a print engine 18, and a control unit 30. Each of the units 12 to 30 is connected to a bus line (symbol omitted).

[0011] The control unit 12 is equipped with multiple buttons. The display unit 14 is a display for showing various information. The display unit 14 also functions as a so-called touch panel (i.e., a control unit operated by the user). The communication interface 16 is an interface for connecting to LAN 62 or LAN 72. The printing engine 18 is a printing mechanism such as an inkjet or laser printer.

[0012] The control unit 30 includes a CPU 32 and a memory 34. The CPU 32 executes various processes according to a program 36 stored in the memory 34. The memory 34 is composed of a volatile memory, a non-volatile memory, etc. The memory 34 stores proxy settings in addition to the above program 36.

[0013] The proxy settings include flag information indicating either a value of "valid" indicating the use of the proxy server 71 or "invalid" indicating the non-use of the proxy server 71. The proxy settings may further include a plurality of setting values for using the proxy server 71. The plurality of setting values include the IP address of the proxy server 71, the port number used for communication with the proxy server 71, the user name, and the password. The flag information and each setting value are stored in the memory 34 in response to being input to the printer 10 by the user.

[0014] (Configuration of APs 60, 70) Each of the APs 60, 70 has a DHCP (Dynamic Host Configuration Protocol) server function. Therefore, the APs 60 and 70 can each assign an IP address to a device belonging to the LAN 62 or LAN 72. A proxy server 71 is further provided in the LAN 72 formed by the AP 70.

[0015] (Configuration of the mobile terminal 50) The mobile terminal 50 is a portable terminal device such as a mobile phone, smartphone, PDA, tablet PC, etc. In a modification, a stationary PC, notebook PC, etc. may be used instead of the mobile terminal 50. Hereinafter, the mobile terminal 50 will be referred to as the "terminal 50".

[0016] (Configuration of the print mediation server 100) The printing intermediary server 100 is a server that provides a so-called cloud printing service. In this embodiment, the printing intermediary server 100 is not a server installed by the vendor of the printer 10, but a server installed by an operator that provides a cloud printing service. In a modified example, the printing intermediary server 100 may be a server installed by the vendor of the printer 10. The printing intermediary server 100 converts, for example, image data received from the terminal 50 to generate print data, and transmits the print data to the printer 10. Hereinafter, the printing intermediary server 100 will be referred to as the "server 100".

[0017] (Registration process: Figure 2) Referring to Figure 2, a process for registering information about the printer 10 with the server 100 so that the printer 10 can receive a cloud printing service from the server 100 will be described. In the initial state of Figure 2, the printer and the terminal 50 belong to the same LAN (that is, LAN62 or LAN72). When the printer 10 belongs to LAN62, the printer 10 uses the AP60 to communicate with the terminal 50 and the server 100. When the printer 10 belongs to LAN72, the printer 10 uses the AP70 to communicate with the terminal 50, and further uses the proxy server 71 to communicate with the server 100. However, in Figure 2, the AP60, AP70, and proxy server 71 are not shown. These devices are also not shown in the sequence diagrams after Figure 6 below.

[0018] Hereinafter, when describing the process executed by the CPU 32 of the printer 10 according to the program 36, the description will be based on the printer 10 rather than the CPU 32. In addition, all the following communications executed by the printer 10 are executed via the communication interface 16. Therefore, hereinafter, when describing the communication-related process, the description of "via the communication interface 16" will be omitted.

[0019] Terminal 50, upon receiving an operation from the user (not shown), accesses, for example, the web server in printer 10. Then, upon receiving an operation from the user for printer 10 to receive cloud printing services, terminal 50 sends a registration instruction to printer 10 at T10.

[0020] When printer 10 receives a registration instruction from terminal 50 at T10, printer 10 sends a registration request to server 100 at T12, which includes a printer ID that identifies printer 10.

[0021] When server 100 receives a registration request from printer 10 at T12, it generates a PIN code at T14 and stores the generated PIN code in association with the printer ID included in the registration request. Next, at T20, server 100 sends the PIN code and a login URL (abbreviation for Uniform Resource Locator) to printer 10. The login URL is information indicating the location of the authentication screen data described later within server 100.

[0022] When printer 10 receives a PIN code and URL from server 100 at T20, it sends them to terminal 50 at T22.

[0023] When terminal 50 receives a PIN code and a URL from printer 10 at T22, it displays them at T30. Next, when terminal 50 receives an operation from the user to select a URL at T32, it sends an authentication request including the URL to server 100 at T40.

[0024] When server 100 receives an authentication request from terminal 50 at T40, it sends authentication screen data, identified by the URL included in the authentication request, to terminal 50 at T42. The authentication screen data represents an authentication screen for entering a PIN code.

[0025] When terminal 50 receives authentication screen data from server 100 at T42, it displays the authentication screen represented by the authentication screen data at T44. Next, at T46, terminal 50 accepts input from the user for the PIN code displayed at T30. In this case, at T50, terminal 50 sends the entered PIN code to server 100.

[0026] When server 100 receives a PIN code from terminal 50 at T50, it performs authentication of the received PIN code at T52. Specifically, server 100 determines whether or not it has already stored the received PIN code. If server 100 determines that it has already stored the received PIN code, i.e., if authentication is successful, it generates a unique string access token (hereinafter referred to as AT (abbreviation for Access Token)) at T54. Next, at T56, server 100 identifies the printer ID (see T14) associated with the received PIN code and stores the identified printer ID in association with the generated AT. Then, at T60, server 100 sends an authentication notification including the generated AT to printer 10.

[0027] When printer 10 receives an authentication notification from server 100 at T60, printer 10 stores the AT included in the authentication notification in memory 34 at T62. Next, printer 10 sends Create-Printer-Subscripions (hereinafter referred to as "CPS") to server 100 at T70. CPS is a command to register a new event as a Subscripions with server 100. CPS includes the printer ID, the AT stored in T62, job-Fetchable, and job-state-changed. job-Fetchable is a command to instruct server 100 to monitor for the reception of a print command and notify printer 10 that a print command has been received. job-state-changed is a command to instruct server 100 to monitor for changes in the status of the print job and notify printer 10 that there has been a change in the status of the print job.

[0028] When server 100 receives a CPS from printer 10 at T70, it performs authentication of the AT included in the CPS. If authentication is successful, server 100 stores job-Fetchable and job-state-changed in T72, associated with the printer ID included in the CPS. As a result, when server 100 receives a print command that includes the printer ID of printer 10, it notifies printer 10 of this fact, and when it receives a job change command (e.g., a cancel command) that includes the printer ID of printer 10, it notifies printer 10 of this fact. This completes the registration process.

[0029] (Print execution process: Figure 3) Next, with reference to Figure 3, the print execution process performed by the CPU 32 of the printer 10 will be described. The process in Figure 3 is triggered by the completion of the registration process. Furthermore, the process in Figure 3 is triggered by the power of the printer 10 being turned OFF after the registration process is completed, and then the power of the printer 10 being turned ON.

[0030] In S2, printer 10 starts operating in Polling Mode (hereinafter referred to as "PM"). PM is a mode for receiving print data from server 100 by repeatedly sending polling signals to server 100. When printer 10 starts operating in PM, it sends a Get-Notification(Polling Mode)Request (hereinafter referred to as "GN(PM)Req") to server 100. GN(PM)Req corresponds to the polling signal mentioned above. Note that GN(PM)Req includes the printer ID of printer 10. The same applies to the Get-Notification(Polling Mode)Response (hereinafter referred to as "GN(PM)Res") described later.

[0031] In S4, printer 10 monitors for the reception of GN(PM)Res from server 100. If printer 10 receives GN(PM)Res from server 100, it determines YES in S4 and proceeds to S6.

[0032] In S6, printer 10 determines whether or not the GN(PM)Res contains the JobID. If printer 10 determines that the GN(PM)Res contains the JobID (YES in S6), it proceeds to S8. If printer 10 determines that the GN(PM)Res does not contain the JobID (NO in S6), it returns to S4. The GN(PM)Res contains interval information indicating the interval until the next GN(PM)Req is sent. In this embodiment, the interval information indicates 30s (s is an abbreviation for seconds). In modified examples, the interval information may indicate an interval greater than 30s or an interval less than 30s. If printer 10 determines that the GN(PM)Res does not contain the JobID (NO in S6), it sends the GN(PM)Req to server 100 when 30s, indicated by the interval information contained in the GN(PM)Res, has elapsed. Then, in S4, printer 10 monitors for the receipt of the GN(PM)Res from server 100.

[0033] In S8, the printer 10 performs various communications with the server 100 and receives print data from the server 100, which is identified by the JobID included in GN(PM)Res.

[0034] In S10, the printer 10 starts printing using the received print data. Specifically, the printer 10 (i.e., the CPU 32) supplies the print data to the print engine 18 and starts printing according to the print data.

[0035] In S12, printer 10 determines whether it is in a proxy environment or a non-proxy environment. A proxy environment is an environment in which printer 10 communicates with devices on the Internet 6 using proxy server 71 (i.e., it belongs to LAN 72). A non-proxy environment is an environment in which printer 10 communicates with devices on the Internet 6 without using proxy server 71 (i.e., it belongs to LAN 62).

[0036] Printer 10 determines that it is in a proxy environment (YES in S12) if the flag information included in the proxy settings in memory 34 indicates "enabled" and each setting value (IP address, port number, etc.) is stored as a proxy setting.

[0037] On the other hand, if the flag information indicates "disabled," or if the flag information indicates "enabled" but the individual settings are not stored, the printer 10 determines whether or not the URL of the WPAD (Web Proxy Auto-Discovery Protocol) file is stored in memory 34. If the WPAD file is stored in memory 34, the printer 10 determines that it is in a proxy environment (YES in S12), and if the WPAD file is not stored in memory 34, the printer 10 determines that it is in a non-proxy environment (NO in S12).

[0038] Let's explain WPAD. When printer 10 belongs to LAN62 or LAN72, it requests an IP address assignment from AP60 or AP70. AP60 or AP70 has DHCP server functionality, so it automatically assigns an IP address to printer 10. If a proxy server 71 exists on LAN72, AP70 sends the URL of the WPAD file to printer 10 when assigning the IP address. The WPAD file is a file that contains information about the proxy server 71. Therefore, when printer 10 receives the URL of the WPAD file from AP71, it can determine that the proxy server 71 exists on LAN72, that is, that printer 10 is in a proxy environment.

[0039] Based on the above process, if printer 10 determines that printer 10 is in a proxy environment (YES in S12), the process proceeds to S20; otherwise, if printer 10 determines that printer 10 is in a non-proxy environment (NO in S12), the process proceeds to S30.

[0040] In S20, printer 10 performs proxy environment processing (see Figure 4). Once the processing in S20 is complete, printer 10 returns to S4.

[0041] In S30, printer 10 performs non-proxy environment processing (see Figure 5). Once processing in S30 is complete, printer 10 returns to S2.

[0042] (Proxy environment processing: Figure 4) Referring to Figure 4, the proxy environment processing of S20 in Figure 3 will be explained. In the proxy environment processing, the printer 10 does not operate in Event Wait Mode (hereinafter referred to as "EWM"), but maintains PM. That is, the printer 10 periodically (at 30-second intervals in this embodiment) sends GN(PM)Req to the server 100.

[0043] In S40, printer 10 monitors for the reception of GN(PM)Res from server 100. If printer 10 receives GN(PM)Res, it determines YES in S40 and proceeds to S50.

[0044] In S42, the printer 10 monitors for a cancellation operation from the user. This cancellation operation may be an operation on a button that constitutes the operation unit 12, or an operation on the display unit 14 which functions as a touch panel. If the printer 10 receives a cancellation operation from the user, it determines YES in S42 and proceeds to S52.

[0045] In S44, the printer 10 monitors for the completion of the printing that was started in S10 in Figure 3. When the printer 10 receives information from the print engine 18 indicating that printing is complete, it determines YES in S44 and terminates the process in Figure 4.

[0046] In S46, the printer 10 monitors for printing errors. Printing errors include, for example, paper jams, running out of paper, or depletion of colorants for printing. When the printer 10 (i.e., the CPU 32) receives information from the print engine 18 indicating that a printing error has occurred, it determines YES in S46 and proceeds to S60.

[0047] In S60, the printer 10 monitors for the resolution of the printing error. When the printer 10 (i.e., the CPU 32) receives information from the print engine 18 indicating that the printing error has been resolved, it determines YES in S60 and returns to the monitoring process in S40-S46.

[0048] In S50, the printer 10 determines whether the GN(PM)Res received in S40 contains cancellation information. This cancellation information is sent from the server 100 to the printer 10 when a cancellation instruction is sent from the terminal 50 to the server 100 in response to a user operating the terminal 50. If the GN(PM)Res contains cancellation information, the printer 10 determines YES in S50 and proceeds to S52. On the other hand, if the GN(PM)Res does not contain a cancellation instruction, the printer 10 determines NO in S50 and returns to the monitoring process in S40-S46.

[0049] In S52, the printer 10 performs a cancellation process. The cancellation process includes supplying an instruction to the print engine 18 indicating that printing should be canceled, and deleting the received print data. As a result, printing is stopped in the print engine 18. When the process in S52 is completed, the process shown in Figure 4 is completed.

[0050] (Processing in a non-proxy environment: Figure 5) Referring to Figure 5, the non-proxy environment processing of S30 in Figure 3 will be explained. In the non-proxy environment processing, printer 10 operates with EWM instead of PM.

[0051] In S70, printer 10 stops the PM operation. That is, printer 10 stops sending GN(PM)Req. As a result, printer 10 does not operate PM and EWM in parallel, which helps to suppress high processing load and communication load.

[0052] In S72, printer 10 operates in EWM mode. Specifically, printer 10 uses the stored AT (see T62 in Figure 2) to establish a connection with server 100 in accordance with HTTP (Hypertext Transfer Protocol). This connection is what is called an always-on connection, which allows server 100 to send signals to printer 10 even without the printer 10 sending signals to server 100. In other words, this connection is for performing server-push type communication. After establishing this connection, printer 10 sends a Get-Notification (Event Wait Mode) Request (hereinafter referred to as "GN(EWM)Req") to server 100. GN(EWM)Req is a signal that requests server 100 to send a notification to printer 10 when it receives a cancellation instruction from terminal 50.

[0053] In S80, printer 10 monitors for the reception of GN(EWM)Res from server 100. If printer 10 receives GN(EWM)Res, it determines YES in S80 and proceeds to S90.

[0054] Steps S82, S84, and S86 are the same as steps S42, S44, and S46 in Figure 4, respectively. If the answer to S82 is YES, proceed to S92; if the answer to S84 is YES, proceed to S94; and if the answer to S86 is YES, proceed to S100.

[0055] In S90, the printer 10 determines whether the GN(EWM)Res received in S50 contains cancellation information. If the GN(EWM)Res contains cancellation information, the printer 10 determines YES in S90 and proceeds to S92. On the other hand, if the GN(EWM)Res does not contain a cancellation instruction, the printer 10 determines NO in S90 and returns to the monitoring process in S80-S86.

[0056] In S92, the printer 10 performs a cancellation process. S92 is the same as S562 in Figure 4. As a result, printing is stopped in the print engine 18.

[0057] In S94, printer 10 disconnects the connection established in S72. Once the processing in S94 is complete, the processing in Figure 5 is completed. In this case, printer 10 returns to S2 in Figure 3 and operates again in PM. This allows printer 10 to resume repeatedly sending GN(PM)Req to server 100 and to receive GN(PM)Res from server 100.

[0058] Thus, in this embodiment, when the printer 10 receives a GN(PM)Res containing a JobID from the server 100 (YES in S6), it establishes a server-push type connection with the server 100 (S72). Since this connection is established, when the server 100 receives a cancellation instruction from the terminal 50, it can use this connection to send a GN(EWM)Res containing cancellation information to the printer 10, even without receiving a GN(PM)Req from the printer 10. Therefore, the printer 10 can receive cancellation information from the server 100 more quickly than in a configuration where the above connection is not established in response to receiving a GN(PM)Res containing a JobID from the server 100. As a result, the printer 10 can stop printing quickly.

[0059] The printer 10 disconnects the connection (S94) if the GN(EWM)Res contains cancellation information (YES in S90), accepts the cancellation operation (YES in S82), or when printing is complete (YES in S84). This eliminates the need for the printer 10 to send a signal to the server 100 to maintain the connection, thereby reducing the processing load and communication load on the printer 10.

[0060] Furthermore, in S100, printer 10 disconnects the connection established in S72. In situations where a printing error occurs, printing is interrupted, so printer 10 does not need to quickly cancel the print job. In such situations, printer 10 disconnects the connection, which reduces the processing load and communication load on printer 10.

[0061] Next, in S102, printer 10 starts operating in PM mode. That is, printer 10 periodically sends GN(PM)Req to server 100.

[0062] In S104, printer 10 monitors for the resolution of the print error. If the print error is resolved, printer 10 determines YES in S104 and returns to S70. In this case, printer 10 stops its operation in PM (S70) and re-establishes its connection with server 100 (S72). This allows printer 10 to quickly receive cancellation information from server 100 after the print error has been resolved and printing has resumed.

[0063] Furthermore, our research has revealed that when printer 10 operates in EWM mode in a proxy environment, there is a possibility that printer 10 may not be able to receive notifications from server 100. For this reason, printer 10 maintains operation in PM mode without operating in EWM mode in a proxy environment (i.e., without establishing a connection with server 100) (see Figure 4). Consequently, printer 10 can properly receive notifications (e.g., GN(PM)Res including cancellation information) from server 100 in a proxy environment. On the other hand, printer 10 operates in EWM mode in a non-proxy environment (i.e., establishes a connection with server 100) (see Figure 5). This allows printer 10 to quickly receive notifications (e.g., GN(PM)Res including cancellation information) from server 100.

[0064] (Specific cases: Figures 6-10) Next, with reference to Figures 6 to 10, we will explain specific cases realized by the processes in Figures 3 to 5. Cases A1 to A4 in Figures 6 to 9 are cases where the printer 10 belongs to LAN 62. Case A1 in Figure 6 is a case where printing is completed successfully. Case A2 in Figure 7 is a case where a print cancellation instruction is sent from terminal 50 to server 100. Case A3 in Figure 8 is a case where the print cancellation operation is performed on printer 10. Case A4 in Figure 9 is a case where a print error occurs. Case B in Figure 10 is a case where printer 10 belongs to LAN 72.

[0065] (Case A1: Figure 6) First, let's explain Case A1 in Figure 6. Once the processing in Figure 2 is complete, printer 10 starts operating in PM (S2 in Figure 3). In this case, printer 10 sends a GN(PM)Req containing the printer ID of printer 10 to server 100 in T100.

[0066] When server 100 receives a GN(PM)Req from printer 10 at T100, it determines whether or not there is a print job that printer 10 should execute, identified by the printer ID included in the GN(PM)Req. Since there is no such print job at this stage, server 100 sends a GN(PM)Res without a JobID to printer 10 at T102.

[0067] When printer 10 receives a GN(PM)Res from server 100 in T102 (YES in S4), it determines that the GN(PM)Res does not contain a JobID (NO in S6). Then, printer 10 waits for 30 seconds, as indicated by the interval information contained in the GN(PM)Res. After 30 seconds, printer 10 sends a GN(PM)Req to server 100 in T104, and receives a GN(PM)Res that does not contain a JobID from server 100 in T106 (YES in S4, NO in S6). In this way, printer 10 repeatedly sends a GN(PM)Req to server 100 in accordance with the 30 seconds elapsed since receiving a GN(PM)Res that does not contain a JobID from server 100. For this reason, printer 10 can repeatedly send GN(PM)Req to server 100 at intervals corresponding to the instructions from server 100.

[0068] Although not shown in the diagram, terminal 50 receives a print operation from the user to initiate printing to printer 10. This print operation includes specifying the printer ID of printer 10 and specifying image data representing the image to be printed. When terminal 50 receives a print operation from the user, T110 sends a print instruction to server 100 including the specified printer ID and the specified image data.

[0069] When server 100 receives a print command from terminal 50 at T110, it generates a JobID, which is an ID that identifies the print job, at T112. Server 100 further converts the image data included in the print command to generate print data in a data format that printer 10 can interpret. Server 100 then stores the printer ID included in the print command, the generated JobID, the generated print data, and the status "Printing" in association with each other.

[0070] Subsequently, when server 100 receives a GN(PM)Req from printer 10 in T120, it stores the JobID etc. associated with the printer ID included in the GN(PM)Req (see T112), and therefore determines that there is a print job that printer 10 should execute. In this case, server 100 sends a GN(PM)Res containing the JobID to printer 10 in T122.

[0071] When printer 10 receives a GN(PM)Res containing a JobID from server 100 at T122 (YES at S4, YES at S6), it sends a Fetch-job Request containing the JobID to server 100 at T130, and receives a Fetch-job Response from server 100 at T132. The Fetch-job Response contains job information indicating the printing conditions (e.g., paper size, number of colors, number of copies, etc.).

[0072] In T134, the printer 10 sends a Fetch-Document Request to the server 100, and in T136, it receives a Fetch-Document Response from the server 100 containing the print data generated in T112 (S8). In this case, in T138, the printer 10 (i.e., the CPU 32) controls the print engine 18 (specifically, by supplying job information and print data to the print engine 18) and starts printing according to the job information and print data (S10).

[0073] In this case, printer 10 belongs to LAN62. Therefore, T140 determines that printer 10 is in a non-proxy environment (NO in S12). For this reason, printer 10 performs non-proxy environment processing (see Figure 5).

[0074] Printer 10 stops its operation in PM at T142 (S70 in Figure 5). Next, printer 10 establishes a connection with server 100 at T150 (S72). Printer 10 sends GN(EWM)Req to server 100 at T152.

[0075] In this case A1, printer 10 completes printing at T160 (YES at S84) without receiving a GN(PM)Res containing cancellation information from server 100 (NO at S80) and without accepting a cancellation operation from the user (NO at S82). In this case, printer 10 sends a print completion notification to server 100 at T162. As a result, server 100 deletes the job ID associated with the printer ID, the print data, and the status "Printing".

[0076] Next, at T170, printer 10 disconnects the connection established at T150 (S94) and terminates operation in EWM. In this case, printer 10 restarts operation in PM (S2 in Figure 3) and at T180 sends GN(PM)Req to server 100.

[0077] (Case A2: Figure 7) Next, we will explain Case A2 in Figure 7. The processing from T200 to T252 is the same as the processing from T100 to T152 in Figure 6.

[0078] Although not shown in the diagram, terminal 50 accepts a cancellation operation from the user to cancel printing. In this case, terminal 50 sends a cancellation instruction including the printer ID of printer 10 to server 100 via T260.

[0079] When server 100 receives a cancellation instruction from terminal 50 in T260, it identifies the JobID (see T212) associated with the printer ID included in the cancellation instruction in T262, and deletes the print data associated with the identified JobID. Server 100 then stores the printer ID, the identified JobID, and the status "cancelled" in association with each other.

[0080] At this point, server 100 has already received a GN(EWM)Req from printer 10 in T252. Therefore, server 100 identifies the JobID and status "Cancelled" (see T262) associated with the printer ID of printer 10 included in the received GN(EWM)Req, and in T264 sends a GN(EWM)Res containing the cancellation information to printer 10.

[0081] When printer 10 receives a GN(PM)Res containing cancellation information from server 100 in T264 (YES in S80 and S90 in Figure 5), it executes a cancellation process in T266 (S92). As a result, printing is stopped in print engine 18. The processes executed in T270 and T280 that follow are the same as the processes in T170 and T180 in Figure 6.

[0082] (Case A3: Figure 8) Next, we will explain Case A3 in Figure 7. The processing from T300 to T352 is the same as the processing from T100 to T152 in Figure 6.

[0083] In T360, printer 10 accepts a cancellation operation from the user to cancel printing (YES in S82 in Figure 5). In this case, printer 10 executes the cancellation process in T362 (S92) even without receiving a GN(PM)Res containing cancellation information. As a result, printing is stopped in print engine 18. The processes executed in T370 and 3280 that follow are the same as the processes in T170 and T180 in Figure 6.

[0084] (Case A4: Figure 9) Next, we will explain Case A4 in Figure 9. The processing from T400 to T452 is the same as the processing from T100 to T152 in Figure 6.

[0085] At T460, a printing error occurs in the print engine 18 (YES at S86 in Figure 5). In this case, at T470, the printer 10 disconnects from the server 100 (S100). Next, the printer 10 starts operation in PM mode (S102), sends GN(PM)Req to the server 100 at T480, and receives GN(PM)Res from the server 100 at T482.

[0086] Subsequently, in response to the user performing an action to resolve the printing error (e.g., replenishing the paper), the printing error is resolved in T490 (YES in S104). In this case, the printer 10 stops its operation in PM in T492 (S70), and re-establishes its connection with the server 100 in T496 (S72). After that, the printer 10 performs the same processing as in T152 to T180 in Figure 6.

[0087] (Case B: Figure 10) Next, we will explain Case B in Figure 10. The processing from T500 to T538 is the same as the processing from T100 to T138 in Figure 6.

[0088] Printer 10 determines in T540 that it is in a proxy environment (YES in S12 of Figure 3). Therefore, printer 10 performs proxy environment processing (see Figure 4) and maintains operation in PM without establishing a connection with server 100.

[0089] When printer 10 completes printing at T550 (YES at S44 in Figure 4), it sends a print completion notification to server 100 at T552. Printer 10 continues operation in PM mode and sends GN(PM)Req to server 100 at T560.

[0090] (Correspondence) Printer 10 and print engine 18 are examples of "image forming apparatus" and "image forming engine," respectively. GN(PM)Req is an example of an "inquiry request." GN(PM)Res containing JobID (see T122 in Figure 6) is an example of a "job execution response." The print instruction T110 in Figure 6 is an example of a "job execution instruction." The cancel instruction T260 in Figure 7 is an example of a "job stop instruction." GN(EWM)Res containing cancellation information (T264 in Figure 7) is an example of an "image forming stop command." The cancel operation T360 in Figure 8 is an example of a "stop operation."

[0091] T100, T104, and T120 in Figure 6 are examples of processes performed by the "transmission unit". T138 and T150 in Figure 6 are examples of processes performed by the "image formation control unit" and "establishment unit", respectively. T170 in Figure 6, T270 in Figure 7, T370 in Figure 8, and T470 in Figure 9 are examples of processes performed by the "cutting unit". T496 in Figure 9 is an example of a process performed by the "re-establishment unit". S12 in Figure 3 is an example of a process performed by the "determination unit".

[0092] (Second embodiment: Figure 11) Next, a second embodiment will be described. In the second embodiment, printer 10 does not execute S70 in Figure 5 if it receives a GN(PM)Res containing a JobID from server 100 (YES in S4 and S6 in Figure 3) and printer 10 is in a non-proxy environment (NO in S12). That is, printer 10 continues to operate in PM mode. Therefore, printer 10 operates in both PM and EWM modes in parallel. In the following, the PM task (in other words, the processing thread) for operating in PM mode and the EWM task for operating in EWM mode will be represented by symbols 10A and 10B, respectively.

[0093] Except for the fact that PM task 10A and EWM task 10B operate in parallel, the processing of T600 to T640 is the same as the processing of T100 to T140 in Figure 6 of the first embodiment.

[0094] PM task 10A sends a start command to EWM task 10B at T642. As a result, EWM task 10B establishes a connection with server 100 at T650 (S72 in Figure 5). Next, EWM task 10B sends GN(EWM)Req to server 100.

[0095] The processing at T660 to T664 is the same as the processing at T260 to T264 in Figure 7. When the EWM task 10B receives a GN(EWM)Req containing cancellation information from the server 100 at T664 (YES at S80, YES at S90), it executes the cancellation process at T666 (S92). In this way, the printer 10 can receive a GN(EWM)Req containing cancellation information from the server 100 at T664 before sending a GN(PM)Req to the server 100 at T680. Therefore, the printer 10 can execute the cancellation process quickly. The processing at T670 is the same as the processing at T270 in Figure 7.

[0096] Thus, in this embodiment, after the printer 10 receives a GN(PM)Res containing the JobID from the server 100 (T622), it continues to operate in PM mode (T680) while simultaneously starting to operate in EWM mode (T650). This enables the printer 10 to operate in both PM and EWM modes in parallel. By operating in EWM mode, the printer 10 can quickly receive cancellation information from the server 100. Furthermore, even if an event occurs that makes communication in EWM mode impossible, the printer 10 can still operate in PM mode and therefore properly receive a GN(PM)Res containing cancellation information.

[0097] Although specific examples of the present invention have been described in detail above, these are merely illustrative and do not limit the scope of the claims. The technology described in the claims includes various modifications and changes to the specific examples illustrated above. Modifications of the above embodiments are listed below.

[0098] (Modification 1) In the above embodiment, it is assumed that the server 100 receives a cancel instruction from the terminal 50 (see Case A2 in Figure 7). Alternatively, the server 100 may receive a pause instruction from the terminal 50 at T260 in Figure 7. In this case, the server 100 sends a GN(EWM)Res containing pause information to the printer 10 at T264. The printer 10 stops printing at T266. However, the printer 10 does not delete the print data. Therefore, the printer 10 can resume printing when it receives a GN(EWM)Res from the server 100 containing information on when to resume printing. In this modification, the pause instruction and the GN(EWM)Res containing pause information are examples of a "job stop instruction" and an "image formation stop command," respectively. In another modification, the server 100 may receive an interrupt instruction from the terminal 50 at T260 in Figure 7. In this case, the server 100 sends a GN(EWM)Res containing interrupt information to the printer 10 in T264. The printer 10 stops printing in T266. However, the printer 10 does not delete the print data. The printer 10 receives new print data that will be interrupted from the server 100 and executes printing according to the new print data. After that, the printer 10 resumes the previously stopped printing. In this modified example, the interrupt instruction and the GN(EWM)Res containing interrupt information are examples of a "job stop instruction" and an "image formation stop command," respectively.

[0099] (Modification 2) A scanner may be used instead of the printer 10. In this case, a scan intermediary server is used instead of the print intermediary server 100. In this modification, each process is executed as follows: At T110 in Figure 6, a scan instruction is communicated instead of a print instruction. T134 and T136 are not executed. At T138, scanning of the document is started. At T266 in Figure 7 or T362 in Figure 8, the scan is canceled. At T160 in Figure 6, when the scan is completed, the scan data is sent from the scanner to the terminal 50 via the scan intermediary server. In this modification, the scanner and scan engine are examples of an "image forming apparatus" and an "image forming engine," respectively.

[0100] (Modification 3) The printer 10 does not have to execute S94 in Figure 5. For example, the printer 10 does not have to disconnect the connection with the server 100 in T170 when printing is completed in T160 in Figure 6. Also, for example, the printer 10 does not have to disconnect the connection with the server 100 in T270 when it receives a GN(EWM)Res containing a cancellation instruction from the server 100 in T264 in Figure 7. Also, for example, the printer 10 does not have to disconnect the connection with the server 100 in T370 when it accepts a cancellation operation from the user in T360 in Figure 8. In this modification, the disconnection unit that disconnects the connection when image formation is completed, the disconnection unit that disconnects the connection when an image formation stop command is received, and the disconnection unit that disconnects the connection when a stop operation is performed can be omitted.

[0101] (Modification 4) The printer 10 does not have to perform S100 in Figure 5. That is, the printer 10 does not have to disconnect the connection with the server 100 in T470 if a printing error occurs in T460 in Figure 9. In this modification, the disconnection unit that disconnects the connection when an error occurs in the image forming engine can be omitted.

[0102] (Modification 5) If the printer 10 is YES in S104 in Figure 5, it does not need to re-establish the connection in S72. In this modification, the "re-establishment unit" can be omitted. That's fine.

[0103] (Modification 6) The printer 10 may be configured to always proceed to S30 after S10, without executing S12 and S20 in Figure 3. That is, the printer 10 may establish a connection with the server 100 regardless of whether it is a proxy environment or a non-proxy environment. In this modification, the "determination unit" can be omitted.

[0104] (Modification 7) The printer 10 does not have to perform S102 in Figure 5. Generally speaking, the transmitting unit does not have to resume repeatedly sending query requests to the server if the connection is interrupted.

[0105] (Modification 8) In the above embodiment, the CPU 32 of the printer 10 executes the program 36 to realize each of the processes shown in Figures 2 to 11. Alternatively, any of the processes may be realized by hardware such as a logic circuit.

[0106] The technical elements described herein or in the drawings demonstrate technical usefulness individually or in various combinations, and are not limited to the combinations described in the claims at the time of filing. Furthermore, the technologies illustrated herein or in the drawings achieve multiple objectives simultaneously, and achieving even one of these objectives constitutes technical usefulness in itself.

[0107] Even if, in the claims of this patent application, each claim depends on only some of the claims, it is not limited to the claim being dependent only on those specific claims. To the extent that it is not technically contradictory, each claim may be dependent on other claims that were not dependent at the time of application. That is, the technologies of each claim can be combined in various ways as follows: (Item 1) An image forming apparatus comprising: an image forming engine; a transmission unit that repeatedly transmits inquiry requests to a server, wherein the server, upon receiving a job execution instruction from a terminal device, transmits a job execution response to the image forming apparatus indicating that a job should be executed in response to the inquiry request received from the image forming apparatus; an image forming control unit that controls the image forming engine to start image forming when the job execution response is received from the server; and an establishment unit that establishes a server-push type connection with the server when the job execution response is received from the server, wherein the server, upon receiving a job stop instruction from a terminal device, transmits an image forming stop command to the image forming apparatus using the connection, even if it has not received the inquiry request from the image forming apparatus; and the image forming is stopped when the image forming stop command is received from the server. (Item 2) An image forming apparatus according to Item 1, further comprising a cutting unit for cutting the connection when the image forming is completed. (Item 3) An image forming apparatus according to Item 1 or 2, further comprising a disconnection unit for disconnecting the connection when the image forming stop command is received from the server. (Item 4) An image forming apparatus according to any one of items 1 to 3, further comprising: an operating unit operated by a user; and a disconnecting unit for disconnecting the connection when a stop operation for stopping the image forming is performed on the operating unit, wherein the image forming is stopped even if the server does not receive the image forming stop command when the stop operation is performed on the operating unit. (Item 5) An image forming apparatus according to any one of items 1 to 4, further comprising a cutting unit for disconnecting the connection when an error occurs in the image forming engine after the image forming has started. (Item 6) An image forming apparatus according to Item 5, further comprising a re-establishment unit that re-establishes the connection when the error is resolved after the error occurs in the image forming engine. (Item 7) An image forming apparatus according to any one of items 1 to 6, further comprising a determination unit that determines whether the image forming apparatus is in a proxy environment or a non-proxy environment when a job execution response is received from the server, wherein the determination unit is defined as an environment for performing communication with the server using a proxy server, and the determination unit is defined as an environment for performing communication with the server without using a proxy server, and the establishment unit does not establish the connection when it is determined that the image forming apparatus is in the proxy environment, and establishes the connection when it is determined that the image forming apparatus is in the non-proxy environment. (Item 8) An image forming apparatus according to any one of items 1 to 7, wherein the transmission unit stops repeatedly transmitting the inquiry request to the server when the job execution response is received from the server. (Item 9) An image forming apparatus according to any one of items 1 to 8, wherein the transmission unit resumes repeatedly transmitting the inquiry request to the server when the connection is disconnected. (Item 10) An image forming apparatus according to any one of items 1 to 9, wherein the transmission unit continues to repeatedly transmit the inquiry request to the server when the job execution response is received from the server. (Item 11) An image forming apparatus according to any one of items 1 to 10, wherein the image forming engine is a printing engine, and the image forming is printing an image onto a printing medium. (Item 12) An image forming apparatus according to any one of items 1 to 11, wherein the job stop instruction is an instruction to cancel the job, and the image forming stop command is a command to cancel the image forming. [Explanation of Symbols]

[0108] 2: Communication system, 4: LAN, 6: Internet, 10: Printer, 12: Control panel, 14: Display panel, 16: Communication interface, 18: Print engine, 30: Control unit, 32: CPU, 34: Memory, 36: Program, 50: Mobile terminal, 100: Print intermediary server

Claims

1. An image forming apparatus, Image forming engine, A transmission unit that repeatedly sends inquiry requests to a server, wherein the server, upon receiving a job execution instruction from a terminal device, transmits a job execution response to the image forming apparatus indicating that the job should be executed in response to the inquiry request received from the image forming apparatus, When the job execution response is received from the server, the image forming control unit controls the image forming engine to start image forming, A connection establishment unit that establishes a server-push type connection with the server when the job execution response is received from the server, wherein the server, when it receives a job stop instruction from the terminal device, uses the connection to send an image forming stop command to the image forming apparatus, even if it does not receive the inquiry request from the image forming apparatus, the connection establishment unit comprises: An image forming apparatus in which image forming is stopped when the image forming stop command is received from the server.

2. The image forming apparatus further, The image forming apparatus according to claim 1, further comprising a cutting unit for cutting the connection when the image forming is completed.

3. The image forming apparatus further, The image forming apparatus according to claim 1, further comprising a disconnection unit for disconnecting the connection when the image forming stop command is received from the server.

4. The image forming apparatus further, A control unit operated by the user, The operation unit includes a disconnection unit that disconnects the connection when a stop operation for stopping the image formation is performed, The image forming apparatus according to claim 1, wherein when the stop operation is performed in the operation unit, the image forming is stopped even if the image forming stop command is not received from the server.

5. The image forming apparatus further, The image forming apparatus according to claim 1, further comprising a cutting unit for disconnecting the connection if an error occurs in the image forming engine after the image forming process has started.

6. The image forming apparatus further, The image forming apparatus according to claim 5, further comprising a re-establishment unit for re-establishing the connection when the error is resolved after the error occurs in the image forming engine.

7. The image forming apparatus further, A determination unit that determines whether the image forming apparatus is in a proxy environment or a non-proxy environment when the job execution response is received from the server, wherein the proxy environment is an environment for performing communication with the server using a proxy server, and the non-proxy environment is an environment for performing communication with the server without using a proxy server, the determination unit comprises The establishment unit is, If the image forming apparatus is determined to be in the proxy environment, the connection will not be established. The image forming apparatus according to claim 1, which establishes the connection when it is determined that the image forming apparatus is in the non-proxy environment.

8. The image forming apparatus according to claim 1, wherein the transmitting unit stops repeatedly transmitting the inquiry request to the server when it receives the job execution response from the server.

9. The image forming apparatus according to claim 8, wherein the transmitting unit resumes repeatedly transmitting the inquiry request to the server when the connection is disconnected.

10. The image forming apparatus according to claim 1, wherein the transmitting unit continues to repeatedly transmit the inquiry request to the server when it receives the job execution response from the server.

11. The aforementioned image forming engine is a printing engine, The image forming apparatus according to claim 1, wherein the image forming is printing an image onto a printing medium.

12. The aforementioned job stop instruction is an instruction to cancel the job, The image forming apparatus according to claim 1, wherein the image forming stop command is a command for canceling the image forming.

13. A computer program for an image forming apparatus, The computer of the image forming apparatus comprises the following parts, namely: A transmission unit that repeatedly sends inquiry requests to a server, wherein the server, upon receiving a job execution instruction from a terminal device, transmits a job execution response to the image forming apparatus indicating that the job should be executed in response to the inquiry request received from the image forming apparatus, When the job execution response is received from the server, the image forming control unit controls the image forming engine of the image forming apparatus to start image forming, A connection establishment unit that establishes a server-push type connection with the server when the job execution response is received from the server, wherein the server, when it receives a job stop instruction from the terminal device, uses the connection to send an image forming stop command to the image forming apparatus, even if it does not receive the inquiry request from the image forming apparatus. To make it function as, A computer program that stops image formation when it receives the image formation stop command from the server.