beautypg.com

Elo TouchSystems 1525L User Manual

Page 135

background image

MagTek Device Drivers for Windows


132

/** 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(