The 34401A and E3632A are finally working flawless via RS232. I've been troubleshooting various errors for hours until I found out that in the end, two problems were interfering with each other. As these were immanent at two very differently spec'd computers, two OS (Linux and Win7) and with two different cables, I guess others might have the same issues, which is why I include my working device files.
Details regarding the issues found:
1. For communication via RS232, all commands need a delay. For the E3632A, 20ms is needed for a continuously flawless operation. For the 34401A, 10ms seems to work reliable if operated alone or in combination with just one E3632A. If operated together with two E3632A, a reliable continuous readout of values requires 20ms as well. The config files therefore are set to 20ms for both devices. The SAVe and ReCaL procedures on the E3632A require more time, which is why they are set to 200ms. It might be that the time can be shortened further, but 100ms did not work out and as I do not regard that procedure time-critical, I just played save and left it at 200ms that worked.
2. Some commands defined in the device files are transmitted with a trailing value. In cases where these commands are defined as
single commands (i.e. without a second command in direct sequence), the definition contains just the command without any further trailing addition. In cases of a definition that contains
two commands in one single sequence in which at least the first requires a value to be inserted, there is a placeholder in-between for the position of the value within the sequence. The placeholder is called "(value)". If one now adds a delay in form of [20] to a
single command, is necessary to insert the "(value)" placeholder after the command before finishing it with "," and adding the delay [20] afterwards. Otherwise, TC will transmit the command without a value and then transmit the delay as a second sequence via RS232, leading to errors on the device.
Example for case No. 2:
Original: Does not work: Right way: | ":write: OUTP" ":write: OUTP;[20]" ":write: OUTP (value);[20]" |
One should be aware that the debug mode slows the operation of TC down so that seemingly working delay timings found while testing them in debug mode can cause errors in non-debug mode.
Best wishes,
Christian