1. Field of Art
The present invention generally relates to the field of printing. More particularly, the present invention relates to systems and methods for printing independent of location and using a universal print module. Still more particularly, the present invention relates to a print key for use in printing.
2. Description of the Related Art
In general, computing devices have become common place and are used in almost every environment such as office, home, public settings, library, hotels, restaurants, etc. The computing devices are often portable such as but not limited to laptop computers, notebook computers, netbook computers, smart phones and the like. Even for corporate portable computing devices, the portable computing devices are often used in multiple different office locations. When the portable computing devices are used at the base office for the user, the portable computing devices typically have a printer set up and installed so the user is able to print. However, when the portable computing device is use in one of the other offices, it typically does not have a printer set up for that location. This creates a problem because it is often difficult to print using one's portable computing device except when in one's base office.
While it is not impossible to be able to print at these other locations, it typically requires a significant amount of time and effort to configure one's computer to be able to print at such other office locations. For example, users often will ask colleagues to printed documents for them typically by transferring their file to their colleague using a USB flash drive rather than trying to configure their computing device to print. One particular problem is that in order to print on a specific printer, the print driver for that printer must be loaded and enabled on a computing device. Offices often include several printers of different makes and models, and thus, requiring different print drivers. Another problem in printing is connection of the portable computing device to the printer for interaction with each other because many networks have security that prevents such interaction.
The present invention includes systems and methods for printing independent of location and using a universal print module. In one embodiment, the present invention comprises a computing device having a print anywhere sending module and a printer having a print anywhere receiving module coupled by a network. The print anywhere sending module is adapted to interface with the computing device to generate a print file. The print anywhere sending module broadcasts the availability of a print file or job and transmits that print job to a responding print anywhere receiving module. The print anywhere receiving module interfaces with the printer to generate an output of the print file by the printer.
In another embodiment, the present invention comprises a print key having a printer interface module, a computing device interface module and a print queue module. The print key is preferably a USB flash drive and also includes a USB communication module. The print key is coupled to the computing device and receives and stores a print file for printing. The print key is then decoupled from the computing device and coupled to the printer. The print key includes a print key module adapted to interface with the printer and provide the store print file to the printer for printing.
The present invention also includes a variety of methods including a method for printing, a method for printing using a universal print module, and a method for printing using the print key.
The disclosed embodiments have other advantages and features which will be more readily apparent from the detailed description, the appended claims and the accompanying figures (or drawings).
Systems and methods for printing independent of location and using a universal print module. The figures (FIGS.) and the following description relate to preferred embodiments by way of illustration only. It should be noted that from the following discussion, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles of what is claimed.
Reference will now be made in detail to several embodiments, examples of which are illustrated in the accompanying figures. It is noted that wherever practicable similar or like reference numbers may be used in the figures and may indicate similar or like functionality. The figures depict embodiments of the disclosed system (or method) for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein.
As used herein any reference to “one embodiment,” “an embodiment,” or “some embodiments” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Some embodiments may be described using the expression “coupled” and “connected” along with their derivatives. It should be understood that these terms are not intended as synonyms for each other. For example, some embodiments may be described using the term “connected” to indicate that two or more elements are in direct physical or electrical contact with each other. In another example, some embodiments may be described using the term “coupled” to indicate that two or more elements are in direct physical or electrical contact. The term “coupled,” however, may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other. The embodiments are not limited in this context.
Also, some embodiments of the invention may be further divided into logical modules. One of ordinary skill in the art will understand that these modules can be implemented in hardware, firmware, and/or software. In one embodiment, the modules are implemented in form of computer instructions stored in a computer readable medium when executed by a processor cause the processor to implement the functionality of the module. Additionally, one of ordinary skill in the art will recognize that a computer or another machine with instructions to implement the functionality of one or more logical modules is not a general purpose computer. Instead, the machine is adapted to implement the functionality of a particular module. Moreover, the machine embodiment of the invention physically transforms the electrons representing the images in the document from one state to another in order to attain the desired format.
As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).
In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.
The computing device 102 is coupled communicatively to the network 104 by signal line 120. The computing device 102 can perform any variety of operations depending on its hardware, software and connectivity. The computing device 102 is a portable computer, a laptop computer, a notebook computer, a netbook computer, smart phone or similar computing device. The computing device 102 also includes a print anywhere sending module 108. The print anywhere sending module 108 is adapted to interface with the computing device 102 to present user interfaces, receive input, generates print files, generate and send notifications regarding print files and send print files. The print anywhere sending module 108 is described in more detail below with reference to
The printers 106A-N are communicatively coupled by a respective signal line 122a-n to the network 104. The printers 106A-N also include a print anywhere receiving module 110A-110N. The print anywhere receiving module 110 is described in more detail below with reference to
The print anywhere sending module 108 is adapted for communication, interaction and cooperation with the print anywhere receiving modules 110. In one embodiment, the print anywhere sending module 108 is software operating on the computing device 102 and may have any level of computing capability. The print anywhere receiving module 110 is any client software that is designed to perform a specific task and communicate using a method of the present invention. The print anywhere sending module 108 and print anywhere receiving modules 110 cooperate and communicate with each other to distribute print files, and generate and present user interfaces.
The print anywhere widget 202 is software and routines operable on a processor of the computing device 102 to perform the methods of the present invention. In other embodiments, the print anywhere widget 202 is a hardware device or module. The print anywhere widget 202 is associated with one or more print drivers 204. The print anywhere widget 202 is installed and operable on the computing device 102 and provides the following functions. The print anywhere widget 202 continuously polls the directory (see below) used by the print driver 204 for the presence of a print job. In particular, the print job is a print file with the file name “job.prn.” Once the print anywhere widget 202 has detected the presence of the print job, it continues to monitor the file to determine whether the printer driver 204 has finished writing out the print data. Once the print data driver 204 is finished with the file, the print anywhere widget 202 moves the file to a new uniquely named directory, e.g., job—1234452244. This allows the print driver 204 to begin processing another document and avoid a file name conflict with the named job.prn file. In one embodiment, the print anywhere widget 202 also changes the file name to human understandable name for the print job. In one embodiment, the print anywhere widget 202 open the job.prn file and searches the Printer Control Language (PCL) text for the job name field which includes the original name of the document. The extracted name is used as the human understandable name for the file. Once renamed, the print anywhere widget 202 sends a signal to the widget manager 206 along with the file name to register the file with the widget manager 206. Once registered, the widget manager 206 handles further processing of the print file.
The print driver 204 is software and routines that convert data to be printed into a format specific for printer. In one embodiment, the printer driver 204 is installed on the computing device 102 such that when a print operation is selected from any application operating on the computing device 102, a dialogue box is presented and the print driver 204 is one possible printing option. More specifically, the printer driver 204 is named “PrintAnywhere” and is just one selectable option among any other printers available to the computing device 102. In one embodiment, the print driver 204 is a production Printer Control Language (PCL) printer driver. In essence, the printer driver 204 creates a “virtual printer” to which the user may print a document. Once the printer driver 204 is installed on the computing device 102, rather than associating the print driver 204 with a single physical device, the present invention assigns the printer driver 204 to a special “port.” For the present invention, the port of the print driver 204 is set to point to a local directory on the computing device 102. For example, the port points to C:\RICOH\PrintAnywhere\job.prn. Thus, when the print driver 204 is used to create a print file, the print file is stored in the directory C:\RICOH\PrintAnywhere\ and the file is given a filename of job.prn.
The widget manager 206 is software and routines executable by a processor computing device 102. The widget manager 206 is adapted for and handles communication with one or more of the printers 106A-N, specifically their print anywhere receiving modules 110. The widget manager 206 also manages and maintains information about print anywhere receiving modules 110. For example, in one embodiment, the widget manager 206 keeps track of information about individual activations, including the IP address of the printers 106A-N that requested the activation, as well as any information the printers 106A-N may have supplied about alternate protocols it supports (e.g. for direct printing). The widget manager 206 manages the registration of the print anywhere receiving modules 110, a location at which the print anywhere receiving modules 110 can retrieve data, responses to requests from the print anywhere receiving modules 110 for information, and storage and management of information for the print anywhere receiving modules 110. The widget manager 206 also generates and sends advertisements that a print job is available. The widget manager 206 also interacts with the print anywhere receiving modules 110 to determine the print capabilities of their corresponding printer 106A-N. In one embodiment, the widget manager 206 uses software such as Bonjour by Apple Computer, Inc of Cupertino Calif. as a service discovery protocol for advertising the print job, exchanging service and parameters and other information. Furthermore, the widget manager 206 also removes print jobs from the directory of the print anywhere widget 202 once the print jobs have been printed and confirmation is received from the print anywhere receiving module 110.
The widget manager 302 is software and routines executable by a processor of the printer 106. The widget manager 302 is adapted for and handles communication with one or more computing devices 102, specifically their print anywhere sending modules 108. The widget manager 302 is also adapted for communication with the lightweight client 304. The widget manager 302 of the receiving module 110 is similar to and the counterpart of the widget manager 206 of the sending module 108. The widget manager 302 monitors for advertising messages indicating the availability of a print job. The widget manager 302 also communicates with the print anywhere sending module 108 to determine the required print capabilities for the print job. The widget manager 302 also interacts with the print anywhere sending module 108 to receive the information necessary to print the print job. For example, the widget manager 302 determines the location of the print job at the computing device 102 and copies the print file to the printer 106. The widget manager 302 also interacts with a lightweight client 304 and provides the lightweight client 304 with information such that the lightweight client 304 presents user interfaces on the printer 106, sends the print file to the print engine of the printer 106, and send a confirmation of printing and other information to the print anywhere sending module 108.
The lightweight client 304 is software and routines executable by the processor of the printer 106. The lightweight client 304 generates user interfaces such as the availability of the print anywhere widget. In one embodiment, the lightweight client 304 also interacts with the printer 106 to cause control buttons and the name of the print job to be displayed. In one embodiment, the lightweight client 304 is capable of displaying a plurality of print jobs from the same or different print anywhere sending module 108. In one embodiment, the lightweight client 304 interacts and controls the widget manager 302 such that when the lightweight client 304 receives selection of a document and a start command, the lightweight client 304 instructs the widget manager 302 to retrieve the print file from the corresponding computing device 102 and then the print file is sent to the print engine of the printer 106 for output. The lightweight client 304 is adapted for communication with the widget manager 302, the printer 106 and its components, and the print anywhere sending module 108.
Referring now to
In this embodiment, the printer 106 is a conventional type. The printer 106 is able to understand and process files in a PCL printing protocol. In one embodiment, the printer 106 is able to print color, or duplex. The printer 106 also includes a USB connection or network connection. In one embodiment, the printer 106 includes a USB port capable of receiving and communicating with the print key 402. In another embodiment, the printer 106 is coupled to a computer and display (not shown) of a conventional type. The display for is example is a touch screen display such as a Xenarc 7″ touch screen display to provide a small form factor touch screen UI for the printer 106. This allows the user to interact with the printer 106 without the need for a keyboard or mouse.
The computing device 102 is a conventional type such as that described above. In another embodiment, the computing device 102 is a Mac Mini, running OS X. In alternate embodiments, the computing device 102 is a personal computer running Windows XP professional OS. In either embodiment, the computing device 102 includes at least one open USB port capable of receiving and communicating with kinky 402.
The print key 402 is a storage device such as a USB flash drive. In one embodiment, the print key 402 is a standard USB memory stick. For example, the print key 402 is a memory stick of 512 MB. Storage capacity of the print key 402 can be greater or smaller, but this size was chosen to discourage people from walking off with the print key 402, and the other components of the print key 402 requires about 140 MB of space which leaves a “reasonable” amount of space to store print jobs on the memory stick (FOB). In one embodiment, the print key 402 has storage capacity to hold 10-20 print jobs.
Referring also now to
The printer interface module 404 is software and routines operable on a processor of the printer 106. The printer interface module 404 is adapted for communication with the print key module 408 and the printer 106. The printer interface module 404 allows the print key module 408 to perform operations on the printer 106 and input a print file to the printer 106.
The computing device interface module 406 is software and routines operable on a processor of the computing device 102. The computing device interface module 406 is adapted for communication with the computing device 102 and the print key module 408. The computing device interface module 406 allows the print key module 408 to perform operations on the computing device 102 including the generation of a print file and the presentation of user interfaces as will be described in more detail below.
The print key module 408 is software and routines operable on a processor of the computing device 102. The print key module 408 is coupled for communication with the computing device interface module 406 and the printer interface module 404. The print key module 408 generates a virtual printer on the computing device 102 to which is coupled and installs generic printer driver for that virtual printer. The print key module 408 also changes the default printer of the computing device 102 to the virtual printer. The print key module 408 also records the setting of the default printer prior to changing it such that after printing has been completed, the default printer of the computing device 102 can be reset back to its original setting. The print key module 408 also generates and presents user interfaces (as will be described below) to instruct the user how to print documents using the print key. Finally, the print key module 408 controls the computing device 102 to copy a print file generated by the printer driver to the print key 402. In one embodiment, the print key module 408 includes an installer, a printer driver and other routines for communicating with the printer 106 and the operating system of the computing device 102.
The operation of the print key 402 can be better understood with reference to
Typically, to prevent malware that has been accidentally put onto a USB flash drive from running, most operating systems will not run software automatically from a USB flash drive (CD's can still do this, as you often see an installation script start up when you first insert a CD into your system). Fortunately, it is possible to ask the user if it is ok to install something when a USB flash drive, e.g., the print key 402, is inserted. In one embodiment, the print key 402 includes an autorun.ini file (standard Windows XP way) that starts the installation process once the user approves the installation.
The installer of the print key module 408 first creates a port on a client of the computing device 102. This port (e.g., PrintKeyPort) is a standard LPR port, using the lp print queue. Once the port is created, the print key module 408 creates a new virtual printer, referred to as PrintKey, and provides the printer driver for that virtual printer. The print key module 408 also assigns the new virtual printer to use the newly created port. The present invention advantageously uses a port and virtual printer combination to remove any dependencies on how a computing device 102 is configured. If the invention relies upon a default port, (say LPT1 or COM1), they might not exist or already be in use. By creating a new port, the present invention avoids these issues. In one embodiment, the printer driver is a very basic PCL6 printer driver. Unlike typical printer drivers, which spool their output to the printer they are pointed to, the printer driver of the present invention outputs its results to a file. The print key print driver is a very simplified version of “print to file,” where the file name and destination are fixed. In one embodiment of the present invention, the printer driver emits the file C:\Ricoh\printjob.prn. The present invention advantageously frees the user from having to know what printer to select to successfully print via the print key 402 by setting the default printer to our newly created virtual PrintKey printer. Because the virtual printer is a transient device (i.e., it will “go away” when the print key 402 is removed), print key module 408 needs to remember what the user's previous default printer was, and restore it when the print key 402 is removed.
In order to provide the user with a “widget like” experience, the present invention includes a small application that runs on the computing device 102. To keep the installation and footprint of the present invention as small as possible, the application runs off the print key 402. In this way, the application does not need to be “installed” on the computing device 102. Also, it makes the process of uninstalling the print key application simple, since when the user removes the print key 402 (e.g., the USB flash drive), the software is physically uninstalled. In one embodiment, the Print Key application of the present invention provides the user with a visual indication that the print key application is running. One example of such a visual indication is shown in
Since the print driver creates a file (c:\Ricoh\printjob.prn) each time the user prints a document, the print key module 408 monitors the location to which the print driver writes to detect the creation and completion of a file. Since the print key applications not receive any secret is Asian signal indicating when the print driver is finished writing to the file, the print key module 408 continuously polls the location to which the print driver writes. This is important because: 1) the print key module 408 must move the *.prn file to the print key 402 (USB storage) as soon as possible—so the user can remove the USB drive and take it to the printer; and 2) The user may try to print another document which would overwrite the file they just printed. In one embodiment, the print key module 408 has a polling thread that is watching the c:\Ricoh directory for *.prn files. Once a file is created, the thread watches the file size. If the file size is increasing, it continues to wait. Once the file size has stabilized for a period of time (currently 1.5 seconds), the print key module 408 moves the file out of the c:\Ricoh directory and onto the USB flash drive. As a side note, knowing what the drive letter is for the print key 402 isn't obvious. To figure this out, when the Print Key application launches, it scans all the mounted drives, looking for a PrintKey.Readme.txt file at the root of each drive. The present invention assumes that only the print key 402 will have this file. Once the file has been found, the print key application can get what the drive letter is, and know what drive to put the *.prn files as they get created.
Once the files have been printed to the print key 402, the user removes the print key 402 from the computing device 102. This is shown in
The process continues with the user inserting the print key 402 into the printer 106 or the computer (not shown) connected to the printer 106. A transition from
When the user approaches the printer 106, they are greeted with a screen telling them to grab the print key 402 to get started, or insert the print key 402 to start printing. The present invention includes software, referred to as a print key provider, that is running and monitoring for the removal of the print key 402 or the insertion of the new print key 402. Once the user inserts the print key 402, the provider: 1) validates that the USB device inserted is a valid print key 402; 2) looks in a specific directory of the print key 402 for *.prn files; and 3) presented to the user a user interface to print all documents found on the print key 402. The validation process is fairly simple. The present invention reads the USB Drive and searches for certain files to exist. If those files do not exist, the display presents a message that instructs the user that the printer 106 only support Print Keys. In one embodiment the print key provider offers to turn their USB drive into a print key 402. Once the USB Drive has been validated as a print key 402, the print key provider collects the *.prn files from the drive. The print key provider application (and PC) is configured to be able to print to the connected printer (we've installed the correct drivers etc). To get the documents to print, we simply pass (spool) the *.prn files to the default printer, and they print out. Once the documents have been printed, the print key 402 is initialized so that it will be ready for the next user. In one embodiment, the application removes all the *.prn files the user wanted to print. In another embodiment, the entire USB flash drive is erased and a fresh version of the Print Key software is copied on it. Once the Print Key has been cleaned, the UI returns the user to the landing page.
Referring now to
Next, the method determines 708 the resources of the source computing device 102, and selects 710 a transfer method. These steps are optional to the method and therefore are shown with dashed lines in
After either step 710 or step 706, the method proceeds to transfer 712 the print file to the printer 106. In one embodiment, this is done by advertising the ability of the print job and sending the print file over the network 104 to the printer 106 in response to a request. In another embodiment, this is done by transferring the print file from the computing device 102 to print key 402, removing the print key 402 from the computing device 102 and inserting it into the printer 106.
Next, the processing of the present invention continues at the printer 106. The printer 106 detects 714 the availability of the print file. Again in one embodiment, the availability of the print file is detected once the print key 402 is inserted into the USB port of the printer 106. In another embodiment, the availability of the print file is detected once an advertisement from the computing device 102 has been received. Next the application of the present invention operable on the printer 106 retrieves the print file from either the computing device 102 or the print key 402. The print file is then sent 716 to the print engine of the printer 106. The print engine generates and outputs 718 a printed document based upon the print file, and the method is complete and ends.
Referring now to
The method continues when a widget manager 302 of a print anywhere receiving module 110 detects and accepts 812 the advertisement sent by the widget manager 206 of the print anywhere sending module 108. The widget manager 302 then transfers 814 the PCL file from the source computing device 102 to the printer 106. The widget manager 302 then sends 816 the PCL file to the print engine of the printer 106. The print engine generates and outputs 818 the print a document and a method is complete and ends.
Referring now to
The foregoing description of the embodiments of the present invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the present invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the present invention be limited not by this detailed description, but rather by the claims of this application. As will be understood by those familiar with the art, the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the present invention or its features may have different names, divisions and/or formats. Furthermore, as will be apparent to one of ordinary skill in the relevant art, the modules, routines, features, attributes, methodologies and other aspects of the present invention can be implemented as software, hardware, firmware or any combination of the three. Also, wherever a component, an example of which is a module, of the present invention is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future to those of ordinary skill in the art of computer programming. Additionally, the present invention is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the present invention, which is set forth in the following claims.
This application claims priority under 35 USC §119(e) to U.S. provisional patent application Ser. No. 61/161,712, filed Mar. 19, 2009, entitled “Print Key” which is incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61161712 | Mar 2009 | US |