Device for the passive monitoring and reporting of printer-related data on USB cables
10645232 ยท 2020-05-05
Assignee
Inventors
- Daniel Doyle, SR. (Bellair, FL, US)
- Patrick Adesso (Tampa, FL, US)
- Jill Castillenti (Dade City, FL, US)
- Gideon Hecht (Tampa, FL, US)
- Brian Lauman (Clearwater, FL, US)
- Daniel Doyle, JR. (Bellair, FL, US)
- Alex Berndt Campbell (Tampa, FL, US)
- Marvin Scaff (Tampa, FL, US)
Cpc classification
G06F3/1229
PHYSICS
G06Q10/08
PHYSICS
H04N1/00323
ELECTRICITY
H04W84/18
ELECTRICITY
G06Q10/06
PHYSICS
G06F3/1204
PHYSICS
H04N1/00039
ELECTRICITY
Y02D10/00
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
G06F3/1207
PHYSICS
International classification
G06F3/12
PHYSICS
G06Q10/06
PHYSICS
H04W84/18
ELECTRICITY
G06Q10/08
PHYSICS
Abstract
Provided is a device for monitoring printer-related data on USB cables. The USB-compatible device comprises a first USB connector, a second USB connector, a processor, and a non-volatile memory. The device stores printer-related data, reports stored printer-related data to a server, and removes the stored printer-related data from the non-volatile memory.
Claims
1. A device for passively monitoring non-networked-printer data, the device comprising: a first USB connector, a second USB connector, a processor, and a non-volatile memory, the device configured to connect between a computer and a non-networked printer via the USB connectors, the processor configured to: analyze USB data packets having a pre-determined packet id; determine printer-related data from an analyzed USB data packet; store the printer-related data in the non-volatile memory; analyze the non-volatile memory for any non-reported printer-related data; report printer-related data stored in the non-volatile memory to a base station; flag in the non-volatile memory the reported printer-related data as reported; and remove all printer-related data that has been flagged as reported from the non-volatile memory.
2. The device as described in claim 1, wherein the first USB connector comprises a male USB connector.
3. The device as described in claim 1, wherein the second USB connector comprises a female USB connector.
4. The device as described in claim 1, wherein the predetermined packet id is a Token IN.
5. The device as described in claim 1, wherein determining printer-related data comprises analyzing a payload of the USB data packet for Printer Job Language commands.
6. The device as described in claim 1, wherein the predetermined packet id is a Token OUT.
7. The device as described in claim 1, wherein determining printer-related data comprises analyzing a payload of the USB data packet for Printer Control Language commands.
8. The device as described in claim 1 wherein the printer-related data is a page count.
9. A device for monitoring non-networked printer data, the device comprising: a first USB connector; a second USB connector, wherein the device is configured to connect between a computer and the non-networked printer; a communication interface; a processor; and a non-volatile memory, wherein the processor is configured to: analyze USB data; store printer-related data in the non-volatile memory; report stored printer-related data to a server using the communication interface; flag in the non-volatile memory the reported printer-related data as reported; and remove stored printer-related data that has been flagged.
10. The device as described in claim 9 wherein the communication interface is a radio interface.
11. The device as described in claim 9 wherein the communication interface is a mesh network interface.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) For a more complete understanding of the present disclosure and its advantages, reference is now made to the following descriptions, taken in conjunction with the accompanying drawings, in which:
(2)
(3)
(4)
(5)
(6) Similar reference numerals refer to similar parts throughout the several views of the drawings.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
(7) The present invention relates to a system and method for monitoring printer-related data on USB cables and relaying the data to a printer reporting system via a base station, wherein the monitoring is performed using hardware affixed to a USB cable. The various components of the present invention, and the manner in which they interrelate, are described in greater detail hereinafter.
(8) The computer-implemented method and system may include, but are not limited to, the following steps. It will be appreciated by one skilled in the art that the order of steps presented herein may be performed in a different order. It will also be appreciated by one skilled in the art that the method and system described herein for monitoring and reporting printer-related data may include all, some, or none of the steps described herein.
(9) Initially with reference to
(10) With continued reference to
(11) In one embodiment of the invention, and with continued reference to
(12) In an embodiment of the present disclosure, all USB data traffic between the workstation 2 and the non-networked printer 3 is monitored by the device 10. Specialized software on the device 10 parses the USB data traffic and looks up keywords that have particular meaning in connection with printing commands. See e.g.
(13) The device 10 is further configured to interrogate the non-network printer 3 for status or error information, without interrupting or interfering with the printing services. The device 10 can then transmit the information it has gathered, both through monitoring the USB data stream and querying the non-network printer 3, to the base station 4, preferably using a private network connection between the device 10 and the base station 4. In a preferred embodiment, the private network is a wireless Zigbee mesh network or WIFI. The base station 4 then reports this gathered information to a centralized server 7.
(14) Passive USB Monitoring
(15) As shown in
(16) 1. Token OUTIndicating whether the next data packet will be from the host to the device.
(17) 2. Token INIndicating whether the next data packet will be from the device to the host.
(18) 3. Data DATA0Indicating whether the data packet is even.
(19) 4. Data DATA1Indicating whether the data packet is odd.
(20) The token packets described above, as well as other relevant packet data, is used to determine the direction of data flow. If the direction is inbound to the workstation 2, the data packets that follow are assumed to be PJL (Printer Job Language) whereas, if the direction is outbound from the workstation 2, the data packets that follow are assumed to be PCL (Printer Control Language). The data packets are verified to be either PJL or PCL by parsing the string for @PJ for PJL and !R! for PCL. See
(21) Once the data packet is properly determined to be either PJL or PCL, the packet is then string searched to find data of interest in step 105. See also
(22) In a preferred embodiment, an internal lookup table or logic is maintained on the device 10 for storing strings of interest to be searched for. As mentioned above, this lookup table can be updated with a firmware update enabling the device 10 to monitor additional printers, or look for additional strings that were not initially installed on the device 10.
(23) In a preferred embodiment, the microcontroller in the device 10 programs the FPGA to look for certain strings in the USB data. It also programs the FPGA to capture a number of bytes following the string. The FPGA interrupts the microcontroller once the string has been captured with the additional bytes it was programmed to capture. The microcontroller then parses the data to obtain printer-related data. This printer-related data can include the number of pages printed, the size of the page, number of copies requested, whether printing was performed duplex, and whether the printing was color or mono.
(24) The microcontroller is preferably configured to run a state machine to determine what printer language is being used. The printer languages can be PJL, Postscript, PCL6, ZJS, and PCL5, or any other suitable printing language. The FPGA provides status to the microcontroller to assist the state machine in knowing when a print job has started and stopped and what printer language is running. The FPGA also provides other statuses for the purpose of counting pages. For PCL5, form feed counting is done in the FPGA. At the end of the PCL5 job, the number of form feeds (i.e. pages) is returned to the microcontroller.
(25) When the state machine recognizes that a printer-related command is being transmitted, the microcontroller performs a string search for certain pre-identified strings, wherein the pre-identified strings relate to printer-data. For example, the following strings may be searched for the respective printer languages:
(26) PJL Strings:
(27) SET QTY=
(28) RESULT=OK
(29) PAGES=
(30) LETTER
(31) LEGAL
(32) JISEXEC
(33) Postscript Strings:
(34) NumCopies
(35) /PageSize [
(36) Page:
(37) %%EndPageSetup
(38) %%Pages:
(39) (%%[LastPage]%%)
(40) %% EOF)
(41) PCL 6 Strings
(42) PrinterSubunit><dd:TotalImpressions>
(43) <dd:MonochromeImpressions>
(44) <dd:ColorImpressions>
(45) 1D
(46) j
(47) ZJS Strings
(48) TotalPagesPrinted=
(49) TotalMonochromePagesPrinted=
(50) TotalColorPagesPrinted=
(51) JZJ
(52) ZJZ
(53) PCL5 Strings
(54) esc & I
(55) esc & a
(56) Concerning the PCL 6 strings above, 1D is used to locate page copies, while j is used to determine whether the printing is performed in color or mono. With ZJS strings, JZJ indicates little endian for parsing purposes, while ZJZ indicates big endian. Concerning the PCL5 strings, esc & I determines the number of copies, eject page, and paper size, while esc & a indicates whether printing is performed duplex.
(57) With reference to
(58) It will be understood by those of skill in the art that flowcharts and block diagrams herein described may illustrate architecture, algorithms, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments. Therefore, it will be understood that each block in the flowchart or block diagram may represent a module, segment, or portion of code, which comprises one or more executable computer program instructions for implementing the specified logical function or functions. Further, some implementations may include the functions in the blocks occurring out of the order as herein presented. By way of non-limiting example, two blocks shown in succession may be executed substantially concurrently, or the blocks may at times be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and flowcharts, and combinations of blocks in the block diagram and flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer program instructions.
(59) The system includes one or more processing devices, which may be any computer processing unit, and could be a single central processing unit, or a number of processing units configured to operate either in sequence or in parallel. The processing device can be configured to execute software processes which implement the steps disclosed herein. The system may also include a memory capable of storing the steps necessary for a processing device to implement the steps disclosed herein. This memory could be in the form of memory resident within the processing device or in the form of standalone memory coupled to the processing unit via a communication path, such as a bus or a network.
(60) Although this disclosure has been described in terms of certain embodiments and generally associated methods, alterations and permutations of these embodiments and methods will be apparent to those skilled in the art. Accordingly, the above description of example embodiments does not constrain this disclosure. Other changes, substitutions, and alterations are also possible without departing from the spirit and scope of this disclosure.