Running Gravograph98 inside VMware
Recently I migrated my mom to Linux, well, not her but the Windows XP machine in her small shop where she sells trophies and engravings. No, I did not do the web site. (Update: web site has been revamped).
While her requirements are mostly trivial (Office, Mail, Browser, Patience Game), she also owns a IS200 engraving machine which is programmed by Gravograph (Gravostyle), a CAD-like program. And that runs only under Windows. Bummer.
Worse, the program is using a dongle (on the parallel port) and it is communicating via the serial line with the IS200 engraving robot.
Still for various reasons I pressed on with the plan and installed Debian Linux on the box together with a draconian firewall.
- That would take protect my Mum from at least some Windows security hiccups. Helps my mum.
On top of that, I added a VMware Workstation and reinstalled Windows XP there together with the Gravograph98 program.
- That allows me to incarcerate the Windows instance. And it would not run all the time. Helps the machine.
- And if my Mum again has misconfigured it, I can easily revert it to the last working state. Helps me.
To my surprise the dongle on the parallel interface worked out of the box once your VMware instance has the parallel port connected to the host operating system. And to my utter surprise also the serial interface was also working instantly.
Engraving jobs worked .... until, until they hit a certain size limit (a few kilobytes). Longer, more complex jobs would obviously start transferring to the engraving machine, but the communication would then stop, leaving the jobs incomplete.
This looked like a buffer overrun problem with the serial port. I was speculating that VMware was sending the data much faster than the port (configured with good'old 9600 baud) would be able to handle.
After some googling I found interceptty. According to its own man page it was perfect:
interceptty is designed to sit between a serial port ... and a program which is communicating with that device, recording everything that goes back and forth between the two. .... It has a number of options that let you fine-tune the devices it uses and the terminal options for the real device.
The next step was to configure VMware to use a file socket, say @/tmp/togravo instead of the /dev/ttyS0 itself and let interceptty handle the communication between the two:
Once this is running, I let the VMware instance come up:
When that is terminated, interceptty will be terminated too:
Easy. And it works until .... until my mom ruins it again.