beautypg.com

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

Page 171

background image

9E. C Languages

II. SOFTWARE GUIDES - 9. Driver488/SUB

II-156

Personal488 User’s Manual, Rev. 3.0

/* Reset the buffer pointer of the ADC488 */
Output(adc, “B0X”);

Next, we fill the buffer with 100 readings from the ADC488. Since the data being returned from the
ADC488 is in a binary format, the

noterm

terminator structure is used to disable scanning for

terminators such as carriage-return and line-feed:

noterm.EOI=0 ;
noterm.nChar=0 ;
EnterX (adc, (char*) hundred,200,1,¬erm,1,0L) ;

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.

/* Display DRIVER488/W31 status */
Status (ieee,&substat) ;
showstat (&substat) ;

/* Wait for completion of input operation*/
Wait (adc) ;

/* Display DRIVER488/W31 status */
Status (ieee,&substat) ;
showstat (&substat) ;

Now we process the buffer:

/* Print the received characters */
for (i=0;id;i++) {

printf (“%6d”,hundred [i]) ;
if ((i%10)==9)

printf (“\n”) ;

}

The functions described so far in this Sub-Chapter provide enough functionality for a basic data
acquisition
program. The following program listing covers the examples used. Additional functions
provided by Driver488/SUB are described in the “Section III: Command References” of this manual.

Sample Program

#include
#include
#include
#include”iot_main.h”
#include”iottx10.h”

void showstat (IeeeStatusT*) ;
void isr (OpaqueP) ; /*handle inerrupt*/

DevHandleT

adc,ieee,dev;

int

hundred[100] ;

void main ( )
{

char

response [256] ;

int

i;

float voltage,

sum;

IeeeStatusT

substat ;

/*establish communications with Driver488/SUB*/
if ((ieee=OpenName (“IEEE”))==-1) {

printf (“Cannot initialize IEEE system.\n”) ;
exit (1) ;

}