Oneventvdm – Measurement Computing Personal488 rev.3.0 For DOS & Windows 3.Xi User Manual
Page 349

15B. Driver488/SUB, W31, W95, & WNT
III. COMMAND REFERENCES - 15. Command References
III-334
Personal488 User’s Manual, Rev. 3.0
OnEventVDM
Driver488/W95 (Console Mode Applications only)
SYNTAX
INT pascal OnEventVDM(DevHandleT devHandle, EventFuncT func);
devHandle
refers to either an interface or an external device.
func
is a user-specified interrupt-handler function that is to perform some
function, defined by the user, when one of the
Arm
ed conditions occur.
RETURNS
-1 if error
MODE
Any
SEE ALSO
OnEvent, Arm, Disarm
BUS STATES
None
EXAMPLE
qsk(x,Arm(ieee0, acSRQ));
qsk(x,OnEventVDM(ieee0, srqHandler));
Arm SRQ detection and set
up SRQ function handler
This function is new in Driver488/W95. The
OnEventVDM
(
VDM
refers to Virtual DOS Machine)
allows a call back to a user-specified function in a console mode application. The following is a full
example of a console mode program using the
OnEventVDM
function:
#include
#include
#include “iotieee.h”
// For debugging
#define qsk(v,x) (v=x, printf(#x “ returned %d/n, v))
void
srqHandler(DevHandlerT devHandle, UINT mask)
{
LONG xfered;
printf(“\007\n\nEVENT-FUNCTION on %d mask 0x%04x\n”,devHandle,
mask);
qsk(xfered, Spoll(devHandle));
printf(“\n\n”);
}
void
main(void)
{
LONG result, xfered;
int ioStatus, x;
DevHandleT ieee0, wave14, wave16;
TermT myTerm;
UCHAR buffer[500];
printf(“\n\nSRQTEST program PID %d\n”,GetCurrentProcessId ());
qsk(ieee0, OpenName(“ieee0”));
qsk(wave14, OpenName(“Wave14”));
qsk(wave16, OpenName(“Wave16”));
qsk(result, Abort(wave14));
qsk(result, Abort(wave16));
qsk(x, Hello(ieee0, buffer));
printf(“\n%s\n\n”, buffer);
myTerm.EOI = 1;
myTerm.nChar = 0;
myTerm.termChar[0] = ‘\r’;
myTerm.termChar[1] = ‘\n’;
// Arm SRQ detection and set up SRQ function handler
qsk(x, Arm(ieee0, acSRQ));
qsk(x, OnEventVDM(ieee0, srqHandler));
// Tell the Wave to assert SRQ in 3 seconds
qsk(xfered,Output(wave16,“t3000x”,6L,1,0,&myTerm,0,&ioStatus));
printf(“Completion code: 0x%04x\n”, ioStatus);