Suppose you run the shipping department for a company that ships products all over the world. You convinced upper management to buy a device for your department that weighs each package and detects its dimensions—width, length, and height—and shows the results on a display on the device’s font panel. All the shipping clerk has to do is read the information and enter it into the company’s shipping software, which calculates the rate and prints the shipping label.
Great, right? But soon problems came up. The shipping clerks were making too many transcription errors when entering the data in the shipping software, and the calculated rates were either too high (meaning your company overpaid for shipping) or too low (resulting in shipping delays). One of the clerks noticed that the device has a USB port, but when she plugged it in to her computer, the drivers loaded automatically, but nothing else useful happened.
What to do?
Custom App Development to the Rescue
This is a classic case of hardware-software integration: Connecting software (in this case, the shipping system) with a piece of hardware (the weighing/measuring device). This often calls for custom app development.
With the rise of the “Internet of Things” (IoT), the number of devices that will need some kind of software integration is projected to explode. Everything from simple pressure/temperature sensors to complex scientific instruments will connect to a single computer, a local-area network, the Internet, or some combination of the three. And in every case, someone is going to have to write the software to make these devices do something useful.
Why Hardware-Software Integration Is Hard
Writing software to integrate with a device can be tricky. In our imaginary weight/measurement device example, the manufacturer has provided a USB interface, so chances are good that it is already designed to “talk” to a PC. Some devices may have a serial or parallel port instead, which complicates matters somewhat, but still can be used to connect directly to a computer. Others may only have a few pins to which wires can be attached, and (if you’re lucky) some documentation that describes the purpose and specifications for each. (In this case, you may be in for some custom hardware development as well to connect the device to a computer.)
If the device manufacturer intended the device to connect to a computer, it’s probable that they provided an API, which simplifies the task of integrating the device with software because it “hides” most of the low-level signal generation and processing that the device understands.
Even with an API, hardware-software integration can be difficult.
- Poorly designed APIs: Despite their best efforts, the manufacturer’s software team may not have thought of all the ways the device might be used. Thus, the proper “hooks” may not be available, or may be difficult to code around.
- Poorly documented APIs: When the API documentation is poorly written or incomplete, the developer’s job is that much more difficult, with much back-and-forth with the manufacturer’s technical support, or trial and error until it works.
- API changes and firmware updates: Device firmware updates can cause changes in the behavior of the device, so that parts of the API no longer work or work differently. This can cause errors in the integration software. Device manufacturers try to avoid this, but sometimes they miss or have no choice.
Despite the difficulties, hardware-software integration can reap great benefits in automation. In our fictional example above, the company turned to a custom software development shop (such as AndPlus), and asked them to update the shipping software to automatically read the weight and dimensions of the package from the device. The device manufacturer had a fabulous, easy to use API, and the software was completed in a short time. Result: Transcription errors were eliminated, productivity went way up, and you got a raise. Win-win for everyone.