Printing apparatus

A printing apparatus includes a print engine and a first controller configured to generate a raster data from a print job and cause the print engine to perform a print process based on the raster data. The first controller includes a first core and a second core. The first core is configured perform an analyzing process of analyze a job control command included in the print job and the second core is configured to perform an RIP process of generating the raster data from a PDL command.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority under 35 U.S.C. § 119 from Japanese Patent Application No. 2020-158177 filed on Sep. 23, 2020. The entire subject matter of the application is incorporated herein by reference.

BACKGROUND

Technical Field

The present disclosures relate to a technology of printing images based on a print job.

Related Art

There has been known a printing apparatus equipped with a print engine and a controller configured to cause the print engine to perform a printing process. Generally, the controller analyzes PDL (abbreviation for Page Description Language) commands included in a print job and generates raster data. Based on the thus generated raster data, the controller causes the print engine to print an image on a print medium.

The print job contains, in addition to the PDL command, job control commands, which represent information for controlling the print job. The controller generally analyzes the job control commands and generates the raster data based on the PDL commands in accordance with the analysis results of the job control commands.

SUMMARY

In recent years, there have been increasing demands on printing apparatuses. For example, there is a need to reduce the time required to complete a printing process after receiving an instruction from a terminal to perform the printing process. On the other hand, the functions required of printing apparatuses are becoming more diverse, and the amount of data in print jobs is increasing in order to realize the required functions. As a result, there is a concern that the processing load on the controller will increase in the printing process.

According to aspects of the present disclosures, there is provided a printing apparatus, comprising a print engine, and a controller. The controller is configured to generate raster data based on a print job and control the print engine to perform printing based on the generated raster data, the print job being data containing a job control command and a PDL command, the job control command being a command to control the print job, a PDL command being a command to generate the raster data. The controller comprises a first core which is a processor core configured to perform, in the printing, an analyzing process, the analyzing process being a process to analyzing the job control command contained in the print job, and a second core which is another processor core configured to perform a RIP process, the RIP process being a process of generating the raster data based on the PDL command.

DETAILED DESCRIPTION OF THE EMBODIMENTS

First Embodiment

A printing system100shown inFIG. 1is equipped with a printing apparatus10and a terminal30. The printing apparatus10and the terminal30are connected to a network200and are configured to communicate through the network200. The network200may be the Internet, a LAN, or a combination of a LAN and the Internet. In addition, the network200may be a wired network, a wireless network, or a combination of the wired and wireless networks. According to a specific embodiment, the printing apparatus10and the terminal30are connected wirelessly to a router (not-shown) that forms a part of the network.

The printing apparatus10is equipped with a first controller11, a second controller12, a third controller13, a memory14, a communication IF15, a user IF16, a print engine17, and a bus19. It is noted that “IF” is an abbreviation for “interface.”

The communication IF15connects the printing apparatus10to the network200in accordance with a particular communication protocol. The user IF16is an interface between the printing apparatus10and a user who directly operates the printing apparatus10. The user IF16includes, for example, a touch panel or operation keys.

The print engine17executes a printing process to print images on recording media such as sheets or disks. In this embodiment, a printing method of the print engine17can be an inkjet printing method, an electrophotographic imaging method, or the like. The print engine17has an image forming mechanism configured to print the recording agent on the recording medium, and a conveyance mechanism configured to convey the recording medium to the image forming mechanism. The image forming mechanism has a cartridge that contains the recording agent. The cartridge has an IC chip, which can be used to communicate with the third controller13for authentication of the cartridge and notification of a remaining amount of recording agent. The conveyance mechanism has a sheet feed roller that feeds the recording media and a conveying roller that conveys the recording medium to the image forming mechanism.

The first controller11generates raster data based on the print job JD when causing the print engine17to perform the printing process. The first controller11is a multi-core CPU having a first core20and a second core21as processor cores. The first core20and the second core21are configured to communicate with each other by a well-known method such as an MCAPI (abbreviation of “Multi-core Communications API”). In this embodiment, a clock frequency of the second core21is higher than a clock frequency of the first core20, and the second core21can perform a process with a higher load than a process than the first core20can perform.

