An electronic device, such as a smartphone, laptop computer or desktop computer, may have multiple installed printer drivers to handle print jobs for the device. The printer drivers correspond to printers that may be potentially available, and one of printers may be designated as the default printer for the electronic device. When a user of the electronic device initiates a print job, the user may acknowledge selection of the default printer or scroll through a graphical user interface (GUI) to select another printer to handle the print job.
An electronic device (a physical machine, such as a desktop computer, a tablet computer, a smartphone, a laptop computer, for example) may have a number of installed printer drivers that correspond to printers that may be available for processing a print job for the electronic device. When the electronic device generates a print job, the electronic device may select a predesignated default printer irrespective of potentially many factors, which may affect which available printer is optimally the best choice for processing the print job. For example, the electronic device may be a mobile, or portable, electronic device, and as such, the location of the mobile device may be a factor in selecting the appropriate printer (i.e., the printers that are actually available for handling the print job may depend on the location of the printers and the location of the electronic device). As another example, selection of the appropriate printer may depend on the particular print job requirements (color palette, resolution, and so forth), and may be more optimally handled by an available printer other than a default printer. As yet another example, a printer that may be otherwise selected may be less desirable due to printer errors such as the printer currently being out of paper or toner, the printing operation being halted due to a paper jam, the printer having a relatively large number of pending print jobs in its print queue, and so forth.
Referring to
In general, the electronic device 120 executes one or multiple applications 124, and as a result of this execution, the electronic device 120 may produce content to be printed, thereby initiating a print job 130. In accordance with example implementations, the electronic device 120 selects a printer 140 to process the print job 130 based on criteria other than the printer 140 being merely designated as being the default printer 140 for the device 120. In particular, a printer selection engine 126 of the electronic device 120 ranks the printers 140 to, in accordance with example implementations, process the print job 130 based on criteria discussed herein, and the printer selection engine 126 selects one of the printers 140 to process the print job 130 based on this ranking. As discussed herein, the user may ultimately confirm or override the engine's selection of the printer 140. Regardless of the specific process, a printer 140 is ultimately selected to handle the print job 130 (such as printer 140-2 for the example of
The printer selection engine 126 ranks and selects the printers 140 based a number of criteria that identify whether a given printer 140 may be more suitable for handling a given print job 130 than another printer 140. For example, although connected to (i.e., in communication with) the electronic device 120, a given printer 140 may be disposed at a relatively far distance away from the electronic device 120 (and from the user of the electronic device). In this manner, by selecting the printer 140-1 (as an example), the user may walk up two floors to retrieve a printed document, as compared to walking down the hallway to retrieve a printed document from the printer 140-2. Therefore, based on distance alone, the printer selection engine 126 may rank the printer 140-2 ahead of the printer 140-1 for handling the print job 130.
As another example, a given printer 140 may be out of paper, out of toner, or, in general, be subject to an error that makes the printer 140 at least temporarily unavailable. Therefore, the printer selection engine 126 may at least temporarily assign a lower rank to this printer 140.
As another example, the print job 130 may be associated with printing a color document, but a given printer 140 may be a monochrome printer, or the given printer 140 may be a color printer but its color printing cartridge may be depleted. As such, the printer 140 may be at least temporarily be unable to handle a print job 130 directed to printing the color document; and as such, the printer selection engine 126 may assign a relatively low rank to this printer 140 or filter out the printer 140 as being a candidate for the print job 130.
As yet another example, a given printer 140 may be relatively close to the electronic device 120, capable of handling the specifics of the print job and online (i.e., not offline, or unavailable due to an error or fault). However, this printer 140 may have a relatively large workload (a relatively large number of pending print jobs or one or multiple relatively large print jobs), the printer's pages per minute (ppm) capability may be too low (i.e., the printer may be a low-end printer, relative to the printer job) or may be of the type that is inferior for the job (a slower inkjet printer versus a faster laser printer, for example). As such, a printer 140 that is farther away may be more suitable for handling the print job 130, and the printer selection engine 126 may rank these two printers 140 accordingly.
As examples, the electronic device 120 may be a relatively stationary device, such as a desktop computer, or the electronic device 120 may be a more mobile device, such as a laptop computer, a tablet computer, a smartphone, and so forth. As depicted in
In accordance with example implementations, the printer selection engine 126 is invoked, or triggered, by an application 124 initiating a print job 130. For example, a user of the electronic device 120 may select a “PRINT” button on a graphical user interface (GUI) of an application 124, to cause the application 124 to invoke the printer selection engine 126.
In response to being invoked, in accordance with example implementations, the printer selection engine 126 identifies candidate printers 140 for the print job 130; ranks, or prioritizes, the identified candidate printers 140; and presents the ranked printers 140 in a GUI on a display 122 of the electronic device 120. The printer selection engine 126 may then select the top ranked printer 140 so that the print job 130 may be routed to the selected printer 140.
Referring to
To identify the candidate active printers 140, the printer selection engine 126 may search through the Internet Protocol (IP) addresses of printers 140 whose printer drivers have been installed on the electronic device 120 of purposes of attempting to communicate with these printers 140 to determine whether the printers 140 are presently connected to the electronic device 120. For the case in which the location for the electronic device 120 is the device's current location, the printer selection engine 126 may identify candidate active printers 140 whose corresponding drivers have not been installed by communicating with nearby network devices (network devices in the same subnet as the electronic device 120, for example) to determine whether the devices are associated with printers and possibly retrieving information about any such printers. For the case in which the location for the electronic device 120 is the device's future location, the printer selection engine 126 may identify candidate active printers 140 whose corresponding drivers have not been installed by communicating with network devices near the future location (network devices in the same subnet as the future location of the electronic device, for example) to determine whether the devices are associated with printers and possibly retrieving information about any such printers.
In accordance with example implementations, the printer selection engine 140 may identify candidate active printers 140 based on one or multiple user preferences. For example, through a GUI interface of the electronic device 120, a user may store predetermined list(s) of printers 140 sorted according to locations for the device 120. In some implementations, the preferences may specify a potential list of printers 140 independent of the location for the electronic device 120. The printer selection engine 126 may then attempt to communicate with the printers 140 identified by the user preferences for purposes of determining which printers 140 are available, the statuses of these printers 140, and so forth.
Regardless of how the printers 140 are identified, pursuant to the technique 200, the printer selection engine 126 prioritizes (block 208) the identified active printers 140 based at least in part on a location for the electronic device 120 and statuses associated with the printers 140. In accordance with some implementations, the statuses may include, as examples, an error status indicating the printer is available or unavailable to print, a hardware error status indicating the printer is experiencing a hardware fault (the printer is out of toner, the printer has a paper jam, and so forth) or a status representing that the printer is experiencing a media fault (the printer is out of paper, for example).
The printer selection engine 126 may present the prioritized list through a GUI to the user so that the user may select the printer 140 to process the print job 130 according to rank. In accordance with some implementations, the printer selection engine 126 may automatically select the highest priority printer 140 (i.e., printer 140 having the highest rank) and allow a preset time for the user to confirm/override the selection until the printer selection engine 126 automatically proceeds to route the print job 130 to the selected printer 140.
As described herein, the printer selection engine 126 may also determine locations for the identified printers and use these locations for purposes of prioritizing the identified active printers. At the printer installation time, the location information of the printer may be programmed into the printer memory for retrieval as needed by query message from electronic devices. In accordance with example implementations, the updated printer location and configuration information may be stored in a cloud server, which can be easily accessed by the electronic device to know the present location of the printer from anywhere. Moreover, as further described herein, a printer may derive its location using information received by a global positioning satellite (GPS) radio of the printer.
As a more specific example, in accordance with some implementations, the printer selection engine 126 may perform a technique 300 that is depicted in
According to the technique 300, the printer selection engine 126 may also determine (block 310) one or multiple user preferences, determine (block 312) statuses associated with the candidate active printers of the filtered list and determine (block 316) wait times associated with the candidate active printers of the filtered list. In this context, a “wait time” associated with a printer refers to a time associated with completing the print job 130. As examples, in accordance with example implementations, the wait time associated with a printer may be based on the number of documents pending in the printer's queue, the page per minute (ppm) capacity of the printer, a combination of these factors, and so forth. The printer selection engine 126 may also determine (block 320) the proximity of each candidate active printer 140 of the filtered list to the given location for the electronic device 120. In this context, the “proximity” refers to a measure of how close the active printer 140 is to the given location, such as a physical distance separating the device 120 and the printer 140; a network distance (within the same network subnet, for example), a number of offices between the device 120 and the printer 140, a number of floors between the device 120 and the printer 140, and so forth. Pursuant to the technique 300, the printer selection engine 126 subsequently ranks the candidate active printers based at least in part on the determined user preference(s), statuses, wait times and proximities, and then selects the active printer 140 to process the print job 130 based at least in part on the ranking, pursuant to block 324.
As a more specific example, the location for the electronic device 120 may be the device's current physical location, and the printer selection engine 126 may identify three active printers 140 that are currently accessible to the electronic device 120 (i.e., printers 140 to which the device 126 may communicate). The three identified printers 140 may be located different physical distances from the electronic device's current location, and the printer selection engine 126 may display the following table in a GUI of the electronic device 120:
Thus, for this example, the printer selection engine 126 may select Printer #1, which is the closest available printer 140 that is connected to the electronic device 120 and is capable of handling the job requirements of the print job 130.
In accordance with example implementations, the location for the electronic device 120 may be the current, physical location of the device 120; and the printer selection engine 126 may perform a technique 400 that is depicted in
In accordance with some implementations, the electronic device 120 may have a relatively low energy radio, such as a Bluetooth radio (a radio compliant with the IEEE 802.15.1 standard, for example), which is associated with a relatively small distance communications (distances less than 10 meters, for example). The electronic device 120 may use such a low energy radio to determine physical proximities of nearby printers, as the strongest signal indicates the closest printer.
As noted above, the location for the electronic device 120 may be a location other than the current, physical location of the device. For example, in accordance with some implementations, the GUI provided by the user selection engine 126 may allow a user to select the location for the electronic device 120, such as the current physical location of the electronic device 120 or another future location for the device 120. For example, the electronic device 120 may be a mobile device, and the user may be traveling to home or the airport from the office. Therefore, via the appropriate setting of the printer selection engine 126, the user may configure the engine 126 to consider the location of the electronic device for printing purposes to be a future location of the user, such as the user's home, business, airport, meeting venue, or other location.
In accordance with further example implementations, the proximities between the location for the electronic device 120 and the candidate printer locations may be determined based on relative network locations. For example, referring to
Pursuant to block 432, the printer selection engine 126 may then determine (block 432) the proximities based on the network subnets. In this manner, the printer selection engine 126 may determine that one or multiple printers 140 of the candidate printers 140 are within the same subnet 120 for the electronic device 120, and so forth.
Referring to
For a wide variety of reasons, the print selection engine 126 may re-route a given print job 130 from the originally selected printer 140 and to another printer according to the priority order assigned by engine's ranking. For example, the first priority printer 140 may experience a media fault, the first priority printer may go offline due to an error, the first priority printer may take longer than a predefined user selected period for processing the print job 130, and so forth. Moreover, in accordance with example implementations, the user may direct the printer selection engine 126 to reroute the print job 130 to another printer 140.
Referring to
In accordance with further example implementations, the printer selection engine 126 may be constructed as a hardware component that is formed from dedicated hardware (one or more integrated circuits that contain logic that is configured to perform a graph inference algorithm). Thus, the printer selection engine 126 may take on one or many different forms and may be based on software and/or hardware, depending on the particular implementation.
Referring to
While the present techniques have been described with respect to a number of embodiments, it will be appreciated that numerous modifications and variations may be applicable therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the scope of the present techniques.