Measurement-computing Personal488 rev.3.0 For DOS & Windows 3.Xi Manuel d'utilisateur Page 77

  • Télécharger
  • Ajouter à mon manuel
  • Imprimer
  • Page
    / 400
  • Table des matières
  • DEPANNAGE
  • MARQUE LIVRES
  • Noté. / 5. Basé sur avis des utilisateurs
Vue de la page 76
8E. Microsoft C II. SOFTWARE GUIDES - 8. Driver488/DRV
II-62 Personal488 Users Manual, Rev. 3.0
receive buffer,
chars
. This means
chars
must be an array of known size, for example,
char chars[256]
, not
char*chars
.
IEEEPRTF
and
IEEESCNF
are IEEE 488 versions of
PRINTF
and
SCANF
, respectively.
int ieeeprtf(format,...)
char *format
int ieeescnf(format,a,b,c,d,e)
char *format,*a,*b,*c,*d,*e
The
IEEEPRTF
accepts a format string and a list of arguments. It formats its arguments according
to the specified format and sends the formatted string to Driver488/DRV. The
IEEESCNF
accepts
a format string and up to 5 pointers (to the types specified in the format string). It reads a string of
up to 256 bytes from Driver488/DRV, terminates it with a zero, converts it according to the format
string, and places the converted values into the variables pointed to by the specified pointers.
RAWMODE
sets the file specified by
handle
for raw mode I/O.
int rawmode(handle)
int handle
In raw mode MS-DOS does not interpret the characters received from the file. In particular,
control-Z
is not taken as end-of-file. Raw mode is usually appropriate for IEEE 488
communications because it does not interfere with the transfer of binary data and because it is
much more efficient than non-raw mode I/O.
IEEEINIT
establishes communications with Driver488/DRV and configures it for use with C.
int ieeeinit()
It first opens the file
IEEE
for both reading and writing and puts the file descriptor into
IEEE
. It
then puts the file into raw mode. Driver488/DRV is then initialized by sending the
IOCTL
BREAK
and
RESET
commands. Normal output from C is terminated by a new-line (line feed)
character, and returned strings should be terminated by a null, so
EOL OUT LF
and
EOL IN $0
commands are then issued. Finally a
FILL ERROR
command is issued to enable
SEQUENCE - NO
DATA AVAILABLE
error detection. If an error is detected during any of these commands,
IEEEINIT
returns a
-1
, otherwise it returns a zero (
0
).
CRITERR.ASM (Microsoft C & Turbo C)
Normally, when Driver488/DRV detects an error, perhaps due to a syntax error in a command, it
responds with an I/O error to DOS. When this happens, DOS normally issues an
ABORT
,
RETRY
or
IGNORE
message and waits for a response from the keyboard. There is no way for the users program
to detect such an error, determine the cause, and take appropriate action. However, DOS does provide
a method of redefining the action to be taken on such a critical error.
CRITERR.ASM
contains a
critical error handler that, when invoked, makes it appear to the calling program that some less-critical
error has occurred. The critical error handler is installed by
CRIT_ON()
and removed by
CRIT_OFF()
.The critical error handler is also automatically removed by DOS when the program exits.
The following program fragment demonstrates the use of the critical error handler:
#include criterr.h
crit_on(ieee);
if (ieeewt(output 16;F0X) == -1) {
printf(Error writing F0X to device 16, \n);
crit_off();
ioctl_wt(ieee,"break",5);
ieeewt(eol out lf\r\n);
ieeewt(status\n);
ieeerd(response);
printf(status = %s\n,response);
crit_on(ieee);
}
We must first
#include
the header file with the definitions of the critical error routines. We then
enable critical error trapping with
CRIT_ON
which takes as a parameter the handle of the file for which
Vue de la page 76
1 2 ... 72 73 74 75 76 77 78 79 80 81 82 ... 399 400

Commentaires sur ces manuels

Pas de commentaire