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.

Keyboard wedge software for RS-232 and USB

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 November 23, 2016. Please leave a comment if you know a program not listed here.

  • 232key: Free (232key Plus with additional features: US$29). 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$49) 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 (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

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