<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Need help for trouble shooting delphi code , THANKS FOR HELP. in Windows Server 2003</title>
    <link>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436098#M5609</link>
    <description>Hello all fellows, &lt;BR /&gt;&lt;BR /&gt;we are testing a LCR machine for measuring components such like &lt;BR /&gt;Resistor / Capacitor / Transistor ....etc. &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;and we're testing a delphi code to get the LCR log , but the code &lt;BR /&gt;running with errors: &lt;BR /&gt;"Unable to write to device &lt;BR /&gt; ibsta = $8100 &amp;lt; ERR CMPL &amp;gt; &lt;BR /&gt; iberr = 2 &amp;lt; ENOL &amp;gt; &lt;BR /&gt; ibcntl = 0" &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;The delphi code are: &lt;BR /&gt;unit ULCRFrm; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;interface &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;uses &lt;BR /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, &lt;BR /&gt;Forms, &lt;BR /&gt;  Dialogs, StdCtrls, ExtCtrls; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;type &lt;BR /&gt;  TLCRFrm = class(TForm) &lt;BR /&gt;    Panel1: TPanel; &lt;BR /&gt;    EdtCommand: TEdit; &lt;BR /&gt;    BtnSend: TButton; &lt;BR /&gt;    MMShow: TMemo; &lt;BR /&gt;    procedure FormCreate(Sender: TObject); &lt;BR /&gt;    procedure BtnSendClick(Sender: TObject); &lt;BR /&gt;    procedure FormClose(Sender: TObject; var Action: TCloseAction); &lt;BR /&gt;  private &lt;BR /&gt;    { Private declarations } &lt;BR /&gt;  public &lt;BR /&gt;    { Public declarations } &lt;BR /&gt;  end; &lt;BR /&gt;const &lt;BR /&gt;  (* GPIB status bit &lt;BR /&gt;definitions.                                        *) &lt;BR /&gt;  ERR = $8000; (* Error detected                           *) &lt;BR /&gt;  TIMO = $4000; (* Timeout                                  *) &lt;BR /&gt;  ENDgpib = $2000; (* EOI or EOS detected                      *) &lt;BR /&gt;  SRQI = $1000; (* SRQ detected by CIC                      *) &lt;BR /&gt;  RQS = $800; (* Device needs service                     *) &lt;BR /&gt;  SPOLL = $400; (* Board has been serially polled           *) &lt;BR /&gt;  EVENT = $200; (* An event has occurred                    *) &lt;BR /&gt;  CMPL = $100; (* I/O completed                            *) &lt;BR /&gt;  LOK = $80; (* Local lockout state                      *) &lt;BR /&gt;  REM = $40; (* Remote state                             *) &lt;BR /&gt;  CIC = $20; (* Controller-in-charge                     *) &lt;BR /&gt;  ATN = $10; (* Attention asserted                       *) &lt;BR /&gt;  TACS = $8; (* Talker active                            *) &lt;BR /&gt;  LACS = $4; (* Listener active                          *) &lt;BR /&gt;  DTAS = $2; (* Device trigger state                     *) &lt;BR /&gt;  DCAS = $1; (* Device clear state                       *) &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  (* Error messages returned in global variable &lt;BR /&gt;iberr:                   *) &lt;BR /&gt;  EDVR = 0; (* System error                             *) &lt;BR /&gt;  ECIC = 1; (* Function requires GPIB board to be CIC   *) &lt;BR /&gt;  ENOL = 2; (* Write function detected no Listeners     *) &lt;BR /&gt;  EADR = 3; (* Interface board not addressed correctly  *) &lt;BR /&gt;  EARG = 4; (* Invalid argument to function call        *) &lt;BR /&gt;  ESAC = 5; (* Function requires GPIB board to be SAC   *) &lt;BR /&gt;  EABO = 6; (* I/O operation aborted                    *) &lt;BR /&gt;  ENEB = 7; (* Non-existent interface board             *) &lt;BR /&gt;  EDMA = 8; (* Error performing DMA                     *) &lt;BR /&gt;  EOIP = 10; (* I/O operation started before previous    *) &lt;BR /&gt;              (* operation completed                      *) &lt;BR /&gt;  ECAP = 11; (* No capability for intended operation     *) &lt;BR /&gt;  EFSO = 12; (* File system operation error              *) &lt;BR /&gt;  EBUS = 14; (* Command error during device call         *) &lt;BR /&gt;  ESTB = 15; (* Serial poll status byte lost             *) &lt;BR /&gt;  ESRQ = 16; (* SRQ remains asserted                     *) &lt;BR /&gt;  ETAB = 20; (* The return buffer is full                *) &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  T10s = 13; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  BDINDEX = 0; (* Board Index                       *) &lt;BR /&gt;  PRIMARY_ADDR_OF_DMM = 1; (* Primary address of device         *) &lt;BR /&gt;  NO_SECONDARY_ADDR = 0; (* Secondary address of device       *) &lt;BR /&gt;  TIMEOUT = T10s; (* Timeout value = 10 seconds        *) &lt;BR /&gt;  EOTMODE = 1; (* Enable the END message            *) &lt;BR /&gt;  EOSMODE = 0; (* Disable the EOS mode              *) &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  ARRAYSIZE = 1024; (* Size of read buffer               *) &lt;BR /&gt;(* Type declarations for exported NI-488.2 Global Variables     *) &lt;BR /&gt;type &lt;BR /&gt;  Tibsta = function: integer; stdcall; &lt;BR /&gt;  Tiberr = function: integer; stdcall; &lt;BR /&gt;  Tibcntl = function: Longint; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;    (* Type declarations for exported NI-488.2 functions            *) &lt;BR /&gt;  Tibclr = function(ud: integer): integer; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  Tibdev = function(ud: integer; &lt;BR /&gt;    pad: integer; &lt;BR /&gt;    sad: integer; &lt;BR /&gt;    tmo: integer; &lt;BR /&gt;    eot: integer; &lt;BR /&gt;    eos: integer): integer; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  Tibonl = function(ud: integer; &lt;BR /&gt;    v: integer): integer; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  Tibrd = function(ud: integer; &lt;BR /&gt;    var rdbuf; &lt;BR /&gt;    cnt: Longint): integer; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  Tibwrt = function(ud: integer; &lt;BR /&gt;    var wrtbuf; &lt;BR /&gt;    cnt: longint): integer; stdcall; &lt;BR /&gt;var &lt;BR /&gt;  LCRFrm: TLCRFrm; &lt;BR /&gt;     (* Declaration for the Handle for the GPIB library. &lt;BR /&gt;*) &lt;BR /&gt;  Gpib32Lib: THandle; &lt;BR /&gt;   (* Addresses for NI-488.2 GPIB global status variables.          *) &lt;BR /&gt;  AddrIbsta: Tibsta; &lt;BR /&gt;  AddrIberr: Tiberr; &lt;BR /&gt;  AddrIbcntl: Tibcntl; &lt;BR /&gt;   (* Pointers to the NI-488.2 GPIB global status variables.        *) &lt;BR /&gt;  Pibsta: ^integer; &lt;BR /&gt;  Piberr: ^integer; &lt;BR /&gt;  Pibcntl: ^Longint; &lt;BR /&gt;   (* Declarations for the NI-488.2 GPIB calls.                     *) &lt;BR /&gt;  ibclr: Tibclr; &lt;BR /&gt;  ibdev: Tibdev; &lt;BR /&gt;  ibrd: Tibrd; &lt;BR /&gt;  ibwrt: Tibwrt; &lt;BR /&gt;  ibonl: Tibonl; &lt;BR /&gt;   (* Declaration of global variables.                              *) &lt;BR /&gt;  Dev: integer; &lt;BR /&gt;  VStr: packed array[0..ARRAYSIZE] of char; &lt;BR /&gt;  ValueStr: packed array[0..ARRAYSIZE] of char; &lt;BR /&gt;implementation &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;{$R *.dfm} &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure loadDLL; &lt;BR /&gt;var &lt;BR /&gt;  str: string; &lt;BR /&gt;begin &lt;BR /&gt;  (* Load the GPIB-32.DLL library using the LoadLibrary function.   *) &lt;BR /&gt;  Gpib32Lib := LoadLibrary('GPIB-32.DLL'); &lt;BR /&gt;  (* &lt;BR /&gt;   * Check to see if library loaded successfully. If the library could &lt;BR /&gt;   * not be loaded, display an error message and then HALT the &lt;BR /&gt;program. &lt;BR /&gt;   *) &lt;BR /&gt;  if Gpib32Lib = 0 then &lt;BR /&gt;  begin &lt;BR /&gt;    str := 'LoadLibrary FAILED!'; &lt;BR /&gt;    MessageDlg(str, mtError, [mbOK], 0); &lt;BR /&gt;    halt; &lt;BR /&gt;  end; &lt;BR /&gt;  (* Get the addresses of the GPIB Global Variables. &lt;BR /&gt;*) &lt;BR /&gt;  @AddrIbsta := GetProcAddress(Gpib32Lib, 'user_ibsta'); &lt;BR /&gt;  @AddrIberr := GetProcAddress(Gpib32Lib, 'user_iberr'); &lt;BR /&gt;  @AddrIbcntl := GetProcAddress(Gpib32Lib, 'user_ibcnt'); &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  (* Get the addresses of the functions needed for this application. &lt;BR /&gt;*) &lt;BR /&gt;  @ibclr := GetProcAddress(Gpib32Lib, 'ibclr'); &lt;BR /&gt;  @ibdev := GetProcAddress(Gpib32Lib, 'ibdev'); &lt;BR /&gt;  @ibonl := GetProcAddress(Gpib32Lib, 'ibonl'); &lt;BR /&gt;  @ibrd := GetProcAddress(Gpib32Lib, 'ibrd'); &lt;BR /&gt;  @ibwrt := GetProcAddress(Gpib32Lib, 'ibwrt'); &lt;BR /&gt;  (* &lt;BR /&gt;   * Verify that addresses were obtained. If unable to get any one of &lt;BR /&gt;   * the addresses, then free the library, display an error message &lt;BR /&gt;   * and HALT the program. &lt;BR /&gt;   *) &lt;BR /&gt;  if (@AddrIbsta = nil) or &lt;BR /&gt;    (@AddrIberr = nil) or &lt;BR /&gt;    (@AddrIbcntl = nil) or &lt;BR /&gt;    (@ibclr = nil) or &lt;BR /&gt;    (@ibdev = nil) or &lt;BR /&gt;    (@ibonl = nil) or &lt;BR /&gt;    (@ibrd = nil) or &lt;BR /&gt;    (@ibwrt = nil) then &lt;BR /&gt;  begin &lt;BR /&gt;    str := 'GetProcAddress FAILED!'; &lt;BR /&gt;    MessageDlg(str, mtError, [mbOK], 0); &lt;BR /&gt;         (* Free the GPIB library.                                  *) &lt;BR /&gt;    FreeLibrary(Gpib32Lib); &lt;BR /&gt;    halt; &lt;BR /&gt;  end; &lt;BR /&gt;  (* Initialize GPIB global pointers to point to address location.  *) &lt;BR /&gt;  Pibsta := @AddrIbsta; &lt;BR /&gt;  Piberr := @AddrIberr; &lt;BR /&gt;  Pibcntl := @AddrIbcntl; &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure GPIBCleanup(msg: string); &lt;BR /&gt;var &lt;BR /&gt;  str: string; (* String used for displaying messages. *) &lt;BR /&gt;  ibstaStr: string; (* String for converting ibsta.         *) &lt;BR /&gt;  iberrStr: string; (* String for converting iberr.         *) &lt;BR /&gt;  ibcntlStr: string; (* String for converting ibcntl.        *) &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;begin &lt;BR /&gt;  ibstaStr := IntToHex(Pibsta^, 4); &lt;BR /&gt;  iberrStr := IntToStr(Piberr^); &lt;BR /&gt;  str := msg; &lt;BR /&gt;  str := Concat(str, #13); (* Add a line feed character.          *) &lt;BR /&gt;  str := Concat(str, 'ibsta = $' + ibstaStr); &lt;BR /&gt;  str := Concat(str, '  &amp;lt;'); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' ERR '); &lt;BR /&gt;  if (Pibsta^ and TIMO) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' TMO '); &lt;BR /&gt;  if (Pibsta^ and ENDgpib) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' END '); &lt;BR /&gt;  if (Pibsta^ and SRQI) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' SRQI '); &lt;BR /&gt;  if (Pibsta^ and RQS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' RQS '); &lt;BR /&gt;  if (Pibsta^ and SPOLL) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' SPOLL '); &lt;BR /&gt;  if (Pibsta^ and EVENT) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' EVENT '); &lt;BR /&gt;  if (Pibsta^ and CMPL) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' CMPL '); &lt;BR /&gt;  if (Pibsta^ and LOK) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' LOK '); &lt;BR /&gt;  if (Pibsta^ and REM) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' REM '); &lt;BR /&gt;  if (Pibsta^ and CIC) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' CIC '); &lt;BR /&gt;  if (Pibsta^ and ATN) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' ATN '); &lt;BR /&gt;  if (Pibsta^ and TACS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' TACS '); &lt;BR /&gt;  if (Pibsta^ and LACS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' LACS '); &lt;BR /&gt;  if (Pibsta^ and DTAS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' DTAS '); &lt;BR /&gt;  if (Pibsta^ and DCAS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' DCAS '); &lt;BR /&gt;  str := Concat(str, '&amp;gt;'); &lt;BR /&gt;  str := Concat(str, #13); (* Add a line feed character.          *) &lt;BR /&gt;  str := Concat(str, 'iberr = ' + iberrStr); &lt;BR /&gt;  str := Concat(str, '  &amp;lt;'); &lt;BR /&gt;  if Piberr^ = EDVR then &lt;BR /&gt;    str := Concat(str, ' EDVR '); &lt;BR /&gt;  if Piberr^ = ECIC then &lt;BR /&gt;    str := Concat(str, ' ECIC '); &lt;BR /&gt;  if Piberr^ = ENOL then &lt;BR /&gt;    str := Concat(str, ' ENOL '); &lt;BR /&gt;  if Piberr^ = EADR then &lt;BR /&gt;    str := Concat(str, ' EADR '); &lt;BR /&gt;  if Piberr^ = EARG then &lt;BR /&gt;    str := Concat(str, ' EARG '); &lt;BR /&gt;  if Piberr^ = ESAC then &lt;BR /&gt;    str := Concat(str, ' ESAC '); &lt;BR /&gt;  if Piberr^ = EABO then &lt;BR /&gt;    str := Concat(str, ' EABO '); &lt;BR /&gt;  if Piberr^ = ENEB then &lt;BR /&gt;    str := Concat(str, ' ENEB '); &lt;BR /&gt;  if Piberr^ = EDMA then &lt;BR /&gt;    str := Concat(str, ' EDMA '); &lt;BR /&gt;  if Piberr^ = EOIP then &lt;BR /&gt;    str := Concat(str, ' EOIP '); &lt;BR /&gt;  if Piberr^ = ECAP then &lt;BR /&gt;    str := Concat(str, ' ECAP '); &lt;BR /&gt;  if Piberr^ = EFSO then &lt;BR /&gt;    str := Concat(str, ' EFSO '); &lt;BR /&gt;  if Piberr^ = EBUS then &lt;BR /&gt;    str := Concat(str, ' EBUS '); &lt;BR /&gt;  if Piberr^ = ESTB then &lt;BR /&gt;    str := Concat(str, ' ESTB '); &lt;BR /&gt;  if Piberr^ = ESRQ then &lt;BR /&gt;    str := Concat(str, ' ESRQ '); &lt;BR /&gt;  if Piberr^ = ETAB then &lt;BR /&gt;    str := Concat(str, ' ETAB '); &lt;BR /&gt;  str := Concat(str, '&amp;gt;'); &lt;BR /&gt;  str := Concat(str, #13); (* Add a line feed character.         *) &lt;BR /&gt;  ibcntlStr := IntToStr(Pibcntl^); &lt;BR /&gt;  str := Concat(str, 'ibcntl = ' + ibcntlStr); &lt;BR /&gt;  MessageDlg(str, mtError, [mbOK], 0); &lt;BR /&gt;  (* The device is taken offline.                                   *) &lt;BR /&gt;  ibonl(Dev, 0); &lt;BR /&gt;  (* Free the GPIB library.                                         *) &lt;BR /&gt;  FreeLibrary(Gpib32Lib); &lt;BR /&gt;  //halt; &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure TLCRFrm.FormCreate(Sender: TObject); &lt;BR /&gt;begin &lt;BR /&gt;  loadDLL; &lt;BR /&gt;  Dev := ibdev(BDINDEX, PRIMARY_ADDR_OF_DMM, &lt;BR /&gt;    NO_SECONDARY_ADDR, TIMEOUT, EOTMODE, EOSMODE); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    GPIBCleanup('Unable to open device'); &lt;BR /&gt;  ibclr(Dev); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    GPIBCleanup('Unable to clear device'); &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure TLCRFrm.BtnSendClick(Sender: TObject); &lt;BR /&gt;begin &lt;BR /&gt;  strcopy(Vstr, ''); &lt;BR /&gt;  strcopy(VStr, pchar(EdtCommand.Text)); &lt;BR /&gt;  ibwrt(Dev, VStr, strlen(VStr)); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    GPIBCleanup('Unable to write to device'); &lt;BR /&gt;  ibrd(Dev, ValueStr, 100); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    GPIBCleanup('Unable to read from device'); &lt;BR /&gt;  ValueStr[Pibcntl^ - 1] := #0; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;     (* The reading from the multimeter is displayed in the List box. &lt;BR /&gt;*) &lt;BR /&gt;  MMshow.Lines.Insert(0, ValueStr); &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure TLCRFrm.FormClose(Sender: TObject; var Action: &lt;BR /&gt;TCloseAction); &lt;BR /&gt;begin &lt;BR /&gt;  ibonl(Dev, 0); &lt;BR /&gt;  FreeLibrary(Gpib32Lib); &lt;BR /&gt;  Close; &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;end. &lt;BR /&gt;&lt;BR /&gt;If somebody know how to solve the problems,please give us any tips, &lt;BR /&gt;thanks in advance, &lt;BR /&gt;&lt;BR /&gt;Regards, &lt;BR /&gt;Violin.</description>
    <pubDate>Wed, 10 Jun 2009 01:07:30 GMT</pubDate>
    <dc:creator>violin_1</dc:creator>
    <dc:date>2009-06-10T01:07:30Z</dc:date>
    <item>
      <title>Need help for trouble shooting delphi code , THANKS FOR HELP.</title>
      <link>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436098#M5609</link>
      <description>Hello all fellows, &lt;BR /&gt;&lt;BR /&gt;we are testing a LCR machine for measuring components such like &lt;BR /&gt;Resistor / Capacitor / Transistor ....etc. &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;and we're testing a delphi code to get the LCR log , but the code &lt;BR /&gt;running with errors: &lt;BR /&gt;"Unable to write to device &lt;BR /&gt; ibsta = $8100 &amp;lt; ERR CMPL &amp;gt; &lt;BR /&gt; iberr = 2 &amp;lt; ENOL &amp;gt; &lt;BR /&gt; ibcntl = 0" &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;The delphi code are: &lt;BR /&gt;unit ULCRFrm; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;interface &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;uses &lt;BR /&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, &lt;BR /&gt;Forms, &lt;BR /&gt;  Dialogs, StdCtrls, ExtCtrls; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;type &lt;BR /&gt;  TLCRFrm = class(TForm) &lt;BR /&gt;    Panel1: TPanel; &lt;BR /&gt;    EdtCommand: TEdit; &lt;BR /&gt;    BtnSend: TButton; &lt;BR /&gt;    MMShow: TMemo; &lt;BR /&gt;    procedure FormCreate(Sender: TObject); &lt;BR /&gt;    procedure BtnSendClick(Sender: TObject); &lt;BR /&gt;    procedure FormClose(Sender: TObject; var Action: TCloseAction); &lt;BR /&gt;  private &lt;BR /&gt;    { Private declarations } &lt;BR /&gt;  public &lt;BR /&gt;    { Public declarations } &lt;BR /&gt;  end; &lt;BR /&gt;const &lt;BR /&gt;  (* GPIB status bit &lt;BR /&gt;definitions.                                        *) &lt;BR /&gt;  ERR = $8000; (* Error detected                           *) &lt;BR /&gt;  TIMO = $4000; (* Timeout                                  *) &lt;BR /&gt;  ENDgpib = $2000; (* EOI or EOS detected                      *) &lt;BR /&gt;  SRQI = $1000; (* SRQ detected by CIC                      *) &lt;BR /&gt;  RQS = $800; (* Device needs service                     *) &lt;BR /&gt;  SPOLL = $400; (* Board has been serially polled           *) &lt;BR /&gt;  EVENT = $200; (* An event has occurred                    *) &lt;BR /&gt;  CMPL = $100; (* I/O completed                            *) &lt;BR /&gt;  LOK = $80; (* Local lockout state                      *) &lt;BR /&gt;  REM = $40; (* Remote state                             *) &lt;BR /&gt;  CIC = $20; (* Controller-in-charge                     *) &lt;BR /&gt;  ATN = $10; (* Attention asserted                       *) &lt;BR /&gt;  TACS = $8; (* Talker active                            *) &lt;BR /&gt;  LACS = $4; (* Listener active                          *) &lt;BR /&gt;  DTAS = $2; (* Device trigger state                     *) &lt;BR /&gt;  DCAS = $1; (* Device clear state                       *) &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  (* Error messages returned in global variable &lt;BR /&gt;iberr:                   *) &lt;BR /&gt;  EDVR = 0; (* System error                             *) &lt;BR /&gt;  ECIC = 1; (* Function requires GPIB board to be CIC   *) &lt;BR /&gt;  ENOL = 2; (* Write function detected no Listeners     *) &lt;BR /&gt;  EADR = 3; (* Interface board not addressed correctly  *) &lt;BR /&gt;  EARG = 4; (* Invalid argument to function call        *) &lt;BR /&gt;  ESAC = 5; (* Function requires GPIB board to be SAC   *) &lt;BR /&gt;  EABO = 6; (* I/O operation aborted                    *) &lt;BR /&gt;  ENEB = 7; (* Non-existent interface board             *) &lt;BR /&gt;  EDMA = 8; (* Error performing DMA                     *) &lt;BR /&gt;  EOIP = 10; (* I/O operation started before previous    *) &lt;BR /&gt;              (* operation completed                      *) &lt;BR /&gt;  ECAP = 11; (* No capability for intended operation     *) &lt;BR /&gt;  EFSO = 12; (* File system operation error              *) &lt;BR /&gt;  EBUS = 14; (* Command error during device call         *) &lt;BR /&gt;  ESTB = 15; (* Serial poll status byte lost             *) &lt;BR /&gt;  ESRQ = 16; (* SRQ remains asserted                     *) &lt;BR /&gt;  ETAB = 20; (* The return buffer is full                *) &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  T10s = 13; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  BDINDEX = 0; (* Board Index                       *) &lt;BR /&gt;  PRIMARY_ADDR_OF_DMM = 1; (* Primary address of device         *) &lt;BR /&gt;  NO_SECONDARY_ADDR = 0; (* Secondary address of device       *) &lt;BR /&gt;  TIMEOUT = T10s; (* Timeout value = 10 seconds        *) &lt;BR /&gt;  EOTMODE = 1; (* Enable the END message            *) &lt;BR /&gt;  EOSMODE = 0; (* Disable the EOS mode              *) &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  ARRAYSIZE = 1024; (* Size of read buffer               *) &lt;BR /&gt;(* Type declarations for exported NI-488.2 Global Variables     *) &lt;BR /&gt;type &lt;BR /&gt;  Tibsta = function: integer; stdcall; &lt;BR /&gt;  Tiberr = function: integer; stdcall; &lt;BR /&gt;  Tibcntl = function: Longint; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;    (* Type declarations for exported NI-488.2 functions            *) &lt;BR /&gt;  Tibclr = function(ud: integer): integer; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  Tibdev = function(ud: integer; &lt;BR /&gt;    pad: integer; &lt;BR /&gt;    sad: integer; &lt;BR /&gt;    tmo: integer; &lt;BR /&gt;    eot: integer; &lt;BR /&gt;    eos: integer): integer; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  Tibonl = function(ud: integer; &lt;BR /&gt;    v: integer): integer; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  Tibrd = function(ud: integer; &lt;BR /&gt;    var rdbuf; &lt;BR /&gt;    cnt: Longint): integer; stdcall; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  Tibwrt = function(ud: integer; &lt;BR /&gt;    var wrtbuf; &lt;BR /&gt;    cnt: longint): integer; stdcall; &lt;BR /&gt;var &lt;BR /&gt;  LCRFrm: TLCRFrm; &lt;BR /&gt;     (* Declaration for the Handle for the GPIB library. &lt;BR /&gt;*) &lt;BR /&gt;  Gpib32Lib: THandle; &lt;BR /&gt;   (* Addresses for NI-488.2 GPIB global status variables.          *) &lt;BR /&gt;  AddrIbsta: Tibsta; &lt;BR /&gt;  AddrIberr: Tiberr; &lt;BR /&gt;  AddrIbcntl: Tibcntl; &lt;BR /&gt;   (* Pointers to the NI-488.2 GPIB global status variables.        *) &lt;BR /&gt;  Pibsta: ^integer; &lt;BR /&gt;  Piberr: ^integer; &lt;BR /&gt;  Pibcntl: ^Longint; &lt;BR /&gt;   (* Declarations for the NI-488.2 GPIB calls.                     *) &lt;BR /&gt;  ibclr: Tibclr; &lt;BR /&gt;  ibdev: Tibdev; &lt;BR /&gt;  ibrd: Tibrd; &lt;BR /&gt;  ibwrt: Tibwrt; &lt;BR /&gt;  ibonl: Tibonl; &lt;BR /&gt;   (* Declaration of global variables.                              *) &lt;BR /&gt;  Dev: integer; &lt;BR /&gt;  VStr: packed array[0..ARRAYSIZE] of char; &lt;BR /&gt;  ValueStr: packed array[0..ARRAYSIZE] of char; &lt;BR /&gt;implementation &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;{$R *.dfm} &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure loadDLL; &lt;BR /&gt;var &lt;BR /&gt;  str: string; &lt;BR /&gt;begin &lt;BR /&gt;  (* Load the GPIB-32.DLL library using the LoadLibrary function.   *) &lt;BR /&gt;  Gpib32Lib := LoadLibrary('GPIB-32.DLL'); &lt;BR /&gt;  (* &lt;BR /&gt;   * Check to see if library loaded successfully. If the library could &lt;BR /&gt;   * not be loaded, display an error message and then HALT the &lt;BR /&gt;program. &lt;BR /&gt;   *) &lt;BR /&gt;  if Gpib32Lib = 0 then &lt;BR /&gt;  begin &lt;BR /&gt;    str := 'LoadLibrary FAILED!'; &lt;BR /&gt;    MessageDlg(str, mtError, [mbOK], 0); &lt;BR /&gt;    halt; &lt;BR /&gt;  end; &lt;BR /&gt;  (* Get the addresses of the GPIB Global Variables. &lt;BR /&gt;*) &lt;BR /&gt;  @AddrIbsta := GetProcAddress(Gpib32Lib, 'user_ibsta'); &lt;BR /&gt;  @AddrIberr := GetProcAddress(Gpib32Lib, 'user_iberr'); &lt;BR /&gt;  @AddrIbcntl := GetProcAddress(Gpib32Lib, 'user_ibcnt'); &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;  (* Get the addresses of the functions needed for this application. &lt;BR /&gt;*) &lt;BR /&gt;  @ibclr := GetProcAddress(Gpib32Lib, 'ibclr'); &lt;BR /&gt;  @ibdev := GetProcAddress(Gpib32Lib, 'ibdev'); &lt;BR /&gt;  @ibonl := GetProcAddress(Gpib32Lib, 'ibonl'); &lt;BR /&gt;  @ibrd := GetProcAddress(Gpib32Lib, 'ibrd'); &lt;BR /&gt;  @ibwrt := GetProcAddress(Gpib32Lib, 'ibwrt'); &lt;BR /&gt;  (* &lt;BR /&gt;   * Verify that addresses were obtained. If unable to get any one of &lt;BR /&gt;   * the addresses, then free the library, display an error message &lt;BR /&gt;   * and HALT the program. &lt;BR /&gt;   *) &lt;BR /&gt;  if (@AddrIbsta = nil) or &lt;BR /&gt;    (@AddrIberr = nil) or &lt;BR /&gt;    (@AddrIbcntl = nil) or &lt;BR /&gt;    (@ibclr = nil) or &lt;BR /&gt;    (@ibdev = nil) or &lt;BR /&gt;    (@ibonl = nil) or &lt;BR /&gt;    (@ibrd = nil) or &lt;BR /&gt;    (@ibwrt = nil) then &lt;BR /&gt;  begin &lt;BR /&gt;    str := 'GetProcAddress FAILED!'; &lt;BR /&gt;    MessageDlg(str, mtError, [mbOK], 0); &lt;BR /&gt;         (* Free the GPIB library.                                  *) &lt;BR /&gt;    FreeLibrary(Gpib32Lib); &lt;BR /&gt;    halt; &lt;BR /&gt;  end; &lt;BR /&gt;  (* Initialize GPIB global pointers to point to address location.  *) &lt;BR /&gt;  Pibsta := @AddrIbsta; &lt;BR /&gt;  Piberr := @AddrIberr; &lt;BR /&gt;  Pibcntl := @AddrIbcntl; &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure GPIBCleanup(msg: string); &lt;BR /&gt;var &lt;BR /&gt;  str: string; (* String used for displaying messages. *) &lt;BR /&gt;  ibstaStr: string; (* String for converting ibsta.         *) &lt;BR /&gt;  iberrStr: string; (* String for converting iberr.         *) &lt;BR /&gt;  ibcntlStr: string; (* String for converting ibcntl.        *) &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;begin &lt;BR /&gt;  ibstaStr := IntToHex(Pibsta^, 4); &lt;BR /&gt;  iberrStr := IntToStr(Piberr^); &lt;BR /&gt;  str := msg; &lt;BR /&gt;  str := Concat(str, #13); (* Add a line feed character.          *) &lt;BR /&gt;  str := Concat(str, 'ibsta = $' + ibstaStr); &lt;BR /&gt;  str := Concat(str, '  &amp;lt;'); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' ERR '); &lt;BR /&gt;  if (Pibsta^ and TIMO) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' TMO '); &lt;BR /&gt;  if (Pibsta^ and ENDgpib) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' END '); &lt;BR /&gt;  if (Pibsta^ and SRQI) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' SRQI '); &lt;BR /&gt;  if (Pibsta^ and RQS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' RQS '); &lt;BR /&gt;  if (Pibsta^ and SPOLL) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' SPOLL '); &lt;BR /&gt;  if (Pibsta^ and EVENT) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' EVENT '); &lt;BR /&gt;  if (Pibsta^ and CMPL) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' CMPL '); &lt;BR /&gt;  if (Pibsta^ and LOK) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' LOK '); &lt;BR /&gt;  if (Pibsta^ and REM) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' REM '); &lt;BR /&gt;  if (Pibsta^ and CIC) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' CIC '); &lt;BR /&gt;  if (Pibsta^ and ATN) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' ATN '); &lt;BR /&gt;  if (Pibsta^ and TACS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' TACS '); &lt;BR /&gt;  if (Pibsta^ and LACS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' LACS '); &lt;BR /&gt;  if (Pibsta^ and DTAS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' DTAS '); &lt;BR /&gt;  if (Pibsta^ and DCAS) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    str := Concat(str, ' DCAS '); &lt;BR /&gt;  str := Concat(str, '&amp;gt;'); &lt;BR /&gt;  str := Concat(str, #13); (* Add a line feed character.          *) &lt;BR /&gt;  str := Concat(str, 'iberr = ' + iberrStr); &lt;BR /&gt;  str := Concat(str, '  &amp;lt;'); &lt;BR /&gt;  if Piberr^ = EDVR then &lt;BR /&gt;    str := Concat(str, ' EDVR '); &lt;BR /&gt;  if Piberr^ = ECIC then &lt;BR /&gt;    str := Concat(str, ' ECIC '); &lt;BR /&gt;  if Piberr^ = ENOL then &lt;BR /&gt;    str := Concat(str, ' ENOL '); &lt;BR /&gt;  if Piberr^ = EADR then &lt;BR /&gt;    str := Concat(str, ' EADR '); &lt;BR /&gt;  if Piberr^ = EARG then &lt;BR /&gt;    str := Concat(str, ' EARG '); &lt;BR /&gt;  if Piberr^ = ESAC then &lt;BR /&gt;    str := Concat(str, ' ESAC '); &lt;BR /&gt;  if Piberr^ = EABO then &lt;BR /&gt;    str := Concat(str, ' EABO '); &lt;BR /&gt;  if Piberr^ = ENEB then &lt;BR /&gt;    str := Concat(str, ' ENEB '); &lt;BR /&gt;  if Piberr^ = EDMA then &lt;BR /&gt;    str := Concat(str, ' EDMA '); &lt;BR /&gt;  if Piberr^ = EOIP then &lt;BR /&gt;    str := Concat(str, ' EOIP '); &lt;BR /&gt;  if Piberr^ = ECAP then &lt;BR /&gt;    str := Concat(str, ' ECAP '); &lt;BR /&gt;  if Piberr^ = EFSO then &lt;BR /&gt;    str := Concat(str, ' EFSO '); &lt;BR /&gt;  if Piberr^ = EBUS then &lt;BR /&gt;    str := Concat(str, ' EBUS '); &lt;BR /&gt;  if Piberr^ = ESTB then &lt;BR /&gt;    str := Concat(str, ' ESTB '); &lt;BR /&gt;  if Piberr^ = ESRQ then &lt;BR /&gt;    str := Concat(str, ' ESRQ '); &lt;BR /&gt;  if Piberr^ = ETAB then &lt;BR /&gt;    str := Concat(str, ' ETAB '); &lt;BR /&gt;  str := Concat(str, '&amp;gt;'); &lt;BR /&gt;  str := Concat(str, #13); (* Add a line feed character.         *) &lt;BR /&gt;  ibcntlStr := IntToStr(Pibcntl^); &lt;BR /&gt;  str := Concat(str, 'ibcntl = ' + ibcntlStr); &lt;BR /&gt;  MessageDlg(str, mtError, [mbOK], 0); &lt;BR /&gt;  (* The device is taken offline.                                   *) &lt;BR /&gt;  ibonl(Dev, 0); &lt;BR /&gt;  (* Free the GPIB library.                                         *) &lt;BR /&gt;  FreeLibrary(Gpib32Lib); &lt;BR /&gt;  //halt; &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure TLCRFrm.FormCreate(Sender: TObject); &lt;BR /&gt;begin &lt;BR /&gt;  loadDLL; &lt;BR /&gt;  Dev := ibdev(BDINDEX, PRIMARY_ADDR_OF_DMM, &lt;BR /&gt;    NO_SECONDARY_ADDR, TIMEOUT, EOTMODE, EOSMODE); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    GPIBCleanup('Unable to open device'); &lt;BR /&gt;  ibclr(Dev); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    GPIBCleanup('Unable to clear device'); &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure TLCRFrm.BtnSendClick(Sender: TObject); &lt;BR /&gt;begin &lt;BR /&gt;  strcopy(Vstr, ''); &lt;BR /&gt;  strcopy(VStr, pchar(EdtCommand.Text)); &lt;BR /&gt;  ibwrt(Dev, VStr, strlen(VStr)); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    GPIBCleanup('Unable to write to device'); &lt;BR /&gt;  ibrd(Dev, ValueStr, 100); &lt;BR /&gt;  if (Pibsta^ and ERR) &amp;lt;&amp;gt; 0 then &lt;BR /&gt;    GPIBCleanup('Unable to read from device'); &lt;BR /&gt;  ValueStr[Pibcntl^ - 1] := #0; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;     (* The reading from the multimeter is displayed in the List box. &lt;BR /&gt;*) &lt;BR /&gt;  MMshow.Lines.Insert(0, ValueStr); &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;procedure TLCRFrm.FormClose(Sender: TObject; var Action: &lt;BR /&gt;TCloseAction); &lt;BR /&gt;begin &lt;BR /&gt;  ibonl(Dev, 0); &lt;BR /&gt;  FreeLibrary(Gpib32Lib); &lt;BR /&gt;  Close; &lt;BR /&gt;end; &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;end. &lt;BR /&gt;&lt;BR /&gt;If somebody know how to solve the problems,please give us any tips, &lt;BR /&gt;thanks in advance, &lt;BR /&gt;&lt;BR /&gt;Regards, &lt;BR /&gt;Violin.</description>
      <pubDate>Wed, 10 Jun 2009 01:07:30 GMT</pubDate>
      <guid>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436098#M5609</guid>
      <dc:creator>violin_1</dc:creator>
      <dc:date>2009-06-10T01:07:30Z</dc:date>
    </item>
    <item>
      <title>Re: Need help for trouble shooting delphi code , THANKS FOR HELP.</title>
      <link>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436099#M5610</link>
      <description>What OS version are you using?&lt;BR /&gt;Why kind of computer do you have?</description>
      <pubDate>Thu, 11 Jun 2009 03:12:05 GMT</pubDate>
      <guid>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436099#M5610</guid>
      <dc:creator>Dennis Handly</dc:creator>
      <dc:date>2009-06-11T03:12:05Z</dc:date>
    </item>
    <item>
      <title>Re: Need help for trouble shooting delphi code , THANKS FOR HELP.</title>
      <link>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436100#M5611</link>
      <description>OS:win2003&lt;BR /&gt;normal desktop PC, p4 CPU&lt;BR /&gt;&lt;BR /&gt;Thx :)</description>
      <pubDate>Thu, 11 Jun 2009 04:26:06 GMT</pubDate>
      <guid>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436100#M5611</guid>
      <dc:creator>violin_1</dc:creator>
      <dc:date>2009-06-11T04:26:06Z</dc:date>
    </item>
    <item>
      <title>Re: Need help for trouble shooting delphi code , THANKS FOR HELP.</title>
      <link>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436101#M5612</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;hard to say as ibwrt is external function from the DLL...&lt;BR /&gt;&lt;BR /&gt;according ENOL error description I would guess remote partner is not responding/prepared. &lt;BR /&gt;I would check whether Dev and Vstr are initialized properly before ibwrt call.&lt;BR /&gt;if you have available sources of the DLL you may look what ibwrt in fact do and why it reports error.&lt;BR /&gt;&lt;BR /&gt;emha.</description>
      <pubDate>Thu, 11 Jun 2009 06:46:12 GMT</pubDate>
      <guid>https://community.hpe.com/t5/windows-server-2003/need-help-for-trouble-shooting-delphi-code-thanks-for-help/m-p/4436101#M5612</guid>
      <dc:creator>emha_1</dc:creator>
      <dc:date>2009-06-11T06:46:12Z</dc:date>
    </item>
  </channel>
</rss>