The first controller11is configured to make the second core21transition between two operation modes, that is, an operating mode and a sleep mode. The sleep mode is an operation mode in which power consumption is lower than the operating mode. When the second core21is not operated, the first controller11can reduce the power consumption of the first controller11by shifting the second core21from the operating mode to the sleep mode.

Each of the second controller12and third controller13has a single processor core and is configured, for example, by a single-core CPU. The second controller12and the third controller13perform processes other than that designed to be performed by the first controller11. For example, the second controller12causes the print engine17to execute a feeding operation by controlling the rotation drive of the rollers that the conveyance mechanism has when the print engine17executes a printing process. Further, the second controller12controls the drive of each part of the image forming mechanism during the printing process. The third controller13controls a communication with the IC chip that the cartridge has and blinking of an LED (not shown).

Each of the processes executed by the second and third controllers12and13has a lower processing load than the process executed by the first controller11. In other words, the first controller11is a controller configured to perform processes with a higher processing load than the second and third controllers12and13can perform.

The memory14is configured by a combination of a RAM, a ROM, an SSD, an HDD, and the like. The buffers provided to the first to third controllers11to13, which are used when various programs are executed, may also be regarded as part of the memory14. The memory14may be a storage medium that can be read by the first to third controllers11to13. A storage medium readable by any of the first to third controllers11to13is a non-transitory medium. In addition to the above examples, the non-transitory media also include recording media such as CD-ROMs, DVDs, and ROMs. The non-transitory medium is also a tangible medium. On the other hand, an electrical signal carrying a program downloaded from a server or the like on a network200is a computer-readable signal medium, which is a type of computer-readable medium, but is not included in the non-transitory computer-readable storage medium.

This embodiment mainly shows the processes of the first controller11according to the instructions described in the program. It is noted that the processes of “determining,” “extracting,” “selecting,” “calculating,” “deciding,” “identifying,” “obtaining,” “receiving,” “controlling,” and the like in the following description represent the processes of the first controller11. It is noted that “obtaining” is used in a concept that does not require a request. In other words, the process of receiving data without a request by the first controller11is also included in the concept of “obtaining” data by the first controller11. Further, “data” in this specification is represented by a bit string that can be read by the controller. Further, data with the same substantive meaning content but different formats will be treated as the same data. The same applies to “information” in this specification.

The memory14is provided with a data storage area. The data storage area is an area for storing data necessary for the execution of programs, and the like. When printing is performed, the data storage area of the memory14stores the print job JD transmitted from the terminal30. As shown inFIG. 2, the print job JD has a header area H, a body area B, and a footer area F in order from the top. The header area H and the footer area F are the areas where the job control commands to control the print job JD are recorded. In the print job JD shown inFIG. 2, the job control commands are written in the PJL (abbreviation for Printer Job Language). The body area B is the area where the PDL command for drawing a page is recorded.

The terminal30is equipped with a not-shown CPU, a memory, a user IF, a display, and a network IF. The memory of the terminal30stores the OS and a printer driver. The printer driver is configured to generate a print job JD based on image data generated by a not-shown application in response to an operation instruction from the user.

Next, the procedure of the first controller11when performing the printing process will be explained with reference to the drawings.FIGS. 3 and 4are processes executed by the first core20. InFIG. 3, functions realized by the first core20are indicated as an analyzer22, a job manager23, a parameter constructor24, and a print controller25. The first controller11realizes the functions of each of the sections22,23,24and25by executing not-shown programs stored in the memory14.

In S10ofFIG. 3, the analyzer22determines whether or not a print job JD transmitted from the terminal30has been received. When receiving the print job JD, the analyzer22proceeds to S11, analyzes the PJL and PDL commands included in the received print job JD, and notifies analysis results to the second core21. When the analyzer22does not receive the print job JD (S10: NO), the analyzer22waits (i.e., repeats S10).

