[an error occurred while processing this directive]
|
Ручаться за этот кусок не могу, так как в процессе работы спалил себе порт, и отложил эту работу в долгий ящик. Но железка уверенно переходила в ecp режим.
Для работы нужно два файла. Один из ddk - ntddpar.h, а второй
откуда-то взял, он нужен, чтобы получить значения для IOCTL_IEEE1284_NEGOTIATE. Могу выслать.
typedef struct _PARCLASS_NEGOTIATION_MASK {
USHORT usReadMask;
USHORT usWriteMask;
} PARCLASS_NEGOTIATION_MASK, *PPARCLASS_NEGOTIATION_MASK;
#include "lpt\Devioctl.h"
#include "lpt\ntddpar.h"
CLPTcommunicator::CLPTcommunicator(BYTE lpt_number)
{
DWORD errors;
lpt_error = 0;
char szPort[12];
sprintf(szPort, "LPT%d", lpt_number);
if ((hCOMM = CreateFile( szPort,
GENERIC_WRITE | GENERIC_READ,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL ))==INVALID_HANDLE_VALUE)
lpt_error = LPT_ERROR_CREATE_FILE;
else {
DWORD ret;
PARCLASS_NEGOTIATION_MASK pn;
result = DeviceIoControl(hCOMM, IOCTL_IEEE1284_GET_MODE, NULL, 0, &pn, sizeof(pn), &ret, NULL);
pn.usReadMask = ECP_ANY;
pn.usWriteMask = ECP_ANY;
result = DeviceIoControl(hCOMM, IOCTL_IEEE1284_NEGOTIATE, &pn, sizeof(pn), &pn, sizeof(pn), &ret, NULL);
}
}
}
E-mail: info@telesys.ru