In the drawings, identical reference numbers identify similar elements or acts. The sizes and relative positions of elements in the drawings are not necessarily drawn to scale. For example, the shapes of various elements and angles are not drawn to scale, and some of these elements are arbitrarily enlarged and positioned to improve drawing legibility. Further, the particular shapes of the elements as drawn, are not intended to convey any information regarding the actual shape of the particular elements, and have been solely selected for ease of recognition in the drawings.
In the following description, certain specific details are set forth in order to provide a thorough understanding of various disclosed embodiments. However, one skilled in the relevant art will recognize that embodiments may be practiced without one or more of these specific details, or with other methods, components, materials, etc. In other instances, well-known structures associated with printers, networks, and computing systems have not been shown or described in detail to avoid unnecessarily obscuring descriptions of the embodiments.
Unless the context requires otherwise, throughout the specification and claims which follow, the word “comprise” and variations thereof, such as, “comprises” and “comprising” are to be construed in an open, inclusive sense, that is as “including, but not limited to.”
Reference throughout this specification to “one embodiment”, “some embodiments” or “an embodiment” means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment. Thus, the appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
Non-storage, special-purpose devices may include, but are not limited to, barcode or other machine readable symbol printers, RFID encoders, ID card printers, check printers, magnetic card encoders, CD/DVD disc printers, ticket printers, date printers (such as printers that print expiration dates), lot number printers, plotters, rubber stamp makers, programmable keyboards, programmable foot pedals and LED message boards.
For ease of understanding, a barcode printer will be used as an illustrative special-purpose device but such should not be considered limiting.
The host computer 12 is connected to the special-purpose device 14 by cable 16 however in other embodiments the host computer 12 may be connected to the special-purpose device 14 in other manners such as over one or more of the illustrated networks.
The host computer may be running any operating system, for example, Windows®, MacOS®, UNIX, or Linux. The host computer may have software that allows remote access to its file system via a file server such as an FTP server or a SMB/CIFS server. In some embodiments, the file server may be a standard feature of the operating system distribution although in other embodiments third-party software may be used for remote file access.
The client computing systems 22 includes a CPU 60, I/O devices 64, memory 62, and storage 66. The client computing system may remotely access the logical file system on the host computer system 12. The special purpose device 14 may include a CPU 72, I/O devices 74, storage 70, and memory 68. In the memory 68 may be a number of applications 69 executing on the special-purpose device if the special-purpose device supports locally running applications.
It will be appreciated that the illustrated computing systems are merely illustrative and are not intended to limit the scope of the present invention. The host computing system 12 may be connected to other devices that are not illustrated, including through one or more networks for example the Internet or the Web. More generally, the various computing systems may each comprise any combination of hardware and software that can interact in the manners described, including computers, network devices, internet appliances, PDAs (“Personal Digital Assistants”), wireless phones, pagers, electronic organizers, television-based systems and other various consumer products that include inter-communication capabilities. In addition, the functionality provided by driver illustrated in
Alternatively, in other embodiments some or all of the software components may execute in memory on another device and communicate with an illustrated computing system or device via inter-computer communication. Some or all of the components or data structures may also be stored (e.g., as instructions or structured data) on a computer-readable medium, such as a hard disk, a memory, a network, or a portable article to be read by an appropriate drive. The components and data structures can also be transmitted as generated data signals (e.g., as part of a carrier wave) on a variety of computer-readable transmission mediums, including wireless-based and wired/cable-based mediums. Accordingly, the various embodiments may be practiced with other computer system configurations.
Generally, there are a number of default actions that may occur on the logical files and directories. For example, logical directories may not be created or deleted and if a program (other than the driver) tries to create or delete a logical directory, an error message be generated. As a second example, when directories are browsed, the driver may update the logical files in the directory based on the current state of the barcode printer. For example, when the Running directory is selected, the driver may determine what is currently running and automatically generate the corresponding logical files. In addition, when directories are formatted, generally the factory defaults are restored. By default, when using the operating system's file browser, the read operation on a logical file opens the logical file in the program associated with the file type of the logical file; user programs may also read the logical files as well in order to process the logical files.
If the barcode printer is capable of running one or more applications, the logical file system may have an applications directory. The Applications directory 76 contains one or more application files 82 capable of being run on the barcode printer and a Run subdirectory 78 containing the currently running application 80 or applications. Applications may, for example, compute/generate checksums or keep track of unique identifiers, such as serial numbers or lot numbers, that need to be printed. If the applications directory is formatted, the default applications are restored. On an attempted create or delete operation by the user for the Applications directory 76 or the Run subdirectory 78, a standard directory error is generated. If an application file is created or written in the applications directory, after checking the file format, the application is installed on the special-purpose device. If an application file is deleted from the logical file system, the application is deleted from the special-purpose device. A format operation on the Run sub-folder stops the currently executing applications. When an application file is placed into the Run subfolder 78, the application is executed on the special-purpose device and when the application file is deleted from the Run subdirectory 78, the application stops executing. In some embodiments, an application must be installed on the special-purpose device by placing the application file in the Applications directory 76 before the application may be run by placing the application file in the Run subdirectory.
The Barcode directory 84 contains all installed bar code symbologies and allows additional barcode symbologies to be installed. As barcode files 86 are added to the directory, each file is checked to make sure the file is of a legal file format and if so, the barcode is installed on the printer. If the barcode file is not of a legal format or the printer's memory is full, an error message is generated. If a barcode file 86 is deleted from the barcode directory 84, then the barcode symbology is removed from the printer.
The Fonts directory 92 contains font files 94 representing the fonts installed on the barcode printer and allows fonts to be installed or deleted on the barcode printer. As with the barcode directory, any files added to the directory are checked to make sure that they are of the right format before installing. Additionally, if the memory on the barcode printer is full, a standard error message will be generated.
The Image Buffer directory 96 may contain an image buffer file 98. When the directory is formatted, the image buffer file is removed. The one or more image buffer files 98 may be bitmap images of the currently printing or previously printed layout, or portions thereof. In one embodiment, the image buffer files are in the operating system's standard image format such as Windows Bitmap (i.e. *.bmp). Advantageously, since the file is in the standard image format for an operating system, the appropriate viewer or editor may be launched when the file in opened in the file browser. If a file is written to the image buffer and the image is of a known format, then the image is printed and the old image buffer file is replaced. In some embodiments, the image file may need to be written to the Images directory before being placed into the Image Buffer directory and printed.
The Images directory 100 contains images used in layouts. When an image file 102 is read, the file may be opened in the appropriate image viewer and/or editor on the host computer. When an image file is written to the Images directory 100, the image is installed on the printer. A delete operation removes the image from the printer. The images files may preferably be bitmap images.
The Layouts directory 104 contains all layouts. The Layout directory may contain a LayoutData 106, RFIDData 110 and Run 114 subdirectories and one or more layout files 118. A layout may be added by writing a layout file to the Layouts directory and may be removed by deleting the logical layout file. The Run subdirectory 114 contains the running layout file 116, if any. If the Run subdirectory 114 is formatted, the printer stops executing the current layout. In one embodiment, a new layout may be used if one of the layout files is copied to the running subdirectory 114 although in other embodiments the layout file may be written to the Run subdirectory without first being installed on the printer. By deleting the running layout file, current execution of the layout is stopped.
The LayoutData subdirectory 106 contains one or more data files used when printing a layout if required. The data files 108 may be written to the directory to supply information such as the serial number when the serial number is supplied by an application running on the host computer or a remote computer. If a necessary data file is removed, execution of the layout is stopped.
If the barcode printer can encode RFID data, an RFIDData subdirectory 110 may exist containing RFIDData files 112. The RFIDData subdirectory 110 contains data necessary or desirable for the currently running Layout. If the RFIDData subdirectory 110 is formatted and some RFID data is required by the layout, execution of the layout is stopped. Similarly, if RFID data is needed when a layout is printed on the barcode printer, then the execution of the layout is also stopped when the RFIDData file is removed. RFIDData files may supply data from an application running on the host computer or a remote computer.
The Running directory 126 contains the logical files that are currently running on the barcode printer. The logical files include the running layout file in the Run subdirectory 114 of the Layouts 104 directory and the one or more running application files in the Run subdirectory 78 of the Applications directory 76. The logical files may be copies of the running files or the logical files may be hard or soft links to the logical files in the Run subdirectories. In one embodiment, if a file is placed in the Running directory by a program, the logical file is copied to the corresponding Run subdirectory with the appropriate functionality carried out. If the directory is formatted, current execution of the one or more applications and the current layout is stopped. In one embodiment, the Running directory may also include the image buffer file 98 in the Image Buffer 96 directory.
The Upgrade directory 130 allows upgrades to the barcode printer's firmware once the firmware's legitimacy has been established. After a firmware file 132 is written to the upgrade directory, the legitimacy of the firmware file 132 may be determined by verifying a checksum or digital signature attached to the firmware file. In one embodiment, the upgrade directory 130 is hidden so that casual users cannot update the firmware. However, advantageously, a single IT administrator can deploy firmware updates organization-wide by mounting the logical file system associated with all the barcode printers in the organization.
It will be appreciated that the illustrated logical file system is merely exemplary and the logical file system may be structured in various manners in various embodiments. For example, the names of the individual directories or subdirectories may be different in other embodiments. In addition, the logical file system may be structured differently for different types of special-purpose devices.
In addition, in some embodiments, one or more of the logical directories may be password-protected or otherwise have access restricted via an access control list. Similarly, in some embodiments, file locking may be utilized to prevent multiple computers from interfering with each other. For instance, one computer may be prevented from adding something to the Run subdirectory that would interfere with another computer's print job. In addition, there may be one or more fonts or barcode symbologies that cannot be removed from the barcode printer.
The illustrated embodiment also illustrates optional directories and files such as directories containing native printer drivers, printer manuals and other documentation, which may not be available in other embodiments. The Driver directory 88 contains one or more driver files 90. The drivers may include traditional printer drivers or drivers for the logical file system for other operating systems. The Manual directory 120 has both manual files 122 and help files 124. The manual files may, for example, be PDFs (“Portable Document File”) and the help files may be the default help files for the operating system such as man pages for UNIX or CHM (“Compiled HTML Help”) files for Microsoft Windows®.
If the file operation was determined not to be a write or create operation at 178, then the routine continues to 180, where the routine determines if the file operation is delete. If the file operation is delete, then the routine removes the font at 182. After removing the font or if the file operation is not delete, the routine continues to 192, where the routine optionally performs additional processing. The additional processing may include logging the file access, perform file locking management, indicating a successful result and/or processing other file operations such as indicating file attributes or an execute operation. After optionally performing additional processing, at 194, the routine determines whether to continue. If so, the routine proceeds to 174 and if not returns.
The above description of illustrated embodiments, including what is described in the Abstract, is not intended to be exhaustive or to limit the various embodiments to the precise forms disclosed. Although specific embodiments of and examples are described herein for illustrative purposes, various equivalent modifications can be made without departing from the spirit and scope of the invention, as will be recognized by those skilled in the relevant art. The teachings provided herein can be applied to other systems and devices generally described above
For instance, the foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, schematics, and examples. Insofar as such block diagrams, schematics, and examples contain one or more functions and/or operations, it will be understood by those skilled in the art that each function and/or operation within such block diagrams, flowcharts, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof. In one embodiment, the present subject matter may be implemented via Application Specific Integrated Circuits (ASICs). However, those skilled in the art will recognize that the embodiments disclosed herein, in whole or in part, can be equivalently implemented in standard integrated circuits, as one or more computer programs running on one or more computers (e.g., as one or more programs running on one or more computer systems), as one or more programs running on one or more controllers (e.g., microcontrollers) as one or more programs running on one or more processors (e.g., microprocessors), as firmware, or as virtually any combination thereof, and that designing the circuitry and/or writing the code for the software and or firmware would be well within the skill of one of ordinary skill in the art in light of this disclosure.
In addition, those skilled in the art will appreciate that the mechanisms taught herein are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment applies equally regardless of the particular type of signal bearing media used to actually carry out the distribution. Examples of signal bearing media include, but are not limited to, the following: recordable type media such as floppy disks, hard disk drives, CD ROMs, digital tape, and computer memory; and transmission type media such as digital and analog communication links using TDM or IP based communication links (e.g., packet links).
The various embodiments described above can be combined to provide further embodiments. All of the U.S. patents, U.S. patent application publications, U.S. patent applications, foreign patents, foreign patent applications and non-patent publications referred to in this specification and/or listed in the Application Data Sheet, if any, are incorporated herein by reference, in their entirety. Aspects of the various embodiments can be modified, if necessary, to employ systems, circuits and concepts of the various patents, applications and publications to provide yet further embodiments.
These and other changes can be made in light of the above-detailed description. In general, in the following claims, the terms used should not be construed to limit the invention to the specific embodiments disclosed in the specification and the claims, but should be construed to include all systems and devices that operate in accordance with the claims. Accordingly, the invention is not limited by the disclosure, but instead its scope is to be determined entirely by the following claims.
Those skilled in the art will also appreciate that in some embodiments the functionality provided by the routines discussed above may be provided in alternative ways, such as being split among more routines or consolidated into fewer routines. Similarly, in some embodiments illustrated routines may provide more or less functionality than is described, such as when other illustrated routines instead lack or include such functionality respectively, or when the amount of functionality that is provided is altered. In addition, while various operations may be illustrated as being performed in a particular manner (e.g., in serial or in parallel) and/or in a particular order, those skilled in the art will appreciate that in other embodiments the operations may be performed in other orders and in other manners.
In addition, while certain aspects are presented below in certain claim forms, the inventors contemplate the various aspects in any available claim form. For example, while only some aspects may currently be recited as being embodied in a computer-readable medium, other aspects may likewise be so embodied.