beautypg.com

Sample program – Measurement Computing Personal488 rev.3.0 For DOS & Windows 3.Xi User Manual

Page 187

background image

9G. Pascal

II. SOFTWARE GUIDES - 9. Driver488/SUB

II-172

Personal488 User’s Manual, Rev. 3.0

noterm.eoi: = false;
noterm.nChar: = 0;
lrv: = ioEnterX (adc,hundred,200,true,noterm,true,nilptr);

The

EnterX

function will use a DMA transfer if available. Because DMA transfers are performed

entirely by the hardware, the program can continue with other work while the DMA transfer function
occurs. For example, the program will process the previous set of data while collecting a new set of
data into a different buffer. However, before processing the data we must wait for the transfer to
complete. For illustration purposes, we query the Driver488/SUB status both before and after waiting.

rv: = ioStatus (ieee,substat);
showstat (@substat);

rv: = ioWait (adc);

rv: = ioStatus (ieee,substat);
showstat (@substat);

Now we process the buffer:

{ Print the received characters }
for i: = 0 to 99 do begin

Write (hundred[i]);
if (imod10) = 9 then

Writeln (‘’);

end;

The above functions provide enough functionality for a basic data acquisition program. Additional
functions provided by Driver488/SUB are described in the “Section III: Command References” of this
manual.

Sample Program

program manual;

uses iottp60, dos;

var
adc,ieee,dev,adc2 : Integer;

{ Device handles }

code : Integer;

{ Return Code }

hundred : array [0..99] of Integer;

{ Driver488/SUB status structure }

response : string;

{ Text buffer for Driver488 responses }

i: Integer;

{ General purpose loop counter }

rv: Integer;

{ General purpose return value }

voltage : Real;

{ Single reading variable }

sum : Real;

{ Summation used to compute average }

substat : IeeeStatusrec;

{ Driver488/SUB status structure }

nilptr : pointer;

{ General purpose pointer }

lrv : Longint;

{ General purpose long return value }

noterm : termrec;

{ Driver488 terminator structure }

{ Function to determine if bit is set according to mask value }
function bitSet (source,mask : integer) : boolean;
begin

if (source div mask) mod 2 = 0

then bitSet: = false;

else

bitSet: = true;

end;

end;

procedure isr (var param);far;

var
sp,stadc

{ Driver488 and ADC488 spoll response }

errnum : Integer;

{ ADC488 error number }

errtext : string;

{ ADC488 error response }