<<

Europaisches Patentamt J European Patent Office 0y Publication number: 0 441 032 A2 Office europeen des brevets

EUROPEAN PATENT APPLICATION

© Application number: 90312783.5 @) mt. ci.5: G06F 3/023

® Date of filing: 23.11.90

The title of the invention has been amended Mail Stop 20 B-O, 3000 Hanover Street (Guidelines for Examination in the EPO, A-lll, Palo Alto, California 94304(US) 7.3). (§) Inventor: Poland, McKee D. © Priority: 29.12.89 US 458955 302 Portola Road Portola Valley, California 94028(US) @ Date of publication of application: 14.08.91 Bulletin 91/33

0 Representative: Colgan, Stephen James et al ® Designated Contracting States: DE FR GB IT CARPMAELS & RANSFORD 43 Bloomsbury Square @ Applicant: Hewlett-Packard Company London WC1A 2RA(GB)

Keyboard emulation system.

© The system unit (16) of an IBM compatible per- operation. The successful collection of encoded sonal computer generates a distinctive audible character data and transmission of that data to the "Beep" from the system unit's own sound keyboard port (28) of a host computer by a relatively transducer (32) in response to the successful de- unsophisticated operator is further enhanced by code of a barcode label (26) in a keyboard emulation built-in logic (40,42,44) for reliably and simply de- data collection device such as a barcode reader ducing which keyboard communication protocol from (10). To initiate the generation of such a Beep by the several candidates is currently in use and for deduc- system unit, the keyboard emulation system simu- ing the status of the computer's flag by lates (114,116) a benign error condition (OOH;FFH) eliciting a Reset Status Indicators command from the which does not affect the operation of any applica- system unit. If the Caps Lock flag is in its shifted tion programs resident in the system unit and which state, all case sensitive data is automatically trans- does not require any modifications to the operating posed (114) so that it will be correctly interpreted. system or any special device drivers for its proper

