找回密码
 注册
LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
查看: 958|回复: 4

[求助]请教qbdecl.bas是什么,怎么用?

[复制链接]
发表于 2007-3-13 14:14:40 | 显示全部楼层 |阅读模式
请教qbdecl.bas是什么,怎么用?


DECLARE SUB gpiberr (msg$)
DECLARE SUB dvmerr (msg$, spr%)
……



运行环境Winxp sp2   Quick Basic 7.1



提示“File not found”



删除 REM $INCLUDE: 'qbdecl.bas'



运行提示:“Subprogram not defined”



请教这个问题如何解决?
发表于 2007-3-13 20:31:44 | 显示全部楼层
你那个是VB的一个模块,删除了程序当然不能运行.你如果用过VB就知道怎么用了.在VB中加入这个文件就可以引用它中间定义的过程和函数.
回复 顶

使用道具 举报

 楼主| 发表于 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:VOLTC"
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
回复 顶

使用道具 举报

发表于 2007-3-15 15:39:32 | 显示全部楼层
Quick basic 和VB都是基于basic语言的,实际上差不多.你的程序中CALL后面的都是自定义函数(过程).好像没有看到这些自定义函数哦.你可以找一下那个'qbdecl.bas',不知是不是QB自带的哦.
回复 顶

使用道具 举报

 楼主| 发表于 2007-3-16 11:08:37 | 显示全部楼层
qbdecl.bas在NI的网站上找到了相关程序 ,但是没有其他定义的函数,第一个问题是解决了,谢谢!
回复 顶

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2026-9-30 02:22 , Processed in 0.033902 second(s), 6 queries , Gzip On, File On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表