有人搞过GPIB编程吗?(能否提供一下DEMO参考或者资料学习....谢谢!)
在网上找了一个DEMO, 运行报错!
unit ClearTriggerForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TClearTrigger = class(TForm)
GroupBox1: TGroupBox;
TriggerCmd: TButton;
QuitCmd: TButton;
ReadingsList: TListBox;
Timer1: TTimer;
procedure TriggerCmdClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure QuitCmdClick(Sender: TObject);
private
public
end;
const
ERR = $8000;
TIMO = $4000;
ENDgpib = $2000;
SRQI = $1000;
RQS = $800;
SPOLL = $400;
EVENT = $200;
CMPL = $100;
LOK = $80;
REM = $40;
CIC = $20;
ATN = $10;
TACS = $8;
LACS = $4;
DTAS = $2;
DCAS = $1;
EDVR = 0;
ECIC = 1;
ENOL = 2;
EADR = 3;
EARG = 4;
ESAC = 5;
EABO = 6;
ENEB = 7;
EDMA = 8;
EOIP = 10;
ECAP = 11;
EFSO = 12;
EBUS = 14;
ESTB = 15;
ESRQ = 16;
ETAB = 20;
T10s = 13;
BDINDEX = 0;
PRIMARY_ADDR_OF_DMM = 1;
NO_SECONDARY_ADDR = 0;
TIMEOUT = T10s;
EOTMODE = 1;
EOSMODE = 0;
ARRAYSIZE = 1024;
type
Tibsta = function : integer; stdcall;
Tiberr = function : integer; stdcall;
Tibcntl = function : Longint; stdcall;
Tibclr = function (ud : integer) : integer; stdcall;
Tibdev = function(ud: integer;
pad: integer;
sad: integer;
tmo: integer;
eot: integer;
eos: integer) : integer; stdcall;
Tibonl = function(ud: integer;
v: integer) : integer; stdcall;
Tibrd = function (ud: integer;
var rdbuf;
cnt: Longint) : integer; stdcall;
Tibtrg = function (ud : integer) : integer; stdcall;
Tibwrt = function (ud: integer;
var wrtbuf;
cnt: longint) : integer; stdcall;
var
ClearTrigger: TClearTrigger;
Gpib32Lib: THandle;
AddrIbsta : Tibsta;
AddrIberr : Tiberr;
AddrIbcntl : Tibcntl;
Pibsta : ^integer;
Piberr : ^integer;
Pibcntl : ^Longint;
ibclr : Tibclr;
ibdev : Tibdev;
ibonl : Tibonl;
ibrd : Tibrd;
ibtrg : Tibtrg;
ibwrt : Tibwrt;
ValueStr : packed array[0..2049] of char;
Dev : integer;
buf : packed array[0..100] of char;
implementation
procedure loadDLL;
var
str : string;
begin
If Gpib32Lib = 0 Then
Begin
str := 'LoadLibrary FAILED!';
MessageDlg(str, mtError, [mbOK], 0);
halt;
End;
@AddrIbsta := GetProcAddress(Gpib32Lib, 'user_ibsta');
@AddrIberr := GetProcAddress(Gpib32Lib, 'user_iberr');
@AddrIbcntl := GetProcAddress(Gpib32Lib, 'user_ibcnt');
@ibclr := GetProcAddress(Gpib32Lib, 'ibclr');
@ibdev := GetProcAddress(Gpib32Lib, 'ibdev');
@ibonl := GetProcAddress(Gpib32Lib, 'ibonl');
@ibrd := GetProcAddress(Gpib32Lib, 'ibrd');
@ibtrg := GetProcAddress(Gpib32Lib, 'ibtrg');
@ibwrt := GetProcAddress(Gpib32Lib, 'ibwrt');
if (@AddrIbsta = NIL) Or
(@AddrIberr = NIL) Or
(@AddrIbcntl = NIL) Or
(@ibclr = NIL) Or
(@ibdev = NIL) Or
(@ibonl = NIL) Or
(@ibrd = NIL) Or
(@ibtrg = NIL) Or
(@ibwrt = NIL) Then
Begin
str := 'GetProcAddress FAILED!';
MessageDlg(str, mtError, [mbOK], 0);
FreeLibrary(Gpib32Lib);
halt;
End;
Pibsta := @AddrIbsta;
Piberr := @AddrIberr;
Pibcntl := @AddrIbcntl;
end;