FIG. 4shows a flowchart illustrating the job analyzing process performed by the analyzer22in S11ofFIG. 3. In S30, the analyzer22determines the type of the job control command contained in the print job JD. Concretely, the analyzer22determines the type of the job control command by analyzing the header area H in the print job JD. In a case of the print job JD shown inFIG. 2, since the tag “@PJL” is included at the beginning of the command, the analyzer22determines that the job control command is the PJL command, and proceeds to S32. When the header area H is not included at the beginning of the print job JD transmitted from the terminal30, the analyzer22is unable to determine the type of the job command, makes a negative decision (S31: NO) and proceeds to S39. For example, when the print job JD sent from the terminal30consists only of the PDL commands, the head of the print job JD does not contain the header area H.

When the job control command is the PJL command (S31: YES), the analyzer22proceed to S32to determine whether or not the command at the end of the print job JD has been detected. When S32is executed first time, since the analysis of the print job JD has not been reached to the end of the print job JD, the analyzer22makes a negative decision (S31: NO), and proceeds to S33.

In S33, the analyzer22analyzes the command specified by a read pointer in the print job JD. The read pointer is a variable that specifies the address on the memory14of the command to be analyzed. In the analysis of the header area H of the print job JD, the PJL command specified by the read pointer is analyzed, and parameters contained in the PJL command are temporarily stored in the memory14. The PJL command contains parameters indicating identification information, print setting information, and an emulation type. In this embodiment, the process performed by the first core20at S33is an example of the analyzing process.

The identification information includes a device name, which is information that identifies the printing apparatus10, and a login user name, which is information that identifies the user of the terminal30. The print setting information is information specified when a print job JD is generated by the printer driver, and includes the name of the print job JD, the date and time of generation of the print job JD, a confidential print, a color type (e.g., full color, monochrome), a resolution, a brightness, a character code type of the characters to be printed, and a designation of the eject tray. The emulation type is, for example, PostScript, PCL (abbreviation for Printer Control Language), or RTIFF. In the print job JD shown inFIG. 2, the PJL command of “@PJL ENTER LANGUAGE=PCLXL” is included in the header area H. Accordingly, from this command, it is determined that the emulation type is “PCLXL.” In this embodiment, the emulation type is an example of a type of a print job.

In S34, the analyzer22updates the read pointer from the value specifying the current command to the value specifying the next command in the memory14. In S35, the analyzer22determines whether a command “@PJL ENTER LANGUAGE PCLXL” indicating the end of the header area H has been detected by the analysis of S33. When the analyzer22makes a negative decision (S35: NO), the analyzer22returns to S32.

As the analyzer22makes the negative decisions in S35and S32, and sequentially executes the processes of S33and S34, the location specified by the read pointer reaches the command “@PJL ENTER LANGUAGE PCLXL” located at the end of the header area H. Therefore, the analyzer22makes the affirmative decision (S35: YES), and proceeds to S36. When the analyzer22makes the affirmative decision in S35, the read pointer after the update in S34is the value indicating the command at the beginning of body area B.

Returning toFIG. 4, the analyzer22notifies the value of the current read pointer, that is, the value indicating the top PDL command of the body area B, to the second core21. In S38, in accordance with the result of the analysis in S33, the analyzer22notifies the emulation type of the print job JD to the second core. The processes of S36, S37and S38performed by the first core20are examples of the parameter notification process.

In S41, the analyzer22notifies the start of the RIP process to the second core21. As the start of the RIP process is notified to the second core21in S41, the second core21starts the RIP process for the body area B that starts with the command specified by the read pointer notified in S37. In the present embodiment, by duplicating the print job JD on the memory14, the second core21performs the RIP process on the duplicated print job JD. The duplicated print job JD is configured with the header area H, the body area B, and the footer area F, similar to the original print job JD, and the arrangement of the PJL and PDL commands is also the same as that of the original print job JD. Therefore, when the read pointer is a relative address with the origin at the beginning of the print job JD and the value of the read pointer is the same, the command specified by the read pointer indicates the same command in the original print job JD and in the duplicated print job JD. The process executed in S41by the first core20is an example of a start notification process.

