[comp.os.vms] VAXLAB and LABSTAR

rpozos@umn-d-ub.D.UMN.EDU (Robert Pozos) (02/27/88)

 I hope someone can enlighten me as to what is going on. I have a VAXLAB
system based on the VAXSTATION II/GPX hardware with the LABSTAR
software. I am trying to sample 8 channels of data with a sine-wave
generator set at 10 hz. on channel 0 (first A/D channel). The following
code is what I am using for this. It runs ok, however when I plot the
results of the data acquisition, I see the sine wave on the second
channel (starting at point 2 of the array instead of point 1). IS there
something I am missing about the way the array is mapped in memory? 
Perhaps someone from DEC could respond who is familiar with these
products.

Brad Ingersoll
UMD School of Medicine
Dept of Physiology
Duluth MN

      PROGRAM TEST
C
        INCLUDE 'sys$library:LIOSET.FOR'   !LIO$SET_I symbol definitions
        INTEGER*2       ADBUF1(numpts+256)
        INTEGER         device_id         !A/D device ID variable
        INTEGER         clk_ID          !clock device ID variable
        INTEGER         data_length     !number of data points read
        INTEGER         status          !status returned by LIO calls
        REAL RATE
C Attach to the clock
C       Gets a device ID for the KWV and tells LIO to use QIO I/O
C
        status = LIO$ATTACH(clk_ID, 'KZA0', LIO$K_qio) !attach to kwv
                IF(.NOT.(status))       CALL lib$signal(%val(status))

        status = LIO$SET_R(clk_ID, LIO$K_CLK_RATE, 1, rate)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
        status = LIO$SET_I(clk_ID, LIO$K_FUNCTION, 1, LIO$K_REP_COUNT)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
        status = LIO$SET_I(clk_ID, LIO$K_TRIG, 1, LIO$K_IMMEDIATE)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
C
C Set up the A/D
C       synchronous interface (LIO$READ)
C
        status = LIO$ATTACH(device_id,'AZA0', LIO$K_MAP)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
        STATUS = LIO$SET_I(device_id,LIO$K_SYNCH,0)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
        status = LIO$SET_I(device_id, LIO$K_AD_CHAN, 8,0,1,2,3,4,5,6,7)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
        status = LIO$SET_I(device_id, LIO$K_AD_GAIN, 8,1,1,1,1,1,1,1,1)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
        status = LIO$SET_I(device_id, LIO$K_TRIG, 2,
     1          LIO$K_CLK_SWEEP, clk_ID)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
        isamples=numpts*2
        do 108 i=1,numfrm
        print *,' processing frame number ',i
C
        CALL LIB$INIT_TIMER
        status = LIO$READ(device_id,ADBUF1,isamples,DATA_length,)
                IF(.NOT.(status))       CALL lib$signal(%val(status))
C
        CALL LIB$SHOW_TIMER
C
        WRITE(1'FRAME)ADBUF1
C        TYPE 10
C        TYPE 12,FRAME
108   continue
        status = LIO$DETACH(device_id, )
                IF(.NOT.(status))       CALL lib$signal(%val(status))