Create GS1 DataMatrix barcodes with Brother P-touch Editor

Create GS1 compatible DataMatrix barcodes in P-touch Editor by following these steps:

Insert the DataMatrix barcode

In P-Touch Editor, select Insert > Bar Code from the menu. Switch to the Protocol tab and select the DataMatrix protocol:

DataMatrix Protocol

Add the Function 1 Symbolic Character (FNC1)

This special character is used to differentiate GS1 DataMatrix from other Data Matrix barcodes. Go to the Setup tab and check the Specify Industrial Protocol (FNC1) box:

FNC1

Add the GS1 element strings

You must follow the GS1 rules when encoding data in a GS1 DataMatrix. I highly recommend that you review Chapter 2 (Encoding data) in the GS1 DataMatrix Guideline (PDF). P-touch editor won’t prevent you from making any mistakes!

As an example, I’m going to recreate the GS1 DataMatrix barcode found in TL A-0032 Part 1, Edition 7 (page 12).

It contains both a GTIN-13 (4012345000016) and a serial number (ABC17829). The corresponding GS1 DataMatrix Application Identifiers are 01 (GTIN-13) and 21 (serial no.). The GTIN-13 has to be padded with a leading 0 to match the expected length of 14 characters. Therefore, the concatenated string is  010401234500001621ABC17829:

GS1 DataMatrix data

The resulting barcode matches the example, though it seems that P-touch Editor cannot add the Human readable Interpretation (HRI):

GS1 DataMatrix comparison

You could, of course, add the HRI using the text tool.

For further information, please consult the GS1 DataMatrix Guideline (PDF)!

RS-232 (serial port) and PHP under Windows

Unlike Flash or JavaScript, PHP is not sandboxed and might therefore look like an acceptable choice when trying to communicate over RS-232. After briefly looking into it, I wouldn’t recommend it for production systems. Anyhow, here are the options I found:

1. DIO Direct I/O functions

The DIO functions have not been bundled with PHP for years,  but you can download the DIO Package here (it’s still in beta). The following article contains instructions on how to install and use it: How do I control a serial port using PHP? The required php_dio.dll file is available for PHP up to version 5.6, though the PHP manual says that the DLL is “currently unavailable” (which is true if you’re using PHP 7).

On a Linux system, according to what I’ve read, the DIO extension is probably the best way to use a serial port with PHP.

2. PHP Serial class (a.k.a php_serial)

The current version can be found here. “There is lots of bugs”. On Windows, “it seems to be working for some people, not working for some others.” Good luck.

3. Serial-to-Network Proxies

You’ll find many of these proxies on Arduino Playground, including useful descriptions. They are written in languages better suited for the task (well some of them are) and act as intermediaries between serial and network connections. In PHP, you’d simply connect to the socket provided by the proxy (careful, some are unidirectional). This option might be your best bet on Windows, but obviously makes things more complicated.

This list is not exhaustive, but at this point I decided to abandon the entire idea. Don’t hesitate to post your solution in the comments if you’ve found one that isn’t listed. However, please don’t bother asking me any PHP-and-RS-232 related questions as I won’t be able to answer them.

How to add a URL to the Java Exception Site List file

On one of our computers, the Security Tab in the Java Control Panel sometimes looks like this:
Java Control PanelAs you can see, the part required to manage the exception site list is missing/not accessible. I have no idea why (reinstalling Java did not help).