Next, referring toFIG. 5, a process performed by the second core21will be described. In S50, the second core21determines whether the notification is received from the first core20. When it is determined that the notification has not been received from the first core20(S50: NO), the second core21waits (i.e., repeats S50). In the present embodiment, the operation mode of the second core21shifts to the sleep mode when no instruction is received from the first core20(S50: NO) for a particular time period, and the sleep mode is maintained until the second core21receives the notification from the first core20. When it is determined that the notification is received from the first core20(S50: YES), the second core21proceeds to SM. When proceeding to SM, the current operation mode of the second core21is the sleep mode, the operation mode shifts to the operating mode, while, when the operation mode of the second core21has already shifted to the operating mode, the operating mode is maintained. In the present embodiment, the second core21determines whether the second core21has to be recovered from the sleep mode in S50. Alternatively or optionally, for example, the first core20may be configured to determine whether or not the second core21should be restored from the sleep mode, and when the second core21is determined to be restored, the first core may shift the operation mode of the second core21from the sleep mode to the operating mode the first core20before transmitting a notification to the second core21in S50.

Then, the second core21proceeds to S52to determine whether the notification from the first core20is a notification of the RIP parameters. When the first core20has made the notification in S36(S52: YES), the second core21proceeds to S53. In S53, the RIP parameters constructed by the parameter constructor24are set as parameters to be used for the RIP process. After execution of S53, the second core21returns to S50.

When a negative decision is made in S52, the second core21proceeds to S54to determine whether the notification from the first core20contains the value of the read pointer. When the first core20has made the notification in S37, the second core21makes the affirmative decision (S54: YES) and proceeds to S55. In S55, the second core21sets the value of the read pointer notified by the first core20as the value indicating the top command of the body area B. After completing S55, the second core21returns to S50.

When a negative decision is made in S54, the second core21proceeds to S56to determine whether the notification from the first core20contains a notification of the emulation type. When the first core20has made the notification in S38, the second core21makes an affirmative decision (S56: YES), and proceeded to S57. In S57, the second core21sets the emulation type notified by the first core20to the emulation type of the print job JD. After completing S57, the second core21returns to S50.

When the negative decision is made in S56, the second core21proceeds to S58to determine whether the notification from the first core20is a notification indicating the start of the auto-emulation. It is noted that the auto-emulation is a process to make the second core21determine the emulation type when the emulation type cannot be determined by the first core20. The first core20notifies the start of the auto-emulation in S40ofFIG. 4, described later. When the negative decision is made in S58, the second core21proceeds to S62. A case where the negative decision is made in S58will be described later.

In S62, the second core21determines whether the notification from the first core20is a notification of the start of the RIP process. When the notification from the first core20is not the notification of the start of the RIP process (S62: NO), the second core21returns to S50. When the notification from the first core20is the notification of the start of the RIP process (S62: YES), the second core21proceeds to S63and performs the RIP process. In the present embodiment, as the second core21performs the RIP process, the analyzing process and the RIP process in the printing process can be performed by the two processor cores in a distributed manner, the processing load on the processor cores can be reduces.

FIG. 6shows the RIP process called in S63ofFIG. 5in detail. In S70, the second core21analyzes the PDL command in the duplicated print job JD and performs drawing to generate the raster data. At this time, the second core21performs the drawing by applying the RIP parameters that have already been set. In the present embodiment, the raster data is data that has three color values (i.e., values of red (R) component, green (G) component, and blue (B) component) for each pixel. The raster data generated by the second core21is recorded in the print data storage area of the memory14. In S71, the second core21updates the read pointer to a value indicating the next PDL command.

In S72, the second core21determines whether the raster data for one page has been generated. When the raster data for one page has not been generated (S72: NO), the second core21goes to S75to determine whether the raster data for all the pages in the print job JD has been generated. When the raster data for all the pages in the print job JD has not been generated (S75: NO), the second core21returns to S70.

After repeatedly performing the processes of S70and S71, when the second core21determines that the raster data for one page has been generated (S72: YES), the second core21proceeds to S73. In S73, the second core21causes the job manager23to register the generated raster data for one page as the raster data to be printed. In S74, the second core21performs a completion notification to notify the job manager23that the raster data for one page has been generated.

