I found the main problem. The terminal program needed a "VISA async lock" to prevent the launch program breaking the serial coms - this manifested as a problem in the terminal program.
(my previous comment should have said "key up" event=28 (return) otherwise you'd never see the updated control)
Thanks for the help I've got a much better program structure now!