Abstract:
For operating input devices such as magnetic card readers (22) or keyswitches (23) on personal computers (11), these are connected to the keyboard processor (18) and activated by hitherto unused control codes. The data of the input devices are recoded into data for possible key operations and the data transmission to the personal computer is initiated by the code for a non-existent key. As a result, the keyboard controller in the personal computer does not need to be reprogrammed, and the function of the input device cannot be simulated via the keyboard.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates to the connection of input devices to personal computers via an already existing keyboard interface. 
     2. Description of the Related Art 
     As a rule personal computers have a keyboard for data input for which a standard interface has emerged, as is described in IBM Personal System/2 Technical Reference Manual for example. Additional input devices are required in many application areas, for example reading devices for magnetic cards, which for cost reasons are frequently equipped with a special interface, the operation of which is time-critical. It has hitherto been necessary to use additional interfaces for these input devices on the personal computer, for example serial interfaces compliant with the V.24 standard. When personal computers are used as control units in point-of-sales terminals, for example, this however results in an additional outlay for the interface in the computer and in the unit which converts the data supplied by the magnetic card reader into that of the serial standard interface, the V.24 interface in the example, and fulfils the time conditions. 
     A keyboard with connected peripheral devices is described in the article entitled &#34;Mehr als eine Tastatur&#34; (More than a keyboard) by M. Guntner and W. Kredler, Elektronik, Issue 21, 1987, pp. 126 to 130. The data are clearly transmitted in this case from the peripheral devices via the serial V.24 interface. 
     Transmission via the keyboard interface is not described. Were one nevertheless to do this, the problem would arise that the keyboard controller contained in the PC would only forward such key codes belonging to previously defined keys. As a result, it is not possible to transmit all the data from the magnetic stripe without modifying the keyboard controller or reducing the data rate by means of the multiple character representation proposed in the article. Particularly in the latter case, this data can then be replaced by key operations. For the sake of reliability, and in accounting systems in particular, it is however desirable that it be possible to identify the data of the peripheral device clearly as such, and it should not be possible for the data to be simulated by key actuations. 
     SUMMARY OF THE INVENTION 
     An object of the invention is the operation of input devices at the keyboard of a personal computer which permits transmission of all the code characters of a peripheral device without reprogramming the keyboard controller in the personal computer but nevertheless does not increase the data volume. It is furthermore desirable that a simulation of the input device by key operation be precluded and a status interrogation and control of the input devices be possible. 
     The present invention achieves this and other objects in that the additional input device or devices are connected to the keyboard processor and send their data via the keyboard interface. The data of the input device are buffered in the keyboard processor and sent to the PC. In addition, the codes of the input devices are converted into normal key codes so that no modifications are required to the keyboard controller in the personal computer. The data of the input device are introduced by dummy key codes which cannot be generated on the keyboards used; in this way a user cannot modify or replace the data of the input devices by means of keyboard operations. However, key codes which correspond to possible keys are used so that the keyboard controller in the personal computer does not need to be reprogrammed. For this reason the binary data of the magnetic card reader are also converted into possible key codes. In order to distinguish between the data of the magnetic card reader and those of the keys, a device driver or resident filter program is required, but no reprogramming of the keyboard controller. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention will be explained below with reference to two exemplary embodiments. 
     FIG. 1 shows the design of a personal computer with two input devices connected. 
     FIG. 2 shows the connection of the input device via a control logic means interposed. 
     FIG. 3 shows the structure of the software in the personal computer. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     In FIG. 1 a conventional personal computer 11 is symbolized with a bus 12, a CPU 13, further memory and peripheral elements which for the sake of clarity have been grouped together under the symbol 14, and the keyboard controller 15 (e.g. an Intel 8042 chip may be used as a keyboard controller) which is connected to the keyboard 17 via a data link 16. The keyboard 17 contains a keyboard processor 18 (e.g. an Intel 8052 Chip may be used as a keyboard processor) which is connected to the keypad 19, usually realized in matrix form. The keyboard processor 18 detects key operations of the keypad 19 and sends corresponding codes via the data line 16 to the keyboard controller 15 in the personal computer, from which the data are called up by programs in the memory 14 which are executed by the CPU 13. The keyboard controller 15 in the personal computer can also send data to the keyboard processor 18 in the keyboard for initialization, control and diagnostic purposes. The procedures and methods used for this purpose are likewise described in the IBM Personal System/2 Technical Reference Manual for example. It should be noted here that the codes sent from and to the keyboard may comprise one or more bytes. 
     In comparison with a conventional personal computer, two input devices have been added in FIG. 1. One is a magnetic card reader 22 (`swipe card reader`, SCR) which is connected to the keyboard processor 18 via an interface 21 specific to this device. The second is a switch 23 operated by a key. 
     The procedure in the keyboard processor 18 is as follows: after switching on or resetting by transmission of the code `FF` from the personal computer to the keyboard, the magnetic card reader 22 is disabled. It is only enabled once the personal computer sends the code `DO` after the following procedure represented in pseudocode: 
     
         ______________________________________procedure new.sub.-- got.sub.-- key(x: key);pragma base 16begin  if x in  0D0!  then if SCR.sub.-- exists      then send(0FA);           enable.sub.-- SCR;           exit;      else send(0FE);           exit;      fi;  else if x in  0D1!      then if key.sub.-- switch.sub.-- exists           then send(0FA);                enable.sub.-- key.sub.-- switch;                exit;           else send(0FE);                exit;           fi;      fi;  else old.sub.-- got.sub.-- key(x);      exit;  fi;end;______________________________________ 
    
     The repeat code `FE` is returned here if no magnetic card reader is present; this code is always used for unknown commands and otherwise has the meaning &#34;repeat transmission&#34;. If on the other hand a magnetic card reader is present, then the acknowledgement code `FA` is returned which has the meaning of a positive acknowledgement (&#34;acknowledge&#34;). 
     Following this, data supplied from the magnetic card reader are stored in an internal memory of the keyboard processor 18. If the data are complete, if no keyboard operation is active on the key matrix 19, and no message is being transmitted from the personal computer to the keyboard or from the keyboard to the personal computer, then the keyboard processor sends the data. In this case first of all a dummy key code is transmitted, which is detected by the keyboard controller 15 as a permissible key code and processed, but to which no key is assigned on the connected keyboard, for example `65`. The transmission procedure is as follows in pseudo-code: 
     
         ______________________________________procedure perform.sub.-- SCR;pragma base 16;beginif SCR.sub.-- exists and SCR.sub.-- enabled and SCR.sub.-- data.sub.--in.sub.-- bufferthen    send(065);       / / scan code denotessend(060);           / / key that is unusedsend.sub.-- track.sub.-- data(1);send.sub.-- track.sub.-- data(2);send.sub.-- track.sub.-- data(3);send(044);           / / end of messagefi;end;procedure send.sub.-- track.sub.-- data(x);/ / transmits startcode for track, status byte,/ / three length bytes and data, stop and LRCpragma base 16;beginif track.sub.-- exists(x)then    send(040+x);if no.sub.-- data(x)then  send(049);      exit;else if valid.sub.-- data.sub.-- for.sub.-- track(x)then send(048);      send.sub.-- length(x);      send.sub.-- data(x);      exit;else send(04A);      / / bad data, read errorfi;fi;end;procedure send.sub.-- length(x);/ / transmits always three decimal digitspragma base 10;local i,j;begini = data.sub.-- length.sub.-- track(x);j = i div 100;send(48+j)i = i - j*100;j = i div 10;send(48+j);i = i - j*10;send(48+i);end;The transmission format is therefore:Start,  TrackNo1, Status, Number, Data,   TrackNo2, Status, Number, Data,   TrackNo3, Status, Number, Data, End______________________________________ 
    
     The individual parts of the transmission format are defined here as follows: 
     
         ______________________________________Start:   `65H`, `60H`TrackNo1:    `41H`   Identifier for data from track 1TrackNo2:    `42H`   Identifier for data from track 2TrackNo3:    `43H`   Identifier for data from track 3End:     `44H`   Identifier for end of data from SCRStatus:  `48H`   Everything OK    `49H`   Start character not found, no data            transmitted    `4AH`   LRC character incorrect, no data trans-            mitted    `4BH`   Parity error, no data transmittedNumber:  `3XH`, `3XH`, `3XH` Number of bytes read    Example: `30H`, `38H`, `32H` = 82 bytesData:    Data with end character and LRC without start    characterOne example of transmission is as follows:Data on the card:Track1:      EmptyTrack2:      9 bytes data: 00, 03, 05, 07, 01, 08,        09, 00, 02        End byte: 0F, LRC: 07Track3:      No magnet head fitted______________________________________ 
    
     The keyboard must therefore output the following data: 
     
         __________________________________________________________________________TRCK1     TRCK2          TRACK 2 DATA                 ENSTARTEMPTY     OK   NUMBER                0 3 5 7 1 8 9 0 2 ST                                    LR DE__________________________________________________________________________10  47 83  7D 0A       75 32            31              31                0B                  1E                    25                      36                        76                          3D                            3E                              0B                                16                                  0D                                    36 09__________________________________________________________________________ 
    
     The following data arrive in the system (output of the keyboard controller 15): 
     
         __________________________________________________________________________TRCK1     TRCK2          TRACK 2 DATA                 ENSTARTEMPTY     OK   NUMBER                0 3 5 7 1 8 9 0 2 ST                                    LR DE__________________________________________________________________________65  60 41  49 42       48 30            31              31                40                  03                    05                      07                        01                          08                            09                              40                                02                                  0F                                    07 44__________________________________________________________________________ 
    
     The data are coded here in accordance with Table 1 further below. 
     FIG. 3 shows the corresponding processing in the personal computer. An application program 40, which processes keyboard and SCR data, first of all uses the normal interface for keyboard handling 41 in the operating system (DOS), which in particular has an interface to the firmware 42 of the computer (BIOS) which takes keyboard data from a buffer 43 filled with the data from the keyboard controller 15. To use the SCR, a device driver 44 is installed and a new software interface 45 is provided. The device driver 44 now takes the data of the keyboard controller 15 and normally passes them on unchanged to the BIOS. As a result of an instruction at the interface 45, the device driver 44 activates the keyboard processor 18 by sending the code `DO`, as described above. Data of the magnetic card reader begin with the code `65`, likewise as described above. This code is evaluated by the device driver 44 and has the result that all the following data up to and including the end character are stored in a second, larger buffer 46 and are not forwarded to the BIOS 42. Subsequent data which correspond to keyboard operations of actually existing keys are again forwarded unchanged to the BIOS. The data of the magnetic card reader are translated back into the original code by a coding station 47 before or after the buffering and are transmitted to the application program 40 via the interface 45. 
     As a further input device, a keyswitch 23 is shown in FIG. 1, in which the customary plurality of positions is not shown. Each change of position is coded as a function key operation, namely transmitted as a release (break) of the previous position and activation (make) of the new position. The keyswitch input is enabled by the code `D1`. The make code of the corresponding key is sent so that the position can be interrogated due to renewed enabling. Table 2 shows a possible coding for a plurality of positions. This procedure is also suitable for transmitting the status for the magnetic card reader if its interface (21) provides corresponding status information. 
     In FIG. 2, the magnetic card reader 22 is shown connected, not to the keyboard processor 18, but to its own control logic means 31, which as a rule transmits the data unchanged from and to the keyboard processor 18. The only difference is that the procedures relating to the magnetic card reader 22 described above are performed by the control logic means 31. 
     Although other modifications and changes may be suggested by those skilled in the art, it is the intention of the inventors to embody within the patent warranted hereon all changes and modifications as reasonably and properly come within the scope of their contribution to the art. 
     
                       TABLE 1______________________________________Coding of the data of the magnetic card reader     Output   Key     8042Read data key      no.     recoding                              System______________________________________00        0B       67      40 →                              0001        76       90      01      0102        16       2       02      0203        1E       3       03      0304        26       4       04      0405        25       5       05      0506        2E       6       06      0607        36       7       07      0708        3D       8       08      0809        3E       9       09      090A        46       10      0A      0A0B        45       11      0B      0B0C        4E       12      0C      0C0D        55       13      0D      0D0E        66       15      0E      0E0F        0D       16      0F      0F10        15       17      10      1011        1D       18      11      1112        24       19      12      1213        2D       20      13      1314        2C       21      14      1415        35       22      15      1516        3C       23      16      1617        43       24      17      1718        44       25      18      1819        4D       26      19      191A        54       27      1A      1A1B        5B       28      1B      1B1C        5A       43      1C      1C1D        14       30      1D      1D1E        1C       31      1E      1E1F        1B       32      1F      1F20        23       33      20      2021        2B       34      21      2122        34       35      22      2223        33       36      23      2324        3B       37      24      2425        42       38      25      2526        4B       39      26      2627        4C       40      27      2728        52       41      28      2829        0E       1       29      292A        12       44      2A      2A2B        5D       14      2B      2B2C        1A       46      2C      2C2D        22       47      2D      2D2E        21       48      2E      2E2F        2A       49      2F      2F30        32       50      30      3031        31       51      31      3132        3A       52      32      3233        41       53      33      3334        49       54      34      3435        4A       55      35      3536        59       57      36      3637        7C       106     37      3738        11       58      38      3839        29       61      39      393A        58       64      3A      3A3B        05       70      3B      3B3C        06       65      3C      3C3D        04       71      3D      3D3E        0C       66      3E      3E3F        03       72      3F      3FTrNo1     83       73      41 →                              TrNo1TrNo2     0A       68      42 →                              TrNo2TrNo3     01       74      43 →                              TrNo3End       09       69      44 →                              End45        77       95      4546        7E       100     4647        6C       91      47OK        75       96      48 →                              OKStart err.     7D       101     49 →                              Start err.LRC/P err.     7B       107     4A →                              LRC/P err.4B        6B       92      4B      (P = parity)4C        73       97      4C4D        74       102     4D4E        79       108     4E4F        69       93      4F50        72       98      50      5051        7A       103     51      5152        70       99      52      5253        71       104     53      5354        7F/84    105     54      5455        60       res     55      5556        61       res     56      5657        78       res     57      5758        07       res     58      5859        0F       res     59      595A        17       res     5A      5A5B        1F       res     5B      5B5C        27       res     5C      5C5D        2F       res     5D      5D5E        37       res     5E      5E5F        3F       res     5F      5F60        47       res     60      6061        4F       res     61      6162        56       res     62      6263        5E       res     63      6364        08       res     64      6465        10       res     65      6566        18       res     66      6667        20       res     67      6768        28       res     68      6869        30       res     69      696A        38       res     6A      6A6B        40       res     6B      6B6C        48       res     6C      6C6D        50       res     6D      6D6E        57       res     6E      6E6F        6F       res     6F      6F70        13       res     70      7071        19       res     71      7172        39       res     72      7273        51       res     73      7374        53       res     74      7475        5C       res     75      7576        5F       res     76      7677        62       res     77      7778        63       res     78      7879        64       res     79      797A        65       res     7A      7A7B        67       res     7B      7B7C        68       res     7C      7C7D        6A       res     7D      7D7E        6D       res     7E      7E7F        6E       res     7F      7FFF        00       err     FF      FF______________________________________ 
    
     Table explanation: 
     Read data: Data read from the card. 
     Output key: Scan code which the keyboard must output. 
     Key no.: Key associated with the scan code. 
     8042 recoding: System scan code which the 8042 recodes. 
     System: The data which the driver generates from it again. 
     
                       TABLE 2______________________________________Coding of the data of a keyswitchKey position    Make    Break______________________________________1               10, 51  10, F0, 512               10, 52  10, F0, 523               10, 53  10, F0, 534               10, 54  10, F0, 545               10, 55  10, F0, 556               10, 56  10, F0, 56______________________________________