In S75, the second core21determines whether the raster data corresponding to all the pages in the print job JD has been generated. When the raster data corresponding to all the pages in the print job JD has not been generated (S75: NO), the second core21returns to S70and generates the raster data corresponding to the remaining pages. After repeatedly performing the processes from S70to S74, when the second core21determines that the raster data for all the pages in the print job JD has been generated (S75: YES), the second core21proceeds to S76and notifies the job completion notification indicating that the RIP process for one print job JD has been completed (S76). Then, the second core21proceeds to S64.

Returning toFIG. 5, the second core21notifies the value of the read pointer when the RIP process in S63has been completed, that is, the value indicating the top command of the footer area F, to the first core20in S64. In S65, the second core21notifies a completion notification of the RIP process to the job manager23of the first core20.

Returning toFIG. 4, in the present embodiment, the analyzer22of the first core20analyzes page information from the body area B in the print job JD in S42in a period during which the processes shown inFIG. 5are performed by the second core21. The page information is information that specifies the PDL data corresponding to one page on the body area B. Concretely, the page information is information specifying from which byte to which byte corresponds to the PDL data for one page, and from which byte to which byte corresponds to the PDL data for two pages in the body area B.

In S43, the analyzer22determines whether the read pointer has been returned by the second core21. When the read pointer is returned by the second core21(i.e., when the process in S64is performed) (S43: YES), the analyzer22proceeds to S44. When the negative decision is made in S43, the analyzer22pauses. In S44, the analyzer22updates the current value of the read pointer to the value of the read pointer returned from the second core21.

Returning to S32, the analyzer22determines whether the command at the end of the print job JD has been detected. When the analyzer22proceeds to S32via S44, the read pointer indicates the top command of the footer area F in the print job JD. By making the negative decision in S32and repeating S33, S34and S35, the analyzer22detects the command “EC %-12345” at the end of the footer area F based on the analysis in S33. Then, the analyzer22made the affirmative decision (S32: YES) and proceeds to S12inFIG. 3.

In S12, the analyzer22notifies the job information among the analysis results in S11to the job manager23. In S13, the analyzer22notifies the job manager23of the start of the printing process. Ins S14, the job manager23determines whether the start notification has been received. When the job manager23receives the start notification from the analyzer22in (S14: YES), the analyzer22proceeds to S15. In S15, the analyzer22notifies the job information received from the analyzer22to the print controller25. For example, the job manager23can, with use of the received page information, manage the raster data for each page stored in the memory14, and generate an indicator image to show a degree of progress of the printing process. When the job manager23does not receive the start notification (S14: NO), the analyzer2pauses.

In S16, the job manager23determines whether a page completion notification is received from the second core21. When receiving the page completion notification (S74inFIG. 6) indicating that the raster data for one page has been generated from the second core21(S16: YES), the job management section23proceeds to S17and makes a print start notification to the print controller25to print the raster data for one page. When receiving the print start notification from the job manager23, in S24, the print controller25converts the raster data for one page stored in the print data storage area into data that can be processed by the print engine17and causes the print engine17to perform the printing process.

Concretely, in S24, the print controller25performs a color conversion process of converting the value of each color R, G, and B of the each pixel of the raster data to values corresponding to the recording agent. Further, the print controller25converts the data after the color conversion process into binary data that can be processed by the print engine17. The print controller25causes the print engine17to perform printing for one page using the binarized data. The job manager23transmits a print start notification to the print controller25every time the job manager23receives a page completion notification from the second core21.

When receiving the job completion notification (S76inFIG. 6) from the second core21in S18, the job manager23proceeds to S19and sends the job completion notification to the print controller25. Thus, the print controller25terminates the process in S24.

Next, a process when the analyzer22cannot determine the type of the job control command and therefore cannot determine the emulation type in S31ofFIG. 4is described. When the analyzer22cannot determine the type of the job control command (S31: NO), the analyzer22proceeds to S39and the current read pointer value is notified to the second core21. In S40, the analyzer22notifies the start of the auto emulation to the second core21. As described above, the “auto emulation” is a process to cause the second core21to analyze the emulation type.