However, you can also add exceptions by directly editing the exception.sites file. Under Win 7, it is normally found in the C:\Users\*YOUR USERNAME*\AppData\LocalLow\Sun\Java\Deployment\security directory. Simply add a new line for each URL (e.g. https://stupdidbank.example.com), save the file, then restart the browser.

See this page or the official Java documentation for further information.

Why disabling Flash in Chrome is better than Click-to-Play

Chrome comes with its own Flash plugin and – if you’ve enabled “click-to-play plugins” you might get the impression that Flash is still widely used (and required) on the internet. According to what I’ve read today, this might be misleading: Even though you’ve enabled click-to-play, websites will still detect that your browser supports Flash and serve you the Flash-enabled version instead of the Flash-less alternative.

To disable Flash in Google Chrome, enter “chrome://plugins” and then click on “Disable”:
Disable Flash in Google Chrome

Keyboard wedge software for RS-232 and USB interfaces

What is a keyboard wedge?

In the days before USB, bar code readers often came with a hardware keyboard wedge, a little device which allowed both a keyboard and the barcode reader to be connected to the keyboard port (PS/2) of a PC. Codes scanned by the barcode reader could thereby be transmitted as keystrokes. As far as the computer was concerned, there was no difference between a key pressed on the keyboard and one sent by the barcode scanner. This allowed the barcode scanner to be used with any application that accepted keyboard inputs.

While hardware keyboard wedges have become rare (most barcode scanners today connect via USB and appear as a human interface device), this very flexible concept still exists in the form of a virtual keyboard wedge (a.k.a. software keyboard wedge, “RS-232 to keyboard”-software). These programs are usually used with devices that connect to a computer via RS-232 (COM port) or that emulate an RS-232 connection while actually connecting through USB, Bluetooth SPP (serial port profile) or any other kind of virtual COM port.

Such devices include measurement instruments like balances and scales, digital calipers, etc. and legacy devices like serial barcode scanners and card readers. The software keyboard wedge connects to these devices and types received data into any application as simulated keystrokes.

Keyboard wedge software for Windows

This list contains all keyboard wedge programs I know of in alphabetical order. Prices were last updated on June 1st, 2019. Please leave a comment if you know a program not listed here.

  • 232key: Free (232key Plus with additional features: US$30). Easy to configure, extensive documentation available on website. Predefined settings for many balances and scales. Powerful custom regular expressions to capture exactly the data you want (Plus version only). Can be used concurrently with 232key MU (US$50) to connect to two serial devices. Disclosure: I made this.
  • Bill Redirect: Commercial (US$35). Lots of tutorials available. Particularly interesting for touchscreens.
  • Datasnip keyboard wedge: Free (AUD 10 for advanced options). Simple, straightforward user interface. Advanced options include hotkey to send command to connected device.
  • ewCaptSer: Free. Only available in German. Minimal functionality.
  • Kern Balance Connection 4: Commercial (starts at 150€ excl. VAT, includes device-specific RS-232 cable). Predefined settings for Kern balances and scales.
  • KeyInjector: Commercial (four versions from US$24.95 to US$74.95).
  • RsKey (Win CT): Free, only works with scales and balances using A&D’s data format.
  • TWedge: Commercial (from 116 US$). Extensive functionality, can be adapted to almost any task through scripts (using JavaScript).
  • WedgeLink: Commercial (89 US$ Lite, 195 US$ Standard), support up to two serial devices.
  • WinWedge: Commercial (299 US$ Standard, 399 US$ Professional). See feature list comparison.

Which keyboard wedge software is the best?

Impossible to say, without knowing what you’re planning to do, looking at each program in detail and testing it to see if it works reliably.

Generally speaking (and keep in mind that I’m certainly biased here), 232key can do many things for free which would otherwise cost you money (sometimes a lot of money). It is certainly worth trying out, particularly if you want to transfer the weight from a scale or balance to your PC. Please note that 232key cannot (currently) request data from your device (by sending a device-specific command), so you’ll have to press a key on your device instead (like the “Print” key on a scale, though many scales can also be configured to send stable data automatically). Thanks to feedback from my users and customers, I’m constantly adding new useful features to 232key (see changelog).

TWedge is (in my experience with several demanding customers) an excellent choice if you need maximum flexibility or want to connect to multiple devices at the same time. There’s hardly anything it can’t do if you’re willing to modify the scripts that come with it. While some other programs look like they haven’t been updated in a while, TWedge is regularly improved. Its latest version can even intercept and modify data sent by USB human interface devices (HID) like modern barcode scanners.

Further information on RS-232 interfaces

Have a look at my curated page on Zeef which includes links to general information on RS-232, keyboard wedge software, terminal software and RS-232 analyzers.