|
|
楼主 |
发表于 2007-3-15 15:08:49
|
显示全部楼层
可是源程序说是QB啊 大家帮忙看看
REM $INCLUDE: 'qbdecl.bas'
DECLARE SUB gpiberr (msg$)
DECLARE SUB dvmerr (msg$, spr%)
CLS
PRINT "Read 10 measurements from the meter..."
PRINT
CALL ibdev(0, 8, 0, T30s, 1, 0, dvm%)
IF (dvm% < 0) THEN CALL gpiberr("Ibdev Error")
CALL ibclr(dvm%)
IF (ibsta% AND EERR) THEN CALL gpiberr("Ibclr Error")
wrt$ = "*RST"
CALL ibwrt(dvm%, wrt$)
IF (ibsta% AND EERR) THEN CALL gpiberr("Ibwrt Error")
SLEEP 4
wrt$ = "CONF:VOLT C"
CALL ibwrt(dvm%, wrt$)
IF (ibsta% AND EERR) THEN CALL gpiberr("Ibwrt Error")
sum = 0!
FOR i% = 1 TO 10
wrt$ = "READ?"
CALL ibwrt(dvm%, wrt$)
IF (ibsta% AND EERR) THEN CALL gpiberr("Ibwrt Error")
rd$ = SPACE$(11)
CALL ibrd(dvm%, rd$)
IF (ibsta% AND EERR) THEN CALL gpiberr("Ibrd Error")
reading$ = LEFT$(rd$, ibcnt%)
PRINT "reading: "; reading$
sum = sum + VAL(reading$)
NEXT i% ' Continue FOR loop until 10 measurements are read.
PRINT "The average of the 10 readings is: ", sum / 10
CALL ibonl(dvm%, 0)
END
SUB dvmerr (msg$, spr%) STATIC
PRINT msg$
PRINT "Status Byte = &H"; HEX$(spr%)
CALL ibonl(dvm%, 0)
STOP
END SUB
SUB gpiberr (msg$) STATIC
PRINT msg$
PRINT "ibsta = &H"; HEX$(ibsta%); " <";
IF ibsta% AND EERR THEN PRINT " ERR";
IF ibsta% AND TIMO THEN PRINT " TIMO";
IF ibsta% AND EEND THEN PRINT " END";
IF ibsta% AND SRQI THEN PRINT " SRQI";
IF ibsta% AND RQS THEN PRINT " RQS";
IF ibsta% AND SPOLL THEN PRINT " SPOLL";
IF ibsta% AND EEVENT THEN PRINT " EVENT";
IF ibsta% AND CMPL THEN PRINT " CMPL";
IF ibsta% AND LOK THEN PRINT " LOK";
IF ibsta% AND RREM THEN PRINT " REM";
IF ibsta% AND CIC THEN PRINT " CIC";
IF ibsta% AND AATN THEN PRINT " ATN";
IF ibsta% AND TACS THEN PRINT " TACS";
IF ibsta% AND LACS THEN PRINT " LACS";
IF ibsta% AND DTAS THEN PRINT " DTAS";
IF ibsta% AND DCAS THEN PRINT " DCAS";
PRINT " >"
PRINT "iberr = "; iberr%;
IF iberr% = EDVR THEN PRINT " EDVR <DOS Error>"
IF iberr% = ECIC THEN PRINT " ECIC <Not CIC>"
IF iberr% = ENOL THEN PRINT " ENOL <No Listener>"
IF iberr% = EADR THEN PRINT " EADR <Address error>"
IF iberr% = EARG THEN PRINT " EARG <Invalid argument>"
IF iberr% = ESAC THEN PRINT " ESAC <Not Sys Ctrlr>"
IF iberr% = EABO THEN PRINT " EABO <Op. aborted>"
IF iberr% = ENEB THEN PRINT " ENEB <No GPIB board>"
IF iberr% = EOIP THEN PRINT " EOIP <Async I/O in prg>"
IF iberr% = ECAP THEN PRINT " ECAP <No capability>"
IF iberr% = EFSO THEN PRINT " EFSO <File sys. error>"
IF iberr% = EBUS THEN PRINT " EBUS <Command error>"
IF iberr% = ESTB THEN PRINT " ESTB <Status byte lost>"
IF iberr% = ESRQ THEN PRINT " ESRQ <SRQ stuck on>"
IF iberr% = ETAB THEN PRINT " ETAB <Table Overflow>"
PRINT "ibcnt = "; ibcnt%
CALL ibonl(dvm%, 0)
STOP
END SUB |
|