When the second core21receives the start notification of the auto-emulation by the first core20in S40, the second core21make negative decision in S52, S54and S56and proceeds to S59to execute the auto-emulation inFIG. 5. As a result, the emulation type is determined according to the analysis result of the body area B in the duplicated print job JD. In the example ofFIG. 2, the second core21determines that the emulation type is “PCL XL” from the command “PCL XL” contained in the body area B.

In S60, the second core21sends a request to obtain the RIP parameters to the first core20according to the emulation type determined by the auto-emulation in S59. In this case also, when receiving a request for obtaining the RIP parameters from the second core21in S20ofFIG. 3, the parameter constructor24constructs the RIP parameters according to the emulation type identified by auto-emulation, and notifies the constructed RIP parameters to the second core21(S21-S23).

When the second core21obtains the RIP parameters notified by the first core20(S61: YES), the second core21returns to S50.

When the second core21receives the start notification of the RIP process by the first core20in S41(S52: NO; S54: NO; S56: NO; S58: NO; S62: YES), the second core21proceeds to S63to start the RIP process.

According to the above-described embodiment, the following effects can be achieved.

The first controller11has the first core20configured to perform the analyzing process to analyze the job control commands included in the print job JD, and the second core21configured to perform the RIP process to generate the raster data from the PDL commands, when the printing process is being performed. Such a configuration allows different processor cores to perform the analysis of the job control command and the process of generating the raster data from the PDL command, in the printing process. Therefore, the processing load can be distributed between the two processor cores to suppress any negative impact, from the processing load, on the output of the printing process.

The first core20is configured to notify the second core21of each parameter according to the analysis result of the print job JD before notifying the second core21to start the RIP process. In the RIP process, the second core21generates the raster data from the PDL command according to each parameter. As a result, even in a configuration in which the parameters used to perform the RIP process are analyzed from the print job JD, the analyzing process and the RIP process can be distributed and performed by the two cores.

The first core20is configured to identify the emulation type based on the job control command, and the first core20is configured to notify the second core21of the parameters according to the identified emulation type as the RIP parameters. The second core21is configured to generate the raster data from the PDL command according to the RIP parameters. As a result, even when analyzing the RIP parameters used for the RIP process from the print job JD, the analyzing process and the RIP process can be distributed and performed by the two cores.

When the emulation type of the print job JD is not identified based on the job control command, the first core20causes the second core21to perform the auto-emulation to identify the emulation type. The first core20is configured to inform the second core21of the RIP parameters corresponding to the emulation type identified by the second core21. Accordingly, even when the drawing type of the print job JD cannot be identified by the first core20, the RIP process by the second core21can be kept to continue.

The first controller11is configured to store the print job JD in the memory14that can be referenced by each of the first core20and the second core21. After performing the analyzing process, the first core20is configured to notify the PDL command specified by the read pointer to the second core21. The second core21is configured to start the RIP process by referring to the value of the read pointer notified by the first core20. As a result, the first core20and the second core21can refer to the print job JD stored in the memory14and perform the analyzing process and the RIP process. As a result, compared with a case where the print job JD is stored in separate memories14, the memory resources can be effectively utilized.

When the print job JD corresponds to a plurality of pages, the first core20sequentially performs analysis on the plurality of pages of the print job JD and stores the analysis results in the memory14. The first core20informs the second core21of each of the stored parameters for the plurality of pages. As a result, the analyzing process by the first core20and the RIP process by the second core21can be performed in parallel, thereby improving the process speed in the printing process compared to a case where the analyzing process and the RIP process are performed alternately.

The second core21is a processor core configured to perform only the RIP process. Since the RIP process, which has a high processing load, is performed by the second core21, which is a dedicated processor core, thereby suppressing adverse effects on other processes performed by the first core20.

The first controller11shifts the operation mode of the second core from the operating mode to the sleep mode when the second core21does not perform the RIP process. The operating mode is a mode in which the second core21can perform the RIP process, and the sleep mode is a mode in which the power consumption is lower than the operating mode. According to this configuration, since the operation mode of the second core21shifts from the operating mode to the sleep mode in the period when the RIP process is not performed by the second core21, the power consumption of the first controller11, which includes both the first core20and the second core21, can be reduced.

Modification of First Embodiment

