Controller Software
It is important that you can use any controller hardware as controller, e.g.
Special driver-Software is not necessary. The serial interface should be accessible by any software, written in any language.
To make sure that the device reacted on the controller's command, there will be a reply after EVERY command. If you have ever written a software which had to communicate with other devices, you might have found out, that if an answer is expected but doesn't come, the controller will 'hang' in the INPUT statement forever (unless there is not a special timeout procedure).
The devices must NOT access the bus without being adressed immediately before. Experienced programmers know, that it makes problems to receive serial data without waiting for it at this very moment.
Even if there are two separate wires for the data, the commands from controller and the reply from the device will never overlap. This is important if simple controllers without fullduplex capabilities are to be used. (Did you ever try to program a MCU-software-UART with 9600 baud fulldup?)
So, a sample BASIC controller program might look like this (don't care syntax)
Device$="*P1"
Frequency$="00435000000"
OUTPUT COM1; Device$ + "VO=" + Frequency$
INPUT COM1; Reply$
IF Reply$= Device$ + "VO=" + Frequency$ THEN
PRINT "Device answered correctly : " + Reply$
ELSE
PRINT "anything went wrong ..."
END IF
Translate this lines to C++, Pascal, Assembly, Fortran or whatever you like!