beautypg.com

MagTek 99875125 User Manual

Page 54

background image

MagTek Device Drivers for Windows


/** clear overlapped structure */
memset ( &ov_r, 0, sizeof (ov_r) );
memset ( &ov_w, 0, sizeof (ov_w) );

if (argc < 2)

drv_h = OPEN_DEVICE ("COM5");

/* Must Specify proper COM# as default */

else

drv_h = OPEN_DEVICE (argv[1]);

if (drv_h == INVALID_HANDLE_VALUE)
{
ws = GetLastError();
printf("Can NOT open device : %s. Error : 0x%lx", "", ws);
return ( stage);
}

{ DCB dcb;
GetCommState(drv_h, &dcb);
dcb.BaudRate = CBR_9600;
dcb.Parity = NOPARITY;
dcb.ByteSize = 8;
dcb.StopBits = ONESTOPBIT;
dcb.fParity = 0;
dcb.fBinary = 1;
dcb.fOutxCtsFlow = 0;
dcb.fOutxDsrFlow = 0;
dcb.fDtrControl = DTR_CONTROL_ENABLE;
SetCommState(drv_h, &dcb);
}

#define STAGE(idx, op, msg) \
ret_h = op; \
if (ret_h==NULL) \
{ \
printf("%s\n", (msg)); \
break; \
} \
stage = idx;

do {
STAGE ( 6, CreateEvent (NULL, TRUE, FALSE, NULL),
"Can't Create Overlapped Event(read)" );
ov_r.hEvent = ret_h;

STAGE ( 7, CreateEvent (NULL, TRUE, FALSE, NULL),
"Can't Create Overlapped Event(write)" );
ov_w.hEvent = ret_h;

STAGE ( 8,
CreateThread(
NULL, // address of thread security attributes
0L, // initial thread stack size, in bytes
(LPTHREAD_START_ROUTINE)output_thread,// adr of thread function
NULL, // argument for new thread
0L, // creation flags 0-run immediately
&retdw // address of returned thread identifier
),
"Can't Create output thread" );
out_threadh = ret_h;
STAGE ( 9,
CreateThread(

46