In the first embodiment, when the emulation type cannot be identified, the first controller11causes the second core21to perform the auto-emulation to identify the emulation type (FIG. 4: S40).

Alternatively, the first controller11may be configured to notify the second core21of RIP parameters corresponding to a particular emulation type when the emulation type cannot be identified. In such a case, when the RIP parameters are notified in S36ofFIG. 3, if the emulation type has not been identified, the first controller11may be configured to notify the RIP parameters corresponding to the “PostScript” to the second core21. Similarly, if the emulation type has not been identified, the first controller11may notify “PostScript” as the emulation type in S38. In such a configuration, the processes of S31, S39and S40inFIG. 4and the processes of S58to S61inFIG. 5may be deleted, and when it is determined that the notification of the emulation type is not received (S56: NO), the second core21may proceed to S62.

In the embodiment described above, when the emulation type is not identified based on the job control command, the first core20is configured to notify the second core21of the RIP parameters corresponding to a particular emulation type. According to this configuration, the second core21can continue the RIP process even when the emulation type cannot be identified by the job control command.

Second Embodiment

In the second embodiment, a configuration different from that of the first embodiment will be mainly described. In the description of the second embodiment, the same reference numerals are assigned for the same portions as in the first embodiment, and the description thereof will not be repeated.

In the present embodiment, when the printing apparatus10continuously receives multiple print jobs JD from the terminal30, during the performing of the RIP process by the second core21, the first core20analyzes the PJL command for the print job which is being received subsequently.FIG. 7is a flowchart illustrating a job analyzing process2which is performed by the analyzer22of the first core20in S11according to the second embodiment.

In S31, when the type of the job control command is the PJL, the analyzer22proceed to S80to determine whether a prefetching process has already been performed. The prefetching processing will be described later.

When it is determined that the prefetching process has not been performed (S80: NO), the analyzer22proceeds to S32. In S32, when it is determined that the command at the end of the print job JD has not been detected (S32: NO), the analyzer22proceeds to S33and then S81. In S81, the analyzer22updates the first pointer among the read pointers.

In the second embodiment, two pointers, i.e., the first pointer and the second pointer, are used as the read pointers. The first pointer is used to designate the command to be analyzed by the analyzer22. The second pointer is used to designate a top command of the commands analyzed in the prefetching process. The steps from S35to S42are the same as those in the first embodiment (seeFIG. 4).

In S83, the analyzer22performs the prefetching process. The prefetching process is a process in which the analyzer22analyzes the PJL command for the print job JD received next to the print job JD for which RIP processing is currently being performed. As the prefetching process is performed, the RIP process by the second core21and the analysis of the PLJ command for the subsequently received print job JD by the first core20are performed in parallel.

FIG. 8is a flowchart illustrating a prefetching process called in S83ofFIG. 7. In S90, the analyzer22determines whether a new print job JD is received separately from the print job JD subjected to the current printing process. When the new print job JD is not received (S90: NO), analyzer22terminates the prefetching process and proceeds to S43ofFIG. 7. On the other hand, when it is determined that the new print job JD is received (S90: YES), the analyzer22analyzes the PJL command for the newly received print job JD. In the following description, the newly received print job JD is also referred to as the next print job JD. When S91is firstly executed, the analyzer22firstly analyzes the PJL command at the beginning of the header area H in the next print job JD. In S92, the analyzer22updates the value of the second pointer to the value indicating the next command in the header area H.

In S93, the analyzer22determines whether the end of the header area H (i.e., @PJL ENTER LANGUAGE=PCLXL) in the next print job JD is detected. When the analyzer22has not detected the end of the header area H in the next print job JD (S93: NO), the analyzer22returns to S91to analyze the PJL command indicated by the second pointer. After repeatedly executing S91and S92, when the analyzer22detects the end of the header area H (S93: YES), the analyzer22proceeds to S94. In S94, the analyzer22updates the RIP parameters and emulation type to the print parameters and emulation type for the next print job JD according to the analysis result of S91. Then, the analyzer22proceeds to S43ofFIG. 8.

