I added a serial converter to the system just before the problem - checking the device it's got an FTDI device, with driver dated 26/08/14 with Version 2.12.0.0
The Paylink driver is from Money Controls version 2.8.2.0
Although the chips are the same, the driver file for Paylink (which is the FTDI one renamed) is kept separate from the driver file for general FTDI devices.
However... when either Paylink or a general FTDI device install their drivers they also install a DLL, which has the same name and location for both and so the DLLs overwrite each other - which normally doesn't really matter.
Unfortunately one of the parameters to a call in this DLL has the value 0 for normal or 2 for unusual. The Paylink driver program has been using 1 for this for the last 10 years, but the newest DLL has just decided that values has to be 0 or 2 or the call fails!