PCMCIA interface card for coupling input devices such as barcode scanning engines to personal digital assistants and palmtop computers
First Claim
1. A process for decoding alphanumeric characters from electrical signals generated by an input device which generates output electrical signals encoding said alphanumeric characters and making said decoded alphanumeric characters available to a host computer, comprising:
- storing data other than said alphanumeric characters in nonvolatile expansion memory on a PCMCIA card, hereafter sometimes referred to as a PC card, coupled to said host computer by a PCMCIA interface, said data being data needed by one or more application processes in execution on said host computer;
receiving at a PCMCIA card coupled to said host computer said output signals generated by said input device which encode said alphanumeric charactersdecoding said output electrical signals into one or more alphanumeric characters on said PCMCIA card and storing the decoded alphanumeric character in a memory location on said PCMCIA card which is mapped into the Input/Output address space of zone 3 of the memory map of said PCMCIA card;
retrieving said decoded alphanumeric characters using I/O cycles of said host computer and a PCMCIA bus coupling said PCMCIA card to said host computer while allowing said data stored in said nonvolatile memory on said PCMCIA card to also be accessed by said host computer via memory cycles and said PCMCIA bus without having to reboot the host computer.
10 Assignments
0 Petitions
Accused Products
Abstract
A variety of PC card interfaces to interface from many different types of input devices to Personal Digital Assistants or palmtop computers through PCMCIA slots. The disclosed interfaces can receive data in undecoded format from laser based, wand based or CCD based barcode scanning engines, decode the data to alphanumeric characters and pass the decoded data to the PDA via the PCMCIA 68 pin bus. Other PC card based interfaces are also disclosed which can accept input data in the form of ASCII or EBCDIC characters from virtually any type of input device which a standard serial or parallel output or custom output bus and input that data to the PDA through the PCMCIA bus. Some embodiments use programmed general purpose microprocessors to decode undecoded barcode scan data on the PC card. Other embodiments use custom-programmed, commercially available barcode decoding chips to decode incoming undecoded barcode scan data. Some embodiments of PC card interfaces sample undecoded barcode scan signals and pass the samples to the host through the PCMCIA bus for decoding by a suitably programmed host computer.
146 Citations
21 Claims
-
1. A process for decoding alphanumeric characters from electrical signals generated by an input device which generates output electrical signals encoding said alphanumeric characters and making said decoded alphanumeric characters available to a host computer, comprising:
-
storing data other than said alphanumeric characters in nonvolatile expansion memory on a PCMCIA card, hereafter sometimes referred to as a PC card, coupled to said host computer by a PCMCIA interface, said data being data needed by one or more application processes in execution on said host computer; receiving at a PCMCIA card coupled to said host computer said output signals generated by said input device which encode said alphanumeric characters decoding said output electrical signals into one or more alphanumeric characters on said PCMCIA card and storing the decoded alphanumeric character in a memory location on said PCMCIA card which is mapped into the Input/Output address space of zone 3 of the memory map of said PCMCIA card; retrieving said decoded alphanumeric characters using I/O cycles of said host computer and a PCMCIA bus coupling said PCMCIA card to said host computer while allowing said data stored in said nonvolatile memory on said PCMCIA card to also be accessed by said host computer via memory cycles and said PCMCIA bus without having to reboot the host computer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system comprising:
-
a host computer which is a palmtop or personal digital assistant, said host computer having a host bus and a PCMCIA slot having a PCMCIA bus therein which is coupled to a system bus of said host computer, said host computer controlled by one or more programs including an operating system program, a PC card interrupt service routine, a card services program, a memory technology device driver program and a client application that needs alphanumeric data encoded into a barcode, magnetic stripe or magnetic ink; first means for reading said barcode, magnetic stripe or magnetic ink and outputting electrical signals that encode the alphanumeric characters encoded in said barcode, magnetic stripe or magnetic ink; a PC card inserted in said PCMCIA slot of said host computer and having a PCMCIA bus coupled to said PCMCIA bus of said host computer, said PC card having expansion nonvolatile memory for storing data needed by any program which controls the operation of said host computer, said PC card further comprising second means for receiving said electrical signals from said first means and decoding said electrical signals into alphanumeric characters, storing said alphanumeric characters in a memory on said PC card which is mapped into the I/O space of said PC card, and notifying said host computer that one or more alphanumeric characters are available for reading by generating an interrupt, and wherein said card services program is structured to control said host computer to assign an interrupt number and I/O space including a base address to said PC card and store said data, and wherein said memory technology driver program conrols said host computer to register itself with said card services program as a client and interrogate said card services program and determine said interrupt number and said base address in the I/O space assigned to said PC card, and wherein said client application includes means for controlling said host computer to read said alphanumeric characters from said memory on said PC card by registering said client application with said card services program, and by interrogating by any interprocess data transfer mechanism, said card services program on a client by client basis, each interrogation including passing a predetermined subfunction argument number to said card services program which is the client number reserved for said memory technology driver program when it registered with said card services program and by interpreting the data returned in response to each said interrogation to determine if the returned data has at a first offset a signature unique to said memory technology driver program, and, if not, controlling said computer to repeat the interrogation for the next client, and if the returned data in response to the interrogation contains the unique signature, then the returned data indicates the client registered to said subfunction argument number is said memory technology driver program and the data at a second offset in said returned data is the interrupt number assigned to said PC card and the base address of the I/O space of said PC card, and controlling said host computer to read said interrupt number and base address from said second offset in said returned data, and said client application program passing the interrupt number and the start address of said PC card interrupt service routine to said operating system program for storage in an interrupt vector table maintained by said operating system for use as the interrupt number of said PC card and to define in said table the start address of the interrupt service routine used to retrieve said alphanumeric characters decoded by said second means stored in memory in the I/O space of said PC card; and wherein said second means in said PC card includes a PCMCIA adapter circuit which activates an interrupt signal line on said PCMCIA bus when a decoded alphanumeric character is ready to be retrieved from the I/O space memory of said PC card; and wherein said host computer includes an interrupt controller circuit coupled to said interrupt signal line of said PCMCIA bus which functions to detect said activation of said interrupt signal line and place the interrupt number assigned to said PC card on said host bus; and wherein said operating system is structured to control said host computer to use said interrupt number as an index into said interrupt vector table to retrieve the start address of said PC card interrupt service routine and invoke it into execution; and wherein said PC card interrupt service routine is structured to control said host computer to execute an I/O cycle and use said base address of the I/O space of said PC card to retrieve at least one alphanumeric character stored in memory in the I/O space of said PC card. - View Dependent Claims (11, 12, 13)
-
-
14. A PC card for providing expansion capability to a host computer having a PCMCIA bus in a PC card slot, comprising:
-
a PCMCIA bus on said PC card; a PCMCIA adapter interface circuit on said PC card and coupled to said PCMCIA bus; a decoder circuit on said PC card and coupled to said PCMCIA interface circuit for decoding undecoded signals received from an input device which may be on said PC card and coupled directly to said decoder circuit or which may be off said PC card and coupled to said PC card by a cable and a serial or parallel data interface which implements a serial or parallel format input port to said PCMCIA adapter interface circuit, said decoder functioning to receive said undecoded signals from said input device, decode them and generate alphanumeric characters as the result of said decoding; and wherein said input device is coupled to said PC card by a serial or parallel format data path on said cable, said cable having a serial or parallel format appropriately to match the serial or parallel format of said data interface implementing said said serial or parallel format input port of said PC card, and further comprising an auxiliary nonvolatile flash EEPROM expansion memory on said PC card which is mapped into the memory space of said host computer and which is segmented into separate high byte and low byte storage memory to act as an auxiliary memory for a host computer and wherein said PCMCIA interface circuit further comprises high byte and low byte steering buffers coupled to both said flash EEPROM memory segments and to said PCMCIA bus and functioning to enable reading of the data output from said high byte storage memory by said host computer on either a high byte or a low byte of a data bus which is part of said PCMCIA bus. - View Dependent Claims (15)
-
-
16. A system comprising:
-
a host computer in the form of a personal digital assistant or palmtop computer, said host computer having a PCMCIA slot having a PCMCIA bus connector therein with a PCMCIA card engaged in said PCMCIA slot and electrically coupled to said host computer through said PCMCIA bus, said PCMCIA card having a data storage memory for storing sample data, said host computer including decoding means for receiving sample data of a barcode pattern via said PCMCIA bus connector and decoding said sample data into one or more alphanumeric characters and storing said alphanumeric characters in a memory in said host computer, said host computer including a PCMCIA bus controller circuit coupled to receive said barcode image sample data via said PCMCIA bus connector and supply it to a barcode decoding process carried out by said decoding means and coupled to detect an interrupt generated by said PCMCIA card and output an interrupt number assigned to said PCMCIA card, said decoding means including sample data retrieval means for controlling said host computer to assign an interrupt number to said PC card and map said data storage memory into the I/O space of said PCMCIA card and assign a base address in the I/O space of said host computer to said I/O space of said PCMCIA card, and to indirectly interrogate a memory technology driver program controlling said host computer via a registered client by registered client interrogation process of a card services program controlling said host computer so as to determine the interrupt number and base address of the I/O space of said PCMCIA card and store them in an interrupt vector table maintained by an operating system also controlling said host computer and to store the start address of a PCMCIA card interrupt service routine in said interrupt vector table, and for controlling said host computer to use the interrupt number of said PCMCIA card interrupt to find the base address of the I/O space of said PCMCIA card and invoke said PCMCIA card proper interrupt service routine and use said base address to retrieve sample data from said PCMCIA card via I/O cycles carried out across said PCMCIA bus connector; and wherein said PCMCIA card comprises; a PCMCIA bus connector that mates with said PCMCIA bus connector in said PCMCIA slot of said host; a nonvolatile flash EEPROM expansion memory mapped into the memory space of said host computer; an undecoded barcode scan engine either integrated on or mounted on said PCMCIA card and outputting an electrical signal at an output that encodes the light and dark patterns of any barcode scanned by said scan.
-
-
17. A circuit comprising:
-
a host computer in the form of a palmtop or personal digital assistant and having a system bus and a PCMCIA bus in a PCMCIA slot and coupled to said system bus via a PCMCIA bus controller circuit, said host computer controlled by a barcode decoding program to receive undecoded barcode sample data and decode alphanumeric data encoded therein, said host computer further controlled by an operating system, a PCMCIA card interrupt service routine dedicated to retrieving said undecoded barcode sample data from said PCMCIA card, and further programmed by said PCMCIA card management software which controls said host computer to detect the presence of a PCMCIA card in said PCMCIA slot and map one or more memory locations on said PCMCIA card which store said undecoded barcode sample data into the I/O space of said host computer using a base address and to assign an interrupt number for said PCMCIA card and to store said interrupt number assigned to said PCMCIA card and a start address for said PCMCIA card interrupt service routine in an interrupt vector table used by said operating system, and to store said base address in a location known to said PCMCIA card interrupt service routine, said PCMCIA bus controller circuit for detecting an interrupt signal generated by said PCMCIA card and notifying said operating system of the interrupt number of said PCMCIA card, said operating system for controlling said host computer to use said interrupt number to execute said PCMCIA card interrupt service routine, said PCMCIA interrupt service routine using I/O cycles and said base address to retrieve said sample data and pass it to said barcode decoding program for decoding into alphanumeric characters, said host computer further programmed by one or more programs which control said host computer to read data from and write data for any purpose to any auxiliary flash EEPROM on a PCMCIA card engaged in said PCMCIA slot, said auxiliary flash EEPROM being mapped by said PCMCIA card management software into the memory space of said host computer, said one or more programs structured to access said auxiliary flash EEPROM using memory cycles without rebooting said host after use of I/O cycles to retrieve said sample data; a PCMCIA card engaged in said PCMCIA slot of said host computer, comprising; a PCMCIA bus coupled to said PCMCIA bus of said host computer; a barcode scan engine of the laser or wand type either mounted on said PCMCIA card of a stand alone variety not mounted on said PCMCIA card but coupled to an input port on said PCMCIA card and outputting undecoded signals encoding alphanumeric characters; a PCMCIA adapter chip coupled to said PCMCIA bus and coupled to said barcode scan engine and functioning to receive said undecoded signals from said barcode scan engine, generate samples thereof and transfer said samples to a host computer through said PCMCIA bus, and having a latch, shift register or other data storage entity that stores said sample data and is mapped by said card management software of said host into the I/O space of said host at a known location at or in some known relationship to said base address; and an auxiliary flash EEPROM memory which is mapped by software controlling said host computer into the memory space of said host computer.
-
-
18. A circuit comprising:
-
a host computer having a system bus and a PCMCIA slot with a PCMCIA bus therein coupled via a PCMCIA bus controller circuit to said system bus and controlled by, said host computer programmed with and controlled by a plurality of software programs including an operating system, a barcode client application, a PCMCIA card interrupt service routine dedicated to retrieving from said PCMCIA card decoded alphamumeric characters from any PCMCIA card engaged in said PCMCIA slot, and further controlled by PCMCIA card management software which controls said host computer to detect the presence of a PCMCIA card in said PCMCIA slot, assign an interrupt number thereto and map a data register on any PCMCIA card engaged in said PCMCIA slot into the I/O space of said host computer at a known location relative to a base address in said I/O space of said host computer assigned to a memory location or storage register on said PCMCIA card, said data register functioning to store the alphnumeric character to be retrieved, and wherein said barcode client application controls said computer to interrogate said PCMCIA card management software to determine said interrupt number and said base address and store said interrupt number and a start address for said PCMCIA card interrupt service routine in an interrupt vector table used by said operating system, said barcode client application also controlling said computer to store said base address in a location known to said PCMCIA card interrupt service routine, said PCMCIA card management software further controlling said host computer to map one or more other registers and any auxiliary nonvolatile flash EEPROM memory on said PCMCIA card into the memory space of said host computer, said PCMCIA bus controller circuit for detecting an interrupt signal generated by said PCMCIA card and notifying said operating system of the interrupt number of said PCMCIA card, said operating system for controlling said host computer to use said interrupt number to find and invoke into execution said PCMCIA card interrupt service routine dedicated to retrieving alphanumeric characters from said PCMCIA card, said PCMCIA interrupt service routine and said PCMCIA card managment software for controlling said host computer to write data to predetermined control registers on said PCMCIA card to force said PCMCIA card into an I/O mode and controlling said host computer to use I/O cycles and said base address to retrieve said alphanumeric character from said data register and pass said alphanumeric character to said barcode client application for use, said host computer further programmed by one or more programs which control said host computer to read data from and write data for any purpose to any auxiliary nonvolatile flash EEPROM memory on a PCMCIA card engaged in said PCMCIA slot, said one or more programs structured to control said host computer along with said PCMCIA card management software to force said PCMCIA card into a memory mode without rebooting said host computer and to access said auxiliary flash EEPROM nonvolatile memory using memory cycles; a PCMCIA card comprising; a PCMCIA bus coupled to said PCMCIA bus of said host computer; a barcode scan engine of the laser or wand type mounted on said PCMCIA card and outputting undecoded signals encoding alphanumeric characters; a barcode decoder circuit having an input coupled to receive undecoded signals encoding alphanumeric characters embedded in a barcode and functioning to decode said undecoded signals into one or more alphanumeric characters and presenting said alphanumeric character(s) at an output; data register coupled to said PCMCIA bus and coupled to said barcode decoder circuit for receiving and temporarily storing said one or more alphanumeric character(s) decoded by said barcode decoder circuit until said PCMCIA interrupt service routine and said PCMCIA card management software control said host computer to force said PCMCIA card into I/O mode perform one or more I/O cycles to read the alphanumeric character(s) to be retrieved; an auxiliary nonvolatile flash EEPROM memory segmented into a high byte and a low byte for use at least as expansion or auxiliary memory for said host computer and mapped into memory space of said host computer by said PCMCIA card management software; byte steering means coupling both said high and low byte segments of said auxiliary nonvolatile flash EEPROM memory to high and low bytes of a data portion of said PCMCIA bus for steering the high byte data stored in said high byte segment of said auxiliary nonvolatile flash EEPROM memory selectably onto either said high byte or said low byte of said data portion of said PCMCIA bus, and for coupling said low byte segment of said auxiliary nonvolatile flash EEPROM memory to said low byte of said data portion of said PCMCIA bus; a card information means coupled to said PCMCIA bus and mapped into the attribute space of said PCMCIA card and into the memory space of said host computer, for storing card information structure data defining how said PCMCIA card is organized; a configuration option register means coupled to said PCMCIA bus and mapped into the attribute space of said PCMCIA card and into the memory space of said host computer, for storing a mode bit written into said configuration option register means by said host computer, said mode bit indicating whether said host computer desires said PCMCIA card to operate in I/O mode or memory mode such that other circuits can determine the meanings of predetermined signals on said PCMCIA bus that have different meanings in said I/O mode and said memory mode; card status register means coupled to said PCMCIA bus and mapped into said attribute space of said PCMCIA card for storing an interrupt enable mask bit written into said card status register means by said host computer such that said host computer can disable interrupts from said PCMCIA card; pin replace register means coupled to said PCMCIA bus and mapped into said attribute space of said PCMCIA card and into the memory space of said host computer, for storing the memory mode states of the signals on certain shared pins of said PCMCIA bus when said PCMCIA card was operating in memory mode for use by other circuits on said PCMCIA card that need the states of these signals for memory mode transactions such as accessing said EEPROM memory when said PCMCIA card is operating in I/O mode such that said host computer does not have to be rebooted after operating said PCMCIA card in I/O mode to retrieve decoded alphanumeric characters in order to operate in memory mode to access data stored in said nonvolatile memory on said PCMCIA card;
control register means coupled to said PCMCIA bus for storing one or more pacing bits needed to signal status of said host for a handshaking protocol between said host computer and said PCMCIA bus to carry out I/O send and receive transactions with said data register means or other circuits on said PCMCIA card, said pacing signal bits stored therein by said host computer under control of said barcode client application or said PCMCIA card interrupt service routine;status register means coupled to said PCMCIA bus for storing PC card status bits the states of which are controlled by the assertion of one or more signals output by said decoder circuit, said PC card status bits being read by said host computer under control of said barcode client application or said PCMCIA card interrupt service routine thereby causing said host computer to write said pacing bits into said control register means as part of said handshaking protocol of an I/O transaction to retrieve a decoded alphanumeric character. and wherein said control and logic interrupt means activates said PCMCIA card interrupt signal to said host computer based upon a predetermined Boolean logic combination of said bits stored in said status register means and said control register means; command register means coupled to said PCMCIA bus, for storing commands generated by said host computer under control of said barcode client application to control the manner in which said decoder circuit means carries out said decoding process so as to provide options to add specified prefixes or suffixes; an input port to receive data from any undecoded barcode scanning device external to said PCMCIA card; and a multiplexer having a first input coupled to received undecoded signals from said barcode scan engine and having a second input coupled to receive undecoded signals from said input port and having an output coupled to said input of said barcode decoder circuit, for coupling either said signals from said barcode scan engine or signals from said input port to said barcode decoder circuit under the control of a bit set in said control register.
-
-
19. A process executed on a host computer and a PCMCIA card, said host computer having a PCMCIA card slot engaged with a PCMCIA card having at least a barcode decoder circuit and nonvolatile auxiliary memory thereon, comprising:
-
booting said host computer to put an operating system into execution, and executing one or more PCMCIA card management programs and a barcode driver program on said host computer to control said host computer to find and manage said PCMCIA card and assign an interrupt number thereto and map various data storage registers and said nonvolatile auxiliary memory on said PCMCIA card into a memory address space of said host computer and to map one or more data registers on said PCMCIA card that store alphanumeric characters output by said barcode decoder circuit into an I/O address space of said host computer starting at an assigned base address in said I/O space and to store said interrupt number and the start address of a PCMCIA interrupt service routine which controls said host computer to retrieve said alphanumeric characters from said PCMCIA card in an interrupt vector table used by said operating system to launch interrupt service routines, and to store said base address of said one or more data registers in said I/O space in a memory on said host computer in such a way that said base address can be retrieved by said PCMCIA interrupt service routine, said PCMCIA card either having data written to one or more of said various data storage registers by said PCMCIA card management programs or defaulting to a data state at boot time to force said PCMCIA card into memory mode such that said auxiliary nonvolatile memory can be accessed via memory cycles; receiving a command from a user to launch a barcode application program that needs alphanumeric data entered by keyboard or through scanning a barcode, and responding thereto by loading and executing an application program to control said host computer to use keyboard data entered by a keyboard of said host computer or other alphanumeric data retrieved from said PCMCIA card such as alphanumeric data decoded by said PCMCIA card from the signals output by a barcode scan engine; receiving a command from said user by entering a command to said barcode application program or to said operating system to scan a barcode and passing a message to said barcode driver program indicating scanning of a barcode is desired; controlling said host computer using said barcode driver program so as to send a start signal to said PCMCIA card indicating scanning of a barcode is desired; receiving said start signal on said PCMCIA card and sending a start signal to a barcode scan engine or applying power thereto so as to activate scanning; detecting signals arriving from said barcode scan engine at said barcode decoder circuit and determining the type of barcode being scanned and the direction of the scan and decoding one or more alphanumeric characters from the signals arriving from said barcode scan engine and storing said alphanumeric characters in said one or more data resisters on said PCMCIA card mapped into the I/O space of said host computer; generating an interrupt signal on said PCMCIA card and sending said interrupt signal to said host computer after at least one alphanumeric character has been successfully decoded; and executing said PCMCIA interrupt service routine on said host computer and one or more of said PCMCIA card management programs to control said host computer to send data to predetermined data storage registers on said PCMCIA card to force said card into I/O mode and to execute one or more I/O cycles to retrieve said decoded alphanumeric character or characters from said PC card and do whatever is desired with said character such as pass the character to said application program or place said character in a keyboard buffer memory of said host computer or write the character into a nonvolatile memory on said PC card while using one or more of said various data storage registers on said PCMCIA card to store the signal state in said memory mode of various signals on said PCMCIA bus that are on pins that carry first predetermined signals in memory mode and second predetermined signals in I/O mode such that after said I/O cycles are completed, memory cycles can be resumed to access said auxiliary nonvolatile memory without rebooting said host computer; and using memory cycles to access said auxiliary nonvolatile memory during intervals when said PCMCIA bus is not tied up with performing I/O cycles. - View Dependent Claims (20)
-
-
21. A system comprising:
-
a PCMCIA card having a PCMCIA bus connector and either an undecoded barcode scan engine integrated or mounted thereon which generates an undecoded barcode scan signal that encodes the light and dark patterns of a barcode or having an input port for receiving an undecoded barcode scan signal that encodes the light and dark patterns of a barcode from a barcode scanning system which is external to said PC card and coupled to said input port by an electrical cable, and further comprising a sampling and PCMCIA interface adapter means coupled to receive said undecoded barcode scan signal and coupled to said PCMCIA bus connector, for generating compressed sample data of said undecoded barcode scan signal by determining a count value in a running count at the time of every transistion of said undecoded barcode scan signal above or below a reference voltage level and storing said counts in a latch or FIFO memory and generating an interrupt at predetermined times; a host computer in the form of a palmtop or personal digital assistant having a PCMCIA slot having said PCMCIA card engaged therewith with the PCMCIA bus connector of said PCMCIA card in electrical contact with a PCMCIA bus connector in said PCMCIA slot, said host computer having a PCMCIA bus controller circuit coupled to said PCMCIA bus for receiving said interrupt signal from said PCMCIA card and putting an interrupt number assigned to said PCMCIA card on a host bus of said host computer and for reading data from a data bus which is part of said PCMCIA bus and making it available directly or indirectly to a barcode decoding process, said host computer programmed with software to control said host computer to detect the presence of said PCMCIA card and assigning an interrupt number to said PCMCIA card and mapping said latch or FIFO memory of said PCMCIA card into either the I/O space or memory space of said host computer, and for controlling said computer to execute a predetermined interrupt service routine when said interrupt of said PCMCIA card is detected, said interrupt service routine controlling said computer to read said latch or FIFO memory of said PCMCIA card using either memory or I/O cycles and store the count stored in said latch or FIFO memory in a memory of said host computer, said software of said host computer also structured to control said host computer to decode alphanumeric characters encoded in said undecoded barcode scan signal, as determined by said counts retrieved from said latch or FIFO memory on said PCMCIA card and using said run lengths to decode said alphanumeric signals.
-
Specification