(M CO

Q_ Lll

Rank Xerox (UK) Business Services EP 0 441 032 A2

KEYBOARD EMULATION SYSTEM HAVING IMPROVED OPERATOR INTERFACE

Field of Invention (typically associated with the IBM PC XT) and " 2" (typically associated with the IBM PC AT The present invention relates to a keyboard and the IBM PS/2). emulator type of data collection device, and more The system unit's software particularly to improvements in the operator inter- 5 and hardware, typically including Basic Input Out- face thereof whereby the operator is assured of the put System (BIOS) firmware provided by the com- successful collection of encoded character data puter manufacturer, then converts the keyscan and transmission of that data to the keyboard port code signal appearing at the keyboard port into a of a host computer even if the operator is not corresponding sequence of character codes and/or viewing the decoded data as it is processed by the w status flags in a form usable by the application computer. programs. In particular, a keyboard I/O driver (or a special purpose driver included as part of a particu- Background of the Invention lar application program) handles the "hand-shake" protocol used to transfer keyscan data from the A keyboard is an example of a manual data 75 keyboard unit to the computer, defines which keys collection device for a computer system. Typically, are given the attributes of typematic, shift, toggle, an operator depresses keys similar to those of a and/or control, and updates one or more shift state or an adding machine, and the individual flags used to process the next incoming keyscan keystrokes are sequentially converted by built-in code. The actual code and protocol used will de- switches and logic circuitry within the keyboard unit 20 pend on the type of computer: The most common into a sequence of keyscan codes, each corre- types of keyboards are the 84 key keyboard typi- sponding to the actuation of a key on the keyboard. cally used with the IBM PC XT (Code 1) and the The sequence of keyscan codes is thereafter con- "enhanced" 101/102 key keyboard typically asso- verted into a corresponding sequence of alphanu- ciated with the IBM PC AT (Code 2). These two meric (eg, A-Z, a-z, 0-9), symbol (eg, !, @, #, $, %) 25 computer types are normally associated respec- and/or function (eg, [enter], [], etc) char- tively with the two aforementioned protocols (Mode acter codes. A commonly used set of such char- 1 and Mode 2); however, as exemplified by certain acter codes is the 7-bit ASCII (American Standard of the IBM PS/2 personal computers, it is also Code for Information Interchange) code, which also possible to use a Code 1 code set with a Mode 2 exists in various "extended" 8-bit versions. 30 protocol, although most PS/2 models use the Mode In many small computer systems, including the 2/Code 2 combination. (In fact, the IBM PS/2 sys- ubiquitous "IBM-compatible personal computer", a tem units are typically programmed to accommo- keyboard unit transmits keyscan codes to a system date both the Code 1 and the Code 2 keyscan unit via a keyboard port, and the system unit code sets, as well with a third keyscan code set, converts the keyscan codes to character codes 35 known as "Code 3"). which serve as input data to various user-oriented When using such an arrangement of keyboard applications programs. Two sets of such keyscan unit and system unit, the operator may press and codes are in common use, a "Code 1" code set release the keys faster than the corresponding typically associated with the original IBM PC and keyscan codes can be read (and processed into characterized by only 10 function keys and an 40 character codes) by the system unit. If the rate at integrated numeric/ keypad, and a "Code 2" which keyscan codes are entered into the keyboard code set associated with the IBM AT and char- buffer exceeds the rate at which the keyscan codes acterized by 12 function keys and dedicated cursor are removed from the buffer for transmission, the keys. result will be a "keyboard buffer overflow" con- In such a system, a programmed microproces- 45 dition, which is signified to the system unit of IBM sor inside the keyboard unit performs a number of compatible computers by a special keyscan code. functions, including self-test, scans the individual The system unit BIOS reacts to this special keys to determine their respective states, gener- keyscan code by executing a "Beep" routine, ates a keyscan code each time one of the keys which activates a small loudspeaker or other sound changes state ("make" or "break"), stores up to 16 so transducer inside the system unit, and thus pro- keyscan codes in a buffer, and transfers each vides the operator with an audible warning. A simi- keyscan code from the buffer to the system unit in lar situation will also be true for the keyboards accordance with a defined hand-shake protocol. connected not directly to a system unit, but rather Two such IBM compatible protocols are in common to a terminal connected to a remote host computer, use, which will be referred to herein as "Mode 1" in which case either the remote computer or built EP 0 441 032 A2 in logic within the terminal will detect a benign from another type of data collection device, it is keyboard error condition and cause a sound trans- preferable to provide the operator with visual and/or ducer inside the terminal to generate a distinctive audible feedback. One example of such feedback Beep. It should be noted that the keyboard buffer is the display of the characters on the computer's overflow condition is "benign" in the sense that it 5 video monitor as they are being input from the has no adverse influence on the operation of the keyboard. In addition, keyboard units are frequently computer system unit (or ), and provided with mechanical or electrical means to the normal operation of the computer continues, generate an audible "click" each time a key is but accompanied by an audible signal which alerts depressed, which provides an audible form of oper- the operator to a possible corruption of input data w ator feedback. In the case of ASCII data which is from the keyboard. input via a serial port, appropriate operator feed- Other data collection devices usable with com- back is sometimes provided by means of a special puter systems and computer terminals include con- software driver or application program that pro- tact barcode readers, non-contact (e.g. laser) bar- duces the desired feedback when it detects trans- code readers, magnetic stripe readers, electrical 75 mission of ASCII data. multimeters, OCR scanners, and electronic weigh- Although the ASCII character set includes a ing scales. "Bell" character (ASCII OOTio) which typically To accommodate these other types of data causes the MS-DOS operating system to generate input devices (as well as variety of other input and a Beep (using the computer's built-in sound trans- output devices) a small computer typically is also 20 ducer) if echoed to the display device, many soft- provided with a serial port and the necessary soft- ware programs either ignore the or ware and hardware to read and write ASCII data to treat it as just another displayable symbol ( 0 or and from the serial port. ~G). Using a special driver or application program A keyboard emulation device may be defined with a keyboard emulation device is especially as a data collection device which transmits data to 25 undesirable because it defeats its primary advan- a computer as keyscan codes through the com- tage, which is software transparency. Rather than puter's keyboard I/O port, but which obtains the relying on special application programs and/or de- data from a source other than actuation of physical vice drivers (with their attendant potential incom- keys on a keyboard unit by an operator. It trans- patibility problems) to properly interpret a special lates the data it collects into a format acceptable to 30 as audible feedback, it has thus the computer operating system and transmits the become common to provide data collection devices data through the keyboard port according to the (other than keyboards) with a dedicated sound tran- standard protocol for the keyboard I/O channel. sducer to provide audible feedback each time the created for use with man- input device is activated by the operator and com- ual keyboard input will thus also work with a key- 35 pletes a successful operation (such as reading a board emulator type of data collection device with- barcode or other machine readable data compati- out any modifications to either the application pro- ble with the device). In the case of a data collection gram or the computer operating system. The key- device that is intended for use with the serial port board emulator can complement or replace the of the system unit, this may be accomplished by keyboard unit for a given application, allowing effi- 40 means of an optional module between the data cient data entry. Normally, the keyboard emulator collection device and the computer's serial input, physically connects between the existing keyboard which is designed to monitor the data line from the unit and computer, allowing the keyboard unit to input device and produces an audible tone when- remain active in the system, but inserting its own ever data is being transmitted. data into the I/O channel when data collection oc- 45 Prior art keyboard emulation systems often curs, which may be termed a "T-connector" Mode. employed a sound transducer to provide audible A "Keyboard Replacement" Mode is also possible, feedback to the user or operator in the form of a wherein the keyboard emulator is the only device beeper module. The beeper module was designed connected to a particular keyboard port and takes as an integral part of the keyboard emulation sys- over responsibility for all functions at that port. A 50 tern; however, it added cost and bulk to the sys- particularly important category of keyboard emula- tem, resulted in a product that was inconvenient to tion devices, at least from a commercial point of hold and/or utilized a separate chassis for the elec- view, are devices which may be plugged directly tronics (which was less desirable from an er- into the keyboard port of an "IBM-PC compatible" gonomic point of view), and, since openings in the personal computer without any modifications to the 55 system package are needed to allow the sound to system unit or to any of software used therewith. escape efficiently, compromised the mechanical in- Regardless of whether the data originates from tegrity and sealing of the keyboard emulation sys- a keyboard, from a keyboard emulation device, or tem. EP 0 441 032 A2

When inputting data both from the keyboard signify one of two keyboard errors to BIOS: the and from the data collection device using barcode overflow of the keyboard unit's internal buffer or a data in accordance with a symbology (such as key detection error. Standard versions of BIOS Code 128) that has distinct representations for up- respond by simply discarding the error keyscan per and lower case alphabets, it is necessary to 5 code and generating a Beep, and thus the error is verify that any "Caps Lock" key on the associated "benign" in so far as it has no effect on the normal keyboard had not been left in its "on" state before operation of the computer or on any application data was transmitted by the keyboard emulator to program. The sound of such a Beep and the firm- the computer. The operator could accomplish this ware and hardware actually used to generate it by visually examining a "Caps Lock" indicator on w may vary amongst models of PC's, but, by the the keyboard or computer screen or by visually very definition of "IBM compatible" the action tak- examining the input data as displayed on the com- en by the computer's BIOS is consistent. The puter screen. Alternatively, some data collection keyboard emulator system thus is able to provide devices were able to compensate for a set shift the operator with an audible confirmation of a suc- state flag automatically, presumably by monitoring 75 cessful data collection operation by merely simulat- all transmissions from the keyboard for Caps Lock ing an error in the input process to which the and/or Shift keyscan codes, from which it would system responds by sounding a Beep to alert the then be possible to deduce the current state of the operator to an input error condition that normally shift state flag; however, such an "open loop" would require operator attention. Moreover, since solution was inherently unreliable and interfered 20 the system unit already includes the necessary with the optimal utilization of the emulator's pro- sound transducer hardware and firmware to alert cessing capacity. the operator in the event such an error occurs, a keyboard emulator system constructed in accor- Summary of the Invention dance with the teachings of the present invention 25 no longer needs its own dedicated sound trans- A presently preferred embodiment of the inven- ducer and associated drivers to provide the oper- tion consists of a method and related apparatus for ator with audible confirmation of a successful read; scanning a barcode symbol into a legal sequence for the great majority of application programs, this of bars and spaces that may be decoded into a is accomplished regardless of what application pro- valid sequence of character codes and transmitted 30 grams are actually running and without any modi- as a sequence of keyscan codes in such a way fication to the system unit or any of its operating that the keyscan code sequence will be properly system software. decoded by the computer back into the same valid In one particular embodiment, the keyboard sequence of character codes represented by the emulator is adapted to interpret specially encoded originally scanned barcode symbol, without requir- 35 bar codes printed in a standard symbology such as ing the operator to visually examine the data as it Code 128, such that sequences of characters with- is processed by the computer. in the symbology are mapped to keyscan codes, In accordance with a first aspect of the inven- including the above-mentioned error keyscan code. tion, the computer's system unit generates a dis- Since the decoded information is transmitted to the tinctive audible signal from the system unit's own 40 system unit only if it has been successfully read sound transducer in response to the successful and decoded, it is merely necessary to add the decode of a barcode label in a keyboard emulation particular keyscan code signifying a keyboard error barcode reader. To initiate the generation of such a on the label which will be scanned by the data Beep by the system unit, the keyboard emulation entry device in order to provide the operator with system simulates an error condition which does not 45 audible confirmation each time the label is suc- affect the operation of any application programs cessfully read during a subsequent data collection and which does not require any modifications to operation. the operating system or any special device drivers In another embodiment having more general for its proper operation. applicability, the keyboard emulator system assem- In the particular case of IBM-compatible per- 50 bles the successfully collected data into a message sonal computers, there are typically two special which additionally incorporates the special keyscan keyscan codes for indicating a benign error con- code, for example, in a header that is attached at dition that will initiate the generation of the desired the beginning of each transmission of data to the Beep, but not otherwise interfere with the com- system unit. In this case, no special decoding and puter's normal processing of data: OOH and FFH 55 conversion of barcode data to keyscan codes is (the H signifies a number in hexadecimal notation). necessary. The special keyscan code is merely These particular keyscan codes do not actually appended as the decoded barcode ASCII char- correspond to keys on the IBM keyboard, but may acters are converted to a stream of keyscan codes. EP 0 441 032 A2

In accordance with a second but related aspect of the invention in the form of a wand shaped self- of the invention, when used with an IBM PC AT or contained barcode scanning unit 10 which has a other IBM Mode 2 compatible system unit, the cable 12 terminated by a T-connector 14 for inter- keyboard emulator uses the IBM compatible Mode facing the wand with the computer's system unit 16 2 protocol "Reset Status Indicators" command to 5 and its keyboard unit 18 via cable 20. obtain current keyboard status information main- The wand 10 preferably is about 160 mm long tained by the system unit, including the state of the and about 23 mm in diameter, and is shaped so as Caps Lock flag, so that if necessary that flag may to be conveniently held in one hand of an operator. be reset to a predetermined "off" state prior to At the end 22 remote from the cable 12, there is transmitting any keyscan codes; alternatively the 10 provided a transparent 24 which is slid keyscan codes may be "preshifted" before trans- across the label 26 bearing the code which is to be mission. As a result, there is no need for the read. The wand 10 transmits data to the com- operator to visually verify that the character data puter's system unit 16 only after a barcode 26 has from the keyboard emulator have not been inadver- been scanned, and provides an otherwise transpar- tently shifted by the computer's operating system 15 ent interface between the computer's keyboard and before being made available to any resident ap- system units. The aforementioned Keyboard Re- plication program. placement mode is a possible alternate for the T- Preferably, the keyboard emulator includes Connector mode shown in Fig.1; in that case no means for automatically detecting when a particular keyboard unit 18 is plugged into the T-connector keyboard communication protocol is in use (for 20 14 and only the wand 10 is thus connected to the example Mode 2 protocol used by the IBM PC AT keyboard port 28 of the system unit 16. and IBM PS/2), and, unless a specific protocol has Referring to Fig. 2, which is a block diagram of been preconfigured by the user, uses that informa- the major components shown in Fig. 1 , it should be tion to establish how the scan data is to be trans- noted that the keyboard unit 18 is unchanged from lated and transmitted to the computer and/or if and 25 what is conventionally used with the a typical small how to determine the current keyboard status in- computer such as an IBM PC-compatible personal formation maintained by the computer. computer and the keyboard unit is thus repre- sented in simple block form. The same is true for Drawings the computer system unit 16; however, a keyscan 30 conversion means 30 (for example, ROM-BIOS in- These and other features and advantages of terrupt 16 service routine) and a keyboard buffer the present invention will be appreciated as the overflow means (for example, error entry point K62 same becomes better understood by reference to and associated loudspeaker or other sound trans- the following detailed description when considered ducer 32) have been separately shown, since the in connection the accompanying drawings, wherein: 35 functional and structural relationship of these other- ' FIG. 1 shows a presently preferred embodi- wise conventional components with the various ment of the invention in actual use with a components internal to the keyboard emulation barcode reader as its data collection device; system 10 is an important aspect of the invention. * Fig. 2 is a block diagram of the major compo- The wand 10 is a derivative of a barcode nents shown in Fig. 1 ; 40 reader sold by Hewlett Packard under the trade- * Fig. 3 is a circuit diagram of the switching mark SmartWand and documented in various circuitry for temporarily isolating the commu- Hewlett Packard publications, including the "HP nications module shown in block form in Fig. SmartWand Programmable Contact Bar Code 2 from any attached keyboard; Reader Technical Data Sheet" dated January 1988 * Fig. 4 is a flow diagram of the operation of 45 and the "HP SmartWand Users Manual for HBCR- the communication module during initializa- 8XXX Series" dated July 1987. Wand 10 com- tion; prises a conventional optoelectronic sensor head * Figs. 5A and 5B respectively are flow dia- 34 which may used to scan various types of bar- grams of the operation of the communication codes, including Code 39, Extended Code 39, In- module following a successful or unsuccess- 50 terleaved 2 of 5, UPC/EAN/JAN, Codabar, Code ful scan attempt by the barcode reader; and 128, Code 11, and MSI Code. The wand 10 also * Fig. 6 is a flow diagram of the emulation of comprises an Intel 8051 family (or equivalent) upper and lower case characters when using microcontroller 36 operating under the control of a a Mode 2 keyboard protocol. time interval acquisition module 38, a number of 55 decoding modules 40, a code-converting module Detailed Description 42, and an initialization/communication module 44. The various modules are in the form of firmware Fig. 1 shows a presently preferred embodiment fixed in a ROM; non-volatile memory 46 is used to EP 0 441 032 A2 10 store configuration data; a temporary store 48 is corresponding IBM publication number is also provided for the data being processed by the 1502494). above mentioned modules. Wand 10 transmits keyscan codes and uses a The digital microcontroller 36 is interfaced to computer to keyboard protocol so that it may inter- the optoelectronic sensor head 34 via a conven- 5 face directly to its system unit 16 via the com- tional threshold detector circuit 50; microcontroller puter's keyboard port 28; the referenced prior art 36 is also interfaced to the signals present on cable device outputs ASCII character codes and utilizes a 12 and T-connector 14 via an appropriate switcha- standard serial protocol and thus must be con- ble electrical interface 52, as will be described in nected to a general-purpose serial I/O port (not more detail hereinafter with respect to Fig. 3. More- w shown). Accordingly, it differs from that particular over, the above mentioned electronic and electro- prior art device primarily in the construction and optical components and subsystems inside the operation of its code converting module 42 and its wand 10 all draw their power from the system unit communication module 44 and related interface 16 via the cable 12 and the T-connector 14. circuitry 52. Referring to Fig. 3, it may be seen that the 75 Preferably, wand 10 can be configured for at- switching interface circuitry 52 between the micro- tachment either to an IBM PC (Code 1, Mode 1) or controller 36 and the T-connector 14 comprises a to IBM PC AT (Code 2, Mode 2) or to IBM PS/2 pair of analog switches 54a, 54b which are driven (Codes 1 , 2, or 3; Mode 2) keyboard port, and can by a common control signal SWITCH. When also be configured to share the port with the key- SWITCH is high, the two switches 54a and 54b are 20 board unit, or to operate without any keyboard unit. closed and the CLOCK and DATA lines from the Because of the small size of the wand, it is not keyboard port 28 and from the microcontroller 36 convenient to provide it with manual configuration are directly connected to the keyboard unit 18; switches or buttons; however, manual configuration conversely, when SWITCH is low, the keyboard 18 is still possible by the same Barcode Menu Pro- is isolated from the system unit 16 and the micro- 25 gramming technique used in the above-referenced controller 36. For some applications, it may be SmartWand device. Alternatively, by monitoring the desirable to not only isolate the keyboard 18 from commands from the computer at power on and the the system unit 1 6 during transmission of data from responses from the keyboard unit, the wand can the microcontroller 36, but also to prevent any usually determine which protocol (Mode) and which possible loss of data from the keyboard 18 while it 30 keyscan code set (Code) is in use, thereby permit- is thus isolated. This may be accomplished by ting the microprocessor inside the wand to select suitable manipulation of the DATA and or LOCK the configuration setting. However, it is still advis- lines leading to the keyboard while switches 54a, able to retain a manual configuration option to 54b are open. enable the keyboard emulator to be used even with The wand 10 including its optoelectronic sen- 35 a computer system unit and/or a keyboard unit that sor head 34 and its scanning and decoding mod- is not 100% compatible with one of the above ules 38, 40 are substantially identical to corre- mentioned types. sponding elements of the above-referenced Smar- From the perspective of the system unit 1 6, the tWand device, as further documented in commonly wand 10, like the keyboard unit which it emulates, assigned US patent 4 761 544 entitled "Means and 40 preferably is a "talk-only" peripheral that primarily Method of Scaling Time Interval Measurements transmits keyscan codes. Accordingly, with the ex- from an Optical Bar Code Scanner to Improve ception of some communication protocol options Decoder Efficiency". The following discussion will transparent to the user (such as a RESET com- assume the reader is familiar with the construction mand which clears the wand of any previously and use of that prior art device and, to the extent 45 scanned input data that has not yet been transmit- the present invention preferably makes use of com- ted to the system unit 16), the wand 10 is not ponents and techniques already known from the capable of being configured by commands sent referenced prior art device, such components and from the system unit 16. Instead, it can be config- techniques will not be described in detail herein. ured by scanning one or more appropriate option Furthermore, it will be assumed that the reader so barcodes from a barcode configuration menu simi- is familiar with the Mode 1 (used in models PC and lar to those contained in the above referenced PC XT) and Mode 2 (used in models AT and PS/2) SmartWand publication. These option barcodes keyboard unit to system unit interface protocols control such parameters as barcode symbology and the associated keyboard I/O BIOS routines selection, check sum verification, and length check- documented by IBM in its various Technical Refer- 55 ing. Since wand 10 is a keyboard emulation device, ence manuals, including (for the Code 1/Mode 1 the options also may include the keyscan code set interface) IBM publication 6025005, version 2.02 (Codes 1, 2 or 3), and the keyboard I/O protocol dated April 1983 (for the Mode 2 interface the (Mode 1 or Mode 2), and whether a keyboard unit 11 EP 0 441 032 A2 12

18 is also attached to the port 28 via a T-connector Completion code (block 88) before exiting (exit 68); 14 (T-connector mode or Keyboard Replacement otherwise, it waits for any additional system com- mode). Configuration options are preferably saved mand (decision block 90) and after any such com- in non-volatile memory 46 in the wand 10. The only mand has been received and acknowledged (block I/O configuration normally required of the user in 5 92), control passes to decision block 78 for possi- installing the wand 10 is to select Keyboard Re- ble resetting of the default Code (blocks 78, 80). placement Mode or T-connector Mode, depending The optoelectronic sensor head 34 feeds ana- on whether a keyboard unit is to be used in the log signals to threshold detector 50, which in turn system. includes analog processing circuitry for generating In the preferred embodiment, the communica- w a digital pulse stream which switches between tion module 44 can determine at power-up the "high" and "low" states at transitions between light keyscan code set and protocol mode automatically, and dark areas as the wand scans the barcode obviating the explicit configuration of the param- area; the scanning module 38 then converts that eters by the operator. Referring to the power-up incoming pulse stream into numeric data corre- detection subroutine of FIG. 4, communication 75 sponding to the number and relative width of each module 44 initially assumes Mode 2, Code 2, at space and bar in the 'code, and one or more power-up (block 60). If the wand 10 is set to its decoding modules 40 then use predetermined default T-connector mode ("No" branch from de- rules associated with particular codes to attempt to cision block 62), it monitors ("eavesdrops" on) the decode the symbolic data into character data and signals between the system unit 16 and the key- 20 related control data (which typically includes chec- board unit 18 to detect and analyze the transmis- ksum information). These rules and any associated sion of the Basic Assurance Test ("BAT") Comple- checksum information are also used by the asso- tion signal from the keyboard unit 18 (block 64). If ciated decoding module to verify whether the bar the transmission is not recognizable as a BAT data constitutes a legal message and thus the ("No" branch from decision block 66), the power- 25 barcode data from a particular scanning operation up routine of FIG. 4 ends the automatic detection has been successfully read and decoded. process, remaining set to Mode 2, Code 2 (exit Although the wand 10 is normally programmed 68). If the transmission is recognizable ("Yes" to attempt to decode a single set of symbolic data branch from decision block 66), it is checked corresponding to one pass of the wand 10 over a (decision block 70) for conformity to Mode 1 or 30 particular barcode label 26 by successive passes Mode 2 protocol. If it was a Mode 1 transmission through different decoding modules 40 until the ("No" branch from decision block 70), the routine information has been successfully decoded, the sets Mode 1 , Code 1 (block 72) and exits (exit 68). decoding operation is also subject to user configu- If it was a Mode 2 transmission ("Yes" branch from ration by means of the above-mentioned Barcode decision block 70), then the original Mode setting is 35 Menu Programming. The specific means to achieve valid, and the routine proceeds to check for more such flexibility is already known in the prior art as commands from system unit 16 (decision block exemplified by the above referenced SmartWand 74). If none are received during the remainder of device. the power-up time period ("No" branch from de- IBM-PC compatible keyboard emulator data cision block 74), the routine exits (exit 68). If, 40 collection devices that read various types of bar- however, more commands are transmitted from the codes and translate them into sequences of IBM- system unit 16 to the keyboard 18 ("Yes" branch PC compatible keyscan codes are also known per from decision block 70), the routine eavesdrops on se. However, the design of the code-converting the commands (block 76); if a "Change Type" module 42 that converts the decoded sequence of command is detected ("Yes" branch from decision 45 character data into a corresponding sequence of block 78), the default Code 2 is changed to the keyscan codes should be routine and conventional indicated Code (block 80); otherwise the subroutine to one familiar with the above-referenced IBM doc- is exited (exit 68) with the Code 2 default setting uments, even if he were not familiar with how such ("No" branch from decision block 78). a conversion were accomplished in the prior art. Alternatively, if the wand 10 has been set to so Thus, to emulate an IBM PC keyboard unit, the Keyboard Replacement mode ("Yes" branch from conversion module 42 first converts the already decision block 62), the communication module 44 decoded barcode data into the corresponding key- sends a Mode 2 BAT Completion code (block 82). strokes that a human would need to perform in If an appropriate response is not received from the order to create the same data input manually, tak- system unit 16 within a preset timeout period ("No" 55 ing into account the manner in which the [shift] branch from decision block 84), the communication keys (and also the [alt] and [control] keys) may be module changes the default setting to Mode 1, used in combination with the regular alphanumeric Code 1 (block 86) and transmits a Mode 1 BAT keys to represent a single character. For example, 13 EP 0 441 032 A2 14

when using an IBM PC compatible keyboard, the fault configuration, always includes one or more Z control character ("end of file" marker) is output special keyscan codes as part of each sequence of manually by first depressing the [control] key, then keyscan codes corresponding to a successfully de- depressing the "Z" key, then releasing the "Z" coded barcode message that the BIOS firmware key, then releasing the [control] key; similarly, the 5 within the computer's system unit interprets as a "<" symbol character is output by first depressing temporary "keyboard buffer overflow" or other be- either one of the two [shift] keys, then depressing nign error condition. In response thereto, the stan- the "," key, then releasing the "," key, then releas- dard BIOS keyboard I/O routine 30 passes tem- ing the [shift] key. The previously determined in- porary control to a Beep subroutine K62 which formation as to the keyboard type and a cor- w causes an audible signal to be output the com- responding a priori translation table may then be puter's own built in transducer 32. Immediately used by the conversion module 42 to translate thereafter, the system unit 1 6 continues to process those keystrokes into their respective keyscan any further incoming keyscan data. By this means, codes - the single or multiple of data that reliable audible feedback is ensured without any represent the make (pressing) and break 15 modifications to, or disruption of, the normal opera- (releasing) of individual keys. The resultant se- tion of the computer and any application or system quence of keyscan codes form the actual message software then in operation. that is transmitted to the keyboard port by the At the same time, an extremely compact, self- communication module 44, in accordance with the contained data collection device is possible. previously determined Mode 1 or Mode 2 IBM PC- 20 Reference should now be made to Figs. 5A compatible two line serial protocol for the clock and and 5B, which respectively are block diagrams of data lines of cable 12. the operation of the communication module 44 Some prior data collection devices, including following a successful or unsuccessful scan at- the SmartWand device, had only very limited oper- tempt. After a barcode has been scanned and ator feedback capabilities, and required optional 25 decoded (blocks 100a, 100b), the communication hardware and/or modifications to the user's applica- module waits (block 102) for the end of any on- tion software in order to provide the operator with going transmission from the keyboard. It then, by an appropriate audible confirmation whenever a opening analog switches 54a, 54b, isolates the barcode label had been successfully scanned and keyboard (block 104). Note, however, that in Mode decoded. In the case of a keyboard emulator, the 30 2, the wand 10 should respond to any commands collected data is typically treated by the com- from the system unit while the keyboard unit is puter's operating system and application software isolated, by sending at least the Acknowledge code as normal keyboard data and thus is usually dis- and, if the command is relevant to the operation of played on the computer's video monitor by the the wand 10, by executing that command. application software to permit editing and/or con- 35 What follows depends upon whether the scan- firmation as the data is entered from the keyboard. ning and decoding modules 38, 40 were able to However, depending upon the application software, successfully scan and decode a sequence of bar- such visual feedback may be altogether missing code data that had the proper checksum and other- (e.g., for user passwords and other sensitive data) wise appeared to be the result of a successful scan or, if it is followed by other data or an "enter" 40 operation (Fig. 5A or 5B). If the decoding was command, may disappear from the screen before it successful (Fig. 5A), the characters are translated is ever seen by the operator. Even when the data (block 108 or 110) to keyscan codes using the being input is visible on a video monitor, it may be appropriate code set (block 106). Then, using the inconvenient for the operator to check it visually appropriate protocol (block 112) a "header mes- during the data entry process. Accordingly, the 45 sage" followed by the translated characters are known prior art keyboard emulators included a transmitted (block 114 or 116) in a contiguous sound transducer and associated driver electronics block of keyscan codes using the appropriate within the emulator or its associated controller. transmission protocol as though the user had typed Whenever a keyscan was successfully encoded, this same data from a keyboard at an average rate the prior art keyboard emulator's control logic so of approximately 20 milliseconds per character. would drive the transducer with a distinctive au- (This rate is preferably configurable by the user). dible frequency signal. For use with an IBM PC XT having a Code 1 In a keyboard emulator system constructed in keyboard and a Mode 1 keyboard protocol, a pre- accordance with the present invention, dependable, ferred default configuration for the header message consistent audible feedback is provided without any 55 comprises a single FFH code, which is interpreted additional sound transducer or associated driver as a benign keyboard error by the system unit 16 electronics within the emulator or its associated and results in a single Beep from the system unit's controller. Rather, the emulator, at least in its de- speaker 32. (For other types of computers, the 15 EP 0 441 032 A2 16 preferred default configuration may be a single code scanning, such as in response to configura- OOH code). Finally, the connection between the tion of the wand 10 by means of barcode menus. keyboard unit 10 and the system unit 16 (which When the keyscan code FFH is used as the was temporarily broken in block 104) is reestablish- first character in the header, it causes the system ed (block 118) by closing analog switches 54a, 54b 5 unit to generate a Beep immediately after the (Fig. 3). Although a header message containing a keyscan is completed, before the barcode data is benign error code is used in the illustrated embodi- completely transmitted. Alternatively, the special ment, it should be understood that the benign error FFH keyscan code can be configured as part of code could be within the body of message itself, or trailer, or both the header and the trailer. Preferably in a message trailer; for some types of computers w the header and trailer are configurable, with one or it might even be possible to emulate a benign error more keyscan codes being read into designated condition by violating the keyboard communication buffer areas using special barcode menu labels. protocol, for example by transmitting an inappropri- As noted previously, two special keyscan ate response (or no response at all) to a command codes can be used to create a Beep, OOH and from the system unit. 75 FFH. Neither actually corresponds to on In the event scanning and decoding modules the IBM keyboard; rather they signify one of two 38,40 detected the occurrence of a scan that could possible keyboard errors to BIOS: the overflow of not be successfully decoded (which could be the the keyboard units's internal buffer or a key detec- result either of operator error, or a defective bar- tion error. The FFH keyscan code is recognized code label), the alternate flow shown in Fig. 5B 20 both by an IBM PC XT and by an IBM PC AT; it is occurs, in which a "Bad Read Message" (which in accordingly used for the Beep by default, but the the wand's default configuration comprises two OOH keyscan code may need to be configured by successive FFH keyscan codes) is transmitted the user for some models of PC AT compatibles in (blocks 120, 122), resulting in a double Beep that order for BIOS to respond with an audible beep. may easily be distinguished from the single Beep 25 Alternatively, the communications module 44 might signifying a good scan. be programmed to normally use the FFH code, but In addition to the configurable options that per- to automatically switch to the OOH code when a tain to transmission mode and code set, it may Mode 2 protocol is in use. Typically, an IBM PC- also be advantageous to implement as user con- compatible system BIOS will discard either of figurable options two parameters for the transmis- 30 those particular keyscan codes and thus the trans- sion of keyscan codes to the PC. The keyscan mission of such an error code to the system unit code delay is the delay between the transmission has no adverse effect on its operating system or on of each keyscan code: 2 milliseconds is typical any application program that might then be resi- value and is faster than most humans can perform dent. at the keyboard unit. A minimum hold-off period is 35 In the particular, but commercially important desirable before any transmission from the wand case of an IBM PC compatible keyboard, the Caps 10: 20 milliseconds is a typical value sufficient for acts as a toggle switch which when most applications. activated causes any alphabetic characters to be As described above, in order to create an au- converted with system unit 16 from lower to upper dible tone to signify the completion of a successful 40 case, or vice versa. This Caps Lock function is barcode scan (the "good read" Beep ), in its de- implemented in the BIOS of the system unit, not in fault configuration the wand 10 uses the special the keyboard. When toggled to its "On" state, the keyscan code FFH to cause the system unit 16 Caps Lock function effectively reverses the normal itself to generate a Beep. Alternatively, a repre- operation of the two "Shift" keys. Each time the sentation of this keyscan code can be encoded in a 45 Caps Lock key is pressed, the keyboard sends the standard barcode symbology such as Code 128 corresponding key codes to the system unit 16, using a specially interpreted character sequence. and the system unit toggles its own Caps Lock When interpreted by the decoder along with regu- flag, keeping track of the Caps Lock state inter- lar ASCII characters of the bar code, the Beep nally. keyscan code is then placed in the transmitted so As a result, unless appropriate measures were keyscan code stream along with the keyscan codes taken, a sequence of keyscan codes corresponding for the regular characters of the bar code message. to the bar code message: Multiple copies of the Beep keyscan code can be printed in a single barcode, allowing varied dura- *1 Code 128 Message* tions and groupings of Beeps to be generated in 55 response to different barcodes. Varied audio feed- would, if the Caps Lock flag had previously been back can be created in this manner to respond to set, be interpreted by the system unit as: special conditions encountered or created by bar- 17 EP 0 441 032 A2 18

*1 cODE 128 mESSAGE* the connection between keyboard 18 and the sys- tem unit 16 is reestablished (block 118 of Fig. 5A or 5B). The keyboard 18 is completely unaffected This could be undesirable in any application by the foregoing sequence of commands and program whose data entry section is sensitive to 5 keyscan codes because it is isolated during the case. The user would have to be aware of the entire transaction, and the system unit 16 is left in problem and take care that Caps Lock was in the the original Caps Lock state. proper state while scanning bar code. In theory, it might be sufficient for the commu- Claims nications module to monitor all transmissions from 10 the keyboard to the system unit following a reset 1. For use with a computer system unit (16) or command, and each time a keyscan code cor- computer terminal unit comprising a keyboard responding the actuation of the Caps Lock key is port (28) and a sound transducer (32) and detected, toggle an internal flag corresponding to utilizing a predetermined keyboard communi- the Caps Lock status flag maintained by the sys- 75 cation protocol for inputting data from a key- tem unit. In practice, this requires a microcontroller board unit (18) via the keyboard port as a having a bandwidth (processing rate) substantially sequence of keyscan codes, the protocol in- greater than that of the Intel 8051 microcontroller. cluding provision for signifying at least one In addition, since monitoring transmissions of the predetermined benign error condition within Caps Lock keyscan codes would only allow the 20 the keyboard unit which causes an audible microcontroller to detect toggles in state of the error signal to be generated by said sound computer's Caps Lock status flag, the microcontrol- transducer, a keyboard emulator (10) compris- ler would have to make a correct assumption at ing: power up about the initial state of the computer's input means (36,46,48,24,34,50,38,40,42) for status flag. The initial state; however, is not nec- 25 converting a machine-readable symbol (26) essarily the same for all IBM PC "compatibles". into a digital representation of a message com- Further, synchronization between the status flags in prising one or more character codes; and the system unit 16 and the microcontroller 36 output means (36,46,48,42,44,52) responsive to might subsequently be lost as the result of in- the input means for transmitting said message complete or otherwise erroneous transmission from 30 to said keyboard port in accordance with said the keyboard. keyboard communication protocol and for However, at least for Mode 2, a much simpler emulating said predetermined benign error solution exists, as shown in Fig. 6. When the wand condition whenever said input means success- 10 is ready to send data, it first isolates the key- fully translates character codes into a corre- board (block 104 of Figs. 5A and 5B). It then 35 sponding sequence of keyscan codes, transmits the Caps Lock make and break keyscan whereby whenever a sequence of keyscan codes (block 130) to the system unit 16, which in codes corresponding to a said machine reada- turn immediately responds by sending back the ble symbol is received at the keyboard port Reset Status Indicators command (block 132), fol- from the keyboard emulator, the computer will lowed by the new status indicators (normally 40 produce an audible error signal. used to control any corresponding status indicators on the keyboard). The communication module 44 2. A keyboard emulator according to claim 1 interprets the received status indicator byte and which comprises an elongated contact-type deduces the state of the Caps Lock flag (block barcode reader (10) which does not contain 134) as it was immediately prior to the transmission 45 any sound transducer; of the Caps Lock keyscan make and break codes said benign error condition is emulated by (block 130). After acknowledging the Reset Status transmitting a predetermined keyscan code to Indicators command as required by the Mode 2 said system or terminal unit, and protocol (block 136), the communication module 44 said system or terminal unit is programmed to then sends the Caps Lock key codes again (block 50 cause said sound transducer to generate an 138) to toggle the state of Caps Lock in the system audible error signal whenever said predeter- unit 16 back to the untoggled original state. There- mined keyscan code is received at said key- upon, it receives the Reset Status Indicators com- board port. mand again (block 140), and Acknowledges it again (block 142). The communication module 44 then 55 3. A keyboard emulator according to claim 2 transmits the keyscan codes of the decoded mes- wherein said computer is an IBM PC compati- sage, performing case conversion if necessary ble computer which in its standard configura- (block 114, Fig. 5A). At the end of the transmission, tion generates an audible "Beep" in response

10 19 EP 0 441 032 A2 20

to a keyscan code of "FFH" and said benign header means for generating a "good read" error condition is signified by at least one such message header comprising at least one pre- "FFH" keyscan code. determined keyscan code signifying said be- nign error condition; and 4. A keyboard emulator according to claim 2 5 communication means responsive to the ver- wherein said computer is an IBM PC compati- ification means and the header means for ble computer which in its standard configura- transmitting the legal message header and the tion generates an audible "Beep" in response keyscan codes corresponding to the legal to a keyscan code of "OOH" and said benign message to the keyboard port in accordance error condition is signified by at least one such w with the predetermined keyboard communica- "OOH" keyscan code. tion protocol; and wherein:- 5. A keyboard emulator according to claim 2 said verification means further comprises mis- wherein said machine-readable symbol in- read detector means for detecting a "no-read" cludes a portion which is converted and trans- w condition signifying that the machine readable lated into said predetermined keyscan code. symbol being processed by the input means could not be converted into a legal message 6. A keyboard emulator according to claim 1 and wherein said keyboard emulator is an elon- said message transmission means transmits a gated wand which does not contain any sound 20 "no-read" message in response thereto. transducers, and said computer system or ter- minal unit contains an internal sound trans- 10. A keyboard emulator according to claim 9 fur- ducer means programmed to generate an au- ther comprising mode means for determining dible "Beep" in response to said predeter- whether said keyboard communication protocol mined keyscan code. 25 is a particular predetermined protocol, and wherein said header means and said commu- 7. A keyboard emulator according to claim 1 fur- nication means are responsive to said mode ther comprises status means means. (44,30,32,34,36,46,48) responsive to a status command from the computer for deducing sta- 30 tus of a shift state status flag, and transposing means responsive to the deducing means (44,1 30,1 32,1 34)and the input means for trans- posing shift states of predetermined keyboard characters prior to encoding by the output 35 means whenever said shift state status flag is in an activated state.

8. A keyboard emulator according to claim 7 wherein the keyboard is a Mode 2 IBM com- 40 patible keyboard, the system unit or terminal unit is an IBM AT or PS/2 compatible system unit, the status means transmits a predeter- mined status change keyscan code prior to each transmission of a decoded and converted 45 message to the computer, said status com- mand is a Reset Status Indicators command transmitted by the system unit to the keyboard unit in response to said predetermined status change keyscan code, said predetermined 50 keyboard keys are alphabetic keys, and said predetermined status change keyscan code is a Caps Lock keyscan code.

9. A keyboard emulator according to claim 1, 55 further comprising: verification means for verifying whether the message is a legal message;

11 EP 0 441 032 A2

12

EP 0 441 032 A2

rope, &uxs3 3MTCHJ w

-O CLOCK

ro /s> DA7A

\

^-.^ /30 r

CO0£S -/3Z

~/34

DEDUCE CAPS LOCK STATE -/36

acknowledge: J3S 1 TfiANSMlTE CAPSLOCK CODES >/40

££CE/\/£ &£5ET STA7VS AVD/C4T0£S C0&MAVD @14%

acknowledge

14 EP 0 441 032 A2

&4

e>z 60 L

3AT. &MPl£770tf\ 3A7. &MPL&7O/V ££D£ A/VD J<£Y3OA&D MOD£ DETSCT

S£T/tfOOEI

j 72-

L

34lfcSD/?0P 0

6>O

(pB /

(2*7P)

15 EP 0 441 032 A2

&u^5A

&£ADY FC>£ QCJTPOT vtea.

yers

\ TO PC? ST

ISOLATE KEYBOARD -/Of

A/

10b 7&/UUSlA7£CHAffllfi9Q 7OC&DS $>E72 tSyCoO&s 7&WS4A7Z C//A2AC7S& ~/O8 L I lo 7&OX)£ 50-f £&&£>£<>

lib A/0 L

TRANSMIT HEADER AND TRANSMIT HEADEZ — 1/4 AND MESSA65 MESSAGE

RECONNECT KEYBOARD

^5

16 EP 0 441 032 A2

&S3

SCAN OCCURS &UTNO BAR CODE DECODE t> A/O MESSAGE READY FOR OUTPUT "^-/OOb

ISOLATE KEYBOARD ~\-IOT

III

n^

BAt> READ 5At> REAP ^-IXO MESSAGE MObE 2. MESSAGE MODE, t

RECONNECT KEY&OARt> '18

17