Does this site look plain?

This site uses advanced css techniques


A customer in the architectural audio industry wanted to expand into custom-printed audio and video cabling. Their customers would submit orders for (say) 1000 feet of a certain kind of speaker wire, and we would print the customer's name plus a distance marker every foot:

| 1' - Genesis Audio & Video
| 2' - Genesis Audio & Video
| 999' - Genesis Audio & Video
| 1000' - Genesis Audio & Video

When an installer for Genesis Audio & Video was onsite to install a sound system, he would note the foot marker at the start of the project, note it at the end, and the difference would be how much cable was used on the job. This saved having to measure each cable used individually and was a much more reliable measure for job costing.

I was responsible for creating the software and controller hardware that allowed a machine operator to enter the phrase and length on a PC, and my system would take care of driving the whole process. The name "Impresor" is derived from a Spanish word for "Printer".

Description of the Hardware

We used a Domino Amjet production-line inkjet printer that had a wire-carriage mechanism, inkjet spray head, and an encoder wheel that let us know how much and how fast the cable was flying past the printhead. The hardware system I created that linked the PC to the printer looked like this:

[Impresor Overview]

The labeled items are described as:

A - Signals Rendesvous Box
[Rendesvous Box-small] This was a mostly passive unit that merely routed the various signals where they needed to go. This unit was mounted out of the way and had only a single cable connecting it to the main control unit (item B, below), and this gave us a lot more flexibility: we didn't wish the controller box itself to have so many cables running to it that would make it harder to move around.
There is a small amount of active logic that helped condition a few of the signal lines that went to the printhead controller, but it's mainly just wires on the inside.
B - Custom Control Unit (cover removed).
[Control Unit-small] This housed the processor, LC display and the keypad. The heart is a Remote Processing RPC-320 embedded controller with an 8031 processor, 512KB of RAM, a high-resolution encoder input, and plenty of other I/O lines. With the built-in BASIC interpreter, it was easy to program this device over a serial line.
It drove a 40 character by 4 line LC display that had software-controlled backlight for low-light shop conditions.
[LC Display]
The keypad let the machine operator make immediate adjustments to the job without having to go through the PC. I used the keypad all the time to adjust internal parameters while working out the encoder timings (they proved to be very sensitive to cable speed).
C - Power Supply
This was a standard plug-in power supply that delivered a regulated 9 volts at 1200 mA.
D - Serial Cable to PC
The control PC (not shown here) ran software that did the programming of the print engine (specifying the phrase to print, for instance). We also received status backup information from the printer to mark each "print complete" condition and the like.
E - Cable to Domino Print Controller
This ran to the Domino printhead controller and was primarily a serial interface: the controller PC was the source of signals going to the Domino unit.
F - Cable from encoder wheel
As the wire flew past the printhead, the encoder wheel generated pulses that the custom control unit decoded to measure how much wire had traveled past, and at what speed.

Control Software

The Windows PC ran custom software written in Borland's Delphi, and it had two serial connections. One went directly to the Codebox (the Domino inkjet printer), and it gave configuration commands to set the print message and the like. This was a simple protocol with commands and responses. The other serial port went to the Impresor control box to drive the "print go" signal.

Once the motor controller starts moving the wire, the wire encoder counts out pulses indicating movement. Since the encoder wheel was a known size, we could compute how many pulses yielded one foot of wire. These encoder pulses went into the Impresor control box, and once it counted the proper number of pulses, it sent a "Print Go" signal to the Domino Codebox. This triggered the inkjet printing the next message, and once we finished the job we'd simply not send the print messages any longer.

The control software was several hundred lines of BASIC, and though the details cannot be of any practical interest, they do convey a style of development. The source code is in printmaster.txt. A representative Pascal module is codebox.txt.

The system has long been out of production and we don't have any screen shots of the Windows portion of the system.