Barcode scanners in PHP applications:
PHP can be easily utilized for reading bar codes printed on paper documents. Connecting manual barcode reader to the computer via USB significantly extends usability of PHP (or any other web programming language) into tasks involving document and product management, like finding a book records in the database or listing all bills for a particular customer.
Following sections briefly describe process of connecting and using manual bar code reader with PHP.
What is a bar code reader (scanner)
Bar code reader is a hardware pluggable into computer that sends decoded bar code strings into computer. The trick is to know how to catch that received string. With PHP (and any other web programming language) the string will be placed into focused input HTML element in browser. Thus to catch received bar code string, following must be done:
- just before reading the bar code, proper input element, such as INPUT TEXT FIELD must be focused(mouse cursor is inside of the input field).
- once focused, start reading the code
- when the code is recognized (bar code reader usually shortly beeps), it is send to the focused input field. By default, most of bar code readers will append extra special character to decoded bar code string called CRLF (ENTER). For example, if decoded bar code is “12345AB“, then computer will receive “12345AB<ENTER>“. Appended character <ENTER> (or <CRLF>) emulates pressing the key ENTER causing instant submission of the HTML form:
1 <form action="search.php" method="post"> 2 <input type="text" name="documentID" onmouseover="this.focus();"> 3 </form>
Choosing the right bar code scanner
When choosing bar code reader, one should consider what types of bar codes will be read with it. Some bar codes allow only numbers, others will not have checksum, some bar codes are difficult to print with inkjet printers, some barcode readers have narrow reading pane and cannot read for example barcodes with length over 10 cm. Most of barcode readers support common barcodes, such as EAN8, EAN13, CODE 39, Interleaved 2/5, Code 128 etc.
For office purposes, the most suitable barcodes seem to be those supporting full range of alphanumeric characters, which might be:
- code 39 – supports 0-9, uppercased A-Z, and few special characters (dash, comma, space, $, /, +, %, *)
- code 128 – supports 0-9, a-z, A-Z and other extended characters
Other important things to note:
- make sure all standard barcodes are supported, at least CODE39, CODE128, Interleaved25, EAN8, EAN13, PDF417, QRCODE.
- use only standard USB plugin cables. RS232 interfaces are meant for industrial usage, rather than connecting to single PC.
- the cable should be long enough, at least 1.5 m – the longer the better.
- bar code reader plugged into computer should not require other power supply – it should power up simply by connecting to PC via USB.
- if you also need to print bar code into generated PDF documents, you can use TCPDF open source library that supports most of common 2D bar codes.
Installing scanner drivers
Installing manual bar code reader requires installing drivers for your particular operating system and should be normally supplied with purchased bar code reader.
Once installed and ready, bar code reader turns on signal LED light. Reading the barcode starts with pressing button for reading.
Scanning the barcode – how does it work?
STEP 1 – Focused input field ready for receiving character stream from bar code scanner:
STEP 2 – Received barcode string from bar code scanner is immediatelly submitted for search into database, which creates nice “automated” effect:
STEP 3 – Results returned after searching the database with submitted bar code:
It seems, that utilization of PHP (and actually any web programming language) for scanning the bar codes has been quite overlooked so far. However, with natural support of emulated keypress (ENTER/CRLF) it is very easy to automate collecting & processing recognized bar code strings via simple HTML (GUI) fomular.
The key is to understand, that recognized bar code string is instantly sent to the focused HTML element, such as INPUT text field with appended trailing character ASCII 13 (=ENTER/CRLF, configurable option), which instantly sends input text field with populated received barcode as a HTML formular to any other script for further processing.