100 Chapter 4 Making Measurements
command is specific to Hewlett-Packard 200/300 controllers using BASlC
language). The TRANSFER statement is the fastest way to transfer readings
across the GPIB, especially when used with the direct memory access (DMA)
GPIB interface. You should use the TRANSFER statement whenever
measurement/transfer speed is important.
10 OPTION BASE 1 !COMPUTER ARRAY NUMBERING STARTS AT 1
20 INTEGER Num_readings !DECLARE VARIABLE
30 INTEGER Int_rdgs (1: 10) BUFFER !CREATE INTEGER BUFFER ARRAY
40 REAL Rdgs(l:l0) !CREATE REAL ARRAY
50 Num_readings=10 !NUMBER OF READINGS = 10
60 ASSIGN @Dvm TO 722 !ASSIGN MULTIMETER ADDRESS
70 ASSIGN Int_rdgs TO BUFFER Int_rdgs(*)!ASSIGN BUFFER I/O PATH NAME
80 OUTPUT @Dvm;"PRESET NORM;OFORMAT SINT;NPLC 0;NRDGS ";Num_readings
85 !TARM AUTO, TRIG SYN, SINT OUTPUT FORMAT, MIN. INTEGRATION TIME
90 TRANSFER @Dvm TO @Int_rdgs;WAIT !SYN EVENT,TRANSFER READINGS INTO
91 !INTEGER ARRAY; SINCE THE COMPUTER'S INTEGER FORMAT IS THE SAME AS
95 !SINT,NO DATA CONVERSION IS NECESSARY HERE (INTEGER ARRAY REQUIRED)
100OUTPUT @Dvm;"I SCALE?" !QUERY SCALE FACTOR FOR SINT FORMAT
110ENTER @Dvm;S !ENTER SCALE FACTOR
120FOR I=1 TO Num_readings
130Rdgs(I)=Int_rdgs(I) !CONVERT EACH INTEGER READING TO REAL
135 !FORMAT (NECESSARY TO PREVENT POSSIBLE INTEGER OVERFLOW ON NEXT LINE)
140R=ABS(Rdgs(I)) !USE ABSOLUTE VALUE TO CHECK FOR OVLD
150IF R>=32767 THEN PRINT "OVLD"!IF OVLD,PRINT OVERLOAD MESSAGE
160Rdgs(I)=Rdgs(I)*S !MULTIPLY READING TIMES SCALE FACTOR
170Rdgs(I)=DROUND(Rdgs(I),4) !ROUND TO 4 DIGITS
180NEXT I
190END
DINT Example The following program is similar to the preceding program except that it
takes 50 readings and transfers them to the computer using the DINT format.
10 OPTION BASE 1 !COMPUTER ARRAY NUMBERING STARTS AT 1
20 INTEGER Num_readings,l,J,K !DECLARE VARIABLES
30 Num_readings= 50 ! NUMBER OF READINGS = 50
40 ALLOCATE REAL Rdgs(l:Num_readings) !CREATE ARRAY FOR READINGS
50 ASSIGN @Dvm TO 722 !ASSlGN MULTIMETER ADDRESS
60 ASSIGN @Buffer TO BUFFER[4*Num_readings] !ASSIGN BUFFER I/O PATH NAME
70 OUTPUT @Dvm;"PRESET NORM;RANGE 10;FORMAT DINT;NRDGS";Num_readings
75 TARM AUTO, TRIG SYN,DCV 10V RANGE,DINT OUTPUT FORMAT,NRDGS 50,AUTO
80 TRANSFER @Dvm TO @Buffer;WAIT!SYN EVENT, TRANSFER READINGS
90 OUTPUT @Dvm;"1 SCALE?" !QUERY SCALE FOR DINT
100ENTER @Dvm;S !ENTER SCALE FACTOR
110FOR I=1 TO Num_readings
120ENTER @Buffer USING "#,W,W";J,K!ENTER ONE 16-BIT 2's COMPLEMENT
121!WORD INTO EACH VARIABLE J AND K(# = STATEMENT TERMINATION NOT
125!REQUIRED; W = ENTER DATA AS 16-BIT 2'S COMPLEMENT INTEGER)
130Rdgs(I)=(J*65536.+K+65536.*(K<0))!CONVERT TO REAL NUMBER
140R=ABS(Rdgs(I)) !USE ABSOLUTE VALUE TO CHECK FOR OVLD
150IF R>2147483647 THEN PRINT "OVLD"!IF OVERLOAD OCCURRED, PRINT MESSAGE
160Rdgs(I)=Rdgs(I)*S !APPLY SCALE FACTOR
170Rdgs(I)=DROUND(Rdgs(I),8) !ROUND CONVERTED READING
180PRINT Rdgs(I) !PRINT READINGS
190NEXT I
200END