In S43, the analyzer22determines whether the second core21has returned the read pointer in response to termination of the RIP process. When the analyzer22has not received the read pointer from the second core21(S43: NO), the analyzer22pauses. On the other hand, when the analyzer22has received the read pointer from the second core21(S43: YES), the analyzer22proceeds to S84and updates the value of the first pointer to the value of the read pointer replied by the second core21. Then, the analyzer22returns to S32. When the data end of the print job JD, i.e., the command of “EC %-12345X” has not been detected (S32: NO), the analyzer22proceeds to S33to analyze the PJL command, and then, S81to update the first pointer. When the analyzer22has not detected the enter language (S35: NO), the analyzer22returns to S32. When the end of the print job JD is detected (S32: YES), the analyzer22terminates the job analyzing process shown inFIG. 7.

Next, the job analyzing process2for a newly received print job JD which is performed after the prefetching process in S83has already been performed will be described. When the type of the control command is determined to be the PJL (S31: YES), the analyzer22proceeds to S80to determine whether the prefetching process has already been performed. When prefetching process has already been performed (S80: YES), the analyzer22proceeds to S85to notify the second core21of the value of the second pointer. As described above, the value of the second pointer has been updated, in the previously performed prefetching process, to indicate the command at the beginning of the body area B in the print job JD subjected to the current printing process.

After execution of S85, the analyzer22proceeds to S36to notify the RIP parameters, and then, to S38to notify the emulation type. Each parameter notified in S36and S38is the parameter updated in S94in the prefetching process in the previous process. In S41, the analyzer22notifies the second core21of the start of the RIP process. Accordingly, when the analysis of the PJL command has been completed in the prefetching process in S83in the previous print process, the analyzer22causes the second core21to start the RIP process without analyzing the header area H for the print job JD subjected to the print process in the current print process.

After execution of S42, the analyzer22performs the prefetching process for the next print job JD in S83. Then, after execution of S43and S84, when the command at the end of the print job JD is detected in S32, the job analyzing process2shown inFIG. 7is terminated.

In the second embodiment described above, when the first core20of the first controller11has received multiple print jobs JD from the terminal30, the first core20sequentially analyzes each of the multiple print jobs JD and stores the analysis results in the memory14. Then, the first core20notifies each of the parameters in the multiple print jobs JD to the second core21in the parameter notification process. Accordingly, when multiple print jobs JD are received from the terminal30, the first core20can improve the processing speed in the printing process compared to a case where the analyzing process and the RIP process are performed alternately.

Other Embodiments

The technology disclosed herein is not necessarily limited to the above-mentioned embodiments, but can be modified into various forms to the extent that the modifications do not deviate from aspects of the present disclosures. For example, the following modifications are possible. It is only necessary that the first controller11has a processor core that performs the analyzing process and a processor core that performs the RIP process, separately. In this regard, the first controller11may have three or more processor cores.

The memory in which the print job JD is stored may be an external memory that can be detachably connected to the printing apparatus10, in addition to or in place of the memory provided inside the printing apparatus10. For example, a USB or flash memory may be used as the external memory. In such a case, the first core20and the second core21may be configured to refer to the print job JD stored in the external memory.

The print job JD that is referenced by the first core20to analyze the PJL command and the print job JD that is referenced by the second core21to analyze the PDL command may be stored in separate memories. In such a case, it is only necessary for the first controller11to have separate memories including a memory referenced by the first core20and another memory referenced by the second core21.

Shifting the operation mode of the second core21to sleep mode during the period when the second core21is not performing the RIP processing is only an example, and the second core21may remain in the operating mode without shifting to sleep mode during the period when the second core21is not performing the RIP processing.

It is only necessary for the printing apparatus10to have the first controller11provided with the first core20and the second core21. Therefore, the printing apparatus10may be equipped with a single controller having functions of the first through third controllers11-13.

The printing apparatus may be an MFP (multi-function peripheral). In such a case, the MFP is equipped with a scanner engine and a facsimile engine. The scanner engine is configured to perform scanning operations to read images recorded on a document and generate image data representing the scanned image, and the facsimile engine is configured to perform a facsimile operation to transmit and receive image data in a method compliant with the facsimile protocol.