I had a discussion recently from someone wanting to know how to setup FileMaker Pro with a barcode scanning system. I have setup a FileMaker Pro system called PassTracker that employs barcodes to keep track of membership activity at gyms. I was able to provide him with an overview of how to do this and thought it might be worth repeating for anyone wanting to get started with barcodes. No demo file this time, but hopefully the overview will get you started and through most of the major hurdles.
To employ Barcodes with a FileMaker Pro system, three or four things are required:
- A barcode font
- A barcode scanner
- A FileMaker Pro database system setup to create and input barcodes
- Optional – A dedicated computer to scan in the barcodes
Outbound – Sending Barcoded Items out into the World from FileMaker Pro
Install the font on the FileMaker Pro computer, (here are a couple of ‘how-to’s’ on installing fonts on Windows and Macintosh) so that it can be selected, in the same way that fonts such as Helvetica or Times, can be applied. In the FileMaker Pro database, create a serial number field. This serial number field will be the basis of your barcode field. Barcodes require a beginning and end character, usually the star character on your keyboard: ‘*’. Create a calculated field that wraps your serial number field with a star at either end of the field and set it to use the barcode font for display purposes.
Place this field on a label field layout and print out a set of bar code labels.
Printing options include:
- outputting to a label printer on sticky labels to apply to equipment
- printing to plastic card printers
- batch printing on business card stock, to issue identity cards etc.
Inbound – Bringing Barcoded items back into FileMaker Pro
One way to visualize a barcode scanner is to imagine it as a very fast typist entering a code into the computer. Imagine that fast typist banging away on the keyboard, if no field is selected, FileMaker Pro will simply beep for each keystroke sent. If the cursor is in the wrong field, gibberish will be entered into the wrong fields, potentially corrupting data. This is where a dedicated computer for the barcode scanner can be useful. If the project can justify it, the best possible solution is the purchase of a dedicated computer to receive the barcodes. That computer can be setup to always be in the right field and in the right mode, ready to execute any scripts setup to react to the barcode.
1) Select a barcode font
There are a number of barcode fonts available to choose from, some quite expensive. Fortunately, there are free versions of the common and useful Code 39 barcode font:
Select a Barcode scanner
Again, there are many options available in barcode scanners. Select a model that will work for the projects requirements. I have had good luck with a relatively inexpensive model from Metrologic called the Voyager MS9520. This USB model is widely available, straightforward to configure and the units I have purchased have been in service for years with no issues. There are wireless models available as well for more portable scanning.
FileMaker Pro database setup for Barcode scanning
The example above is from PassTracker, a FileMaker Pro-based system, developed by me (HomeBase Software), designed to keep track of gym membership activities. Each member is issued a pass card with a barcode printed on it. When gym members show up at the gym, they place their card in front of the barcode scanner and it scans them in. A dedicated computer is setup to receive the scanned code. If the customer’s membership has expired, the system will beep a warning to staff and display an error message to the customer to review their purchase.
Outbound – Set up the label to be printed
Select the field that will display the barcode and set it to use the barcode font. In this case, the field with the barcode font was rotated for space concerns.
Printing out Barcode labels
This is a layout to print out sheets of barcode cards. It is also possible to print single labels to a label printer. The label printer output is on sticky backed paper that can be applied to equipment or cards etc. Printers are also available to print membership cards on plastic cards, such as the Evolis Pebble.
Inbound – Setting up the FileMaker Pro field for scanning
When the bar code is scanned into the field, FileMaker Pro needs to do something with the barcode number. According to my handy-dandy reference, the FileMaker Pro Timeline, since FileMaker Pro 10, developers have had the ability to use Script Triggers to trigger an event when something happens in a FileMaker Pro field. If you are working with a version of FileMaker Pro 10, check out some of these plugins to achieve a similar effect.
Configuring the Barcode Scanner
When setting up the barcode scanner, look for something called a scan Suffix in the Configuration Guide provided with the scanner. Enabling this configuration will add a Tab character to the end of each scan. Back in FileMaker Pro, select the barcode field and make sure that the “Go to next object using” option is set to move out of the field with the Tab character.
Setting up a Script Trigger in FileMaker Pro
Right click on your field and select “Set Script Triggers…” from the contextual menu that pops up.
Select a Script to react to the barcode being entered into the field.
The steps that will occur in the scanning process are:
- The cursor starts in the barcode field. An ‘On Open’ script can set this up to happen each time the database is opened.
- The barcode is scanned using the Barcode Scanner.
- The barcode text or serial number enters into the field, with a TAB character added at the end
- The TAB character causes the cursor to move out of the field
- The Script Trigger is triggered by the cursor leaving the field
- The scan processing script (in this example: “Button Triggered Scan”) is initiated
- Once the script executes and is completed, the cursor is returned to the barcode field in anticipation of the next scan.
The need for a dedicated computer to handle the barcode scanning
In low volume situations, it is possible to get by with a single computer. Every time a barcode is to be scanned, a human being must make sure that the cursor is in the appropriate field, ready to receive the barcode scan. This can work well if all input is to be done in a batch mode. In higher volume applications or when scanning occurs at random times, it is always better to have a dedicated computer setup with the script always returning the cursor to the scanning field after each scan. This allows for an unmanned computer to receive scans as they occur without any human intervention or risk of data corruption if the cursor is in the wrong field.
Return to barcode field at the end of the processing script
The script in PassTracker uses a global field for the barcode scan. At the end of each processing, the script clears the field and then selects the field, in anticipation of the next scan.
While the script is running, the scanner can send another code to the computer, but it will be ignored until the script returns the cursor to the field. Occasionally the system will beep, but unless the script enters another field during the execution, there should be no impact.
Conclusion: Hopefully this overview will help getting started with using barcodes in FileMaker Pro databases. Good luck.
Update 2013-07-26: I posted a link about this blog post on the ‘FileMaker Pro Users/Developers’ Facebook page. Reader Jason Wood commented that he had had success using Troi’s Serial Plugin with a $26 USB to Serial cable from Cables to Go. He says “With the Troi serial plug-in you configure a script to run if data is received over the serial port, then your script handles what to do with that data.”
The only downside of this approach is pricing. Troi, on their web site, state that they view the plugin as a specialized plugin and don’t sell single installation versions. The cost to get started with it is to purchase a full cross platform developer license for $999.
2014-01-18 Update: Skeleton Key has a good article on why you might select one bar code font over another.