I have two GPIB instruments attached to ICS 8065 Ethernet - GPIB
Controller (according to the manual this device is a replacement for
the Agilent E2050 and E5810). I have written two soft IOC's to
control and monitor two instruments (one is Agilent 33220A Waveform
Generator, the other is Boonton 4500B RF Peak Power Analyzer). Both
IOC programs use epics R3-14-9, asyn R4-9, and streamdevice R2-3.
The 33220A IOC has a records with SCAN="1 second", which reads the
status byte. The 4500B IOC has a waveform record with SCAN="5
second", which is used to read waveform data, a stream of ASCII coded
floating point values. The waveform consists of 500 data points.
This stream of data is converted to floating point data in a genSub
record.
The 4500B IOC program performs flawlessly when it is the only one
running. When the 33220A IOC program is also running, the waveform
data read by the 4500B IOC gets corrupted from time to time. I
interpret what is happening as follows: while the waveform data is
being read, the other IOC program requests a status byte and somehow
these two concurrent operations interfere with each other. How can I
solve this? Is it possible to make reading the waveform an atomic
operation (i.e. uninterruptable)?
I am using the following streamdevice protocol for reading the
waveform:
rTDCh12{ InTerminator=""; out "TRAC:SOUR CH\$1;:TRAC\$1:INDEX
1;:TRAC\$1:AVER:DATA?"; in "%10000c";}
Any suggestions will be greatly appreciated.
Zen