Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
[Win32] NT DDK 31.07.02 14:05 Число просмотров: 981
Автор: NeuronViking Статус: Незарегистрированный пользователь
|
> И что??? > Никто такого никогда не писал??? > > > > Может кто-нибудь кинет кусок кода как отослать 1 байт > на > > LPT, использую NT драйвера.... > > Через WtiteFile не работает....
1. WtiteFile прекрасно работает, проверено, мин - нет!
2. в режиме ядра это сделать можно ооооооочень многими способами... но они настолько тривиальны что если ты даже не можешь использовать WtiteFile корректно то тебе не здесь помощь искать надо.
|
<programming>
|
[Win32] NT DDK 30.07.02 19:53
Автор: $tain Статус: Незарегистрированный пользователь
|
Может кто-нибудь кинет кусок кода как отослать 1 байт на LPT, использую NT драйвера....
Через WtiteFile не работает....
|
|
[Win32] I tut uzhe brosal ssylku na LPT port driver dlia NT... 31.07.02 21:52
Автор: + <Mikhail> Статус: Elderman Отредактировано 31.07.02 21:59 Количество правок: 1
|
doma u menia est i source code i driver, tolko I doma k komputeru ne podhozhu. I sam etot driver ispolzoval chtoby EEPROM pisat` rabotaet otlichno obrachaeshsia cherea C-shnye inp() outp().
Takchto poroisia na forume ssylka dolzhna byt`
Bot tebe u link
|
| |
[Win32] I tut uzhe brosal ssylku na LPT port driver dlia NT... 01.08.02 00:17
Автор: $tain Статус: Незарегистрированный пользователь
|
thx
|
|
[Win32] NT DDK 31.07.02 13:45
Автор: $tain Статус: Незарегистрированный пользователь
|
И что???
Никто такого никогда не писал???
> Может кто-нибудь кинет кусок кода как отослать 1 байт на > LPT, использую NT драйвера.... > Через WtiteFile не работает....
|
| |
[Win32] NT DDK 31.07.02 14:05
Автор: NeuronViking Статус: Незарегистрированный пользователь
|
> И что??? > Никто такого никогда не писал??? > > > > Может кто-нибудь кинет кусок кода как отослать 1 байт > на > > LPT, использую NT драйвера.... > > Через WtiteFile не работает....
1. WtiteFile прекрасно работает, проверено, мин - нет!
2. в режиме ядра это сделать можно ооооооочень многими способами... но они настолько тривиальны что если ты даже не можешь использовать WtiteFile корректно то тебе не здесь помощь искать надо.
|
| | |
[Win32] NT DDK 31.07.02 15:31
Автор: $tain Статус: Незарегистрированный пользователь
|
> > И что??? > > Никто такого никогда не писал??? > > > > > > > Может кто-нибудь кинет кусок кода как отослать 1 > байт > > на > > > LPT, использую NT драйвера.... > > > Через WtiteFile не работает.... > > 1. WtiteFile прекрасно работает, проверено, мин - нет! > 2. в режиме ядра это сделать можно ооооооочень многими > способами... но они настолько тривиальны что если ты даже > не можешь использовать WtiteFile корректно то тебе не здесь > помощь искать надо.
Я не претендую на звание ОТЦА!!!!
Неужели сложно объяснить...
Вот код, он не работает...
В чем дело и как это исправить....
DWORD dwRC;
DWORD dwError;
char sMsg[512];
HANDLE hLPT;
DCB dcb;
COMMTIMEOUTS Timeouts;
bool bPortReady = TRUE;
hLPT = CreateFile("\\\\.\\lpt1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hLPT == INVALID_HANDLE_VALUE)
{
bPortReady = FALSE;
dwError = GetLastError();
LPVOID lpMsgBuf;
lpMsgBuf = NULL;
dwRC = FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMsgBuf,
0,
NULL);
if (dwRC && lpMsgBuf)
{
LocalFree( lpMsgBuf );
}
}
if (bPortReady)
{
bPortReady = SetupComm(hLPT, 128, 128);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetupComm failed: Error=%d", dwError);
MessageBox(sMsg);
}
}
if (bPortReady)
{
bPortReady = GetCommState(hLPT, &dcb);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "GetCommState failed: Error=%d",dwError);
MessageBox(sMsg);
}
}
if (bPortReady)
{
dcb.BaudRate = 9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
dcb.fAbortOnError = TRUE;
bPortReady = SetCommState(hLPT, &dcb);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetCommState failed: Error = %d",dwError);
MessageBox(sMsg);
}
}
if (bPortReady)
{
bPortReady = GetCommTimeouts (hLPT, &Timeouts);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "GetCommTimeouts failed: Error = %d",dwError);
MessageBox(sMsg);
}
}
if (bPortReady)
{
Timeouts.ReadIntervalTimeout = 50;
Timeouts.ReadTotalTimeoutConstant = 50;
Timeouts.ReadTotalTimeoutMultiplier = 10;
Timeouts.WriteTotalTimeoutConstant = 50;
Timeouts.WriteTotalTimeoutMultiplier = 10;
bPortReady = SetCommTimeouts (hLPT, &Timeouts);
if (!bPortReady)
{
dwError = GetLastError();
sprintf(sMsg, "SetCommTimeouts failed:Error = %d",dwError);
MessageBox(sMsg);
}
}
DWORD dwBytesWritten = 0;
char lpBuf[64];
unsigned char ch = 15; // Например
if(bPortReady)
{
if(!WriteFile(hLPT, &ch, 1, &dwBytesWritten, NULL))
{
MessageBox("Cann't write");
}
}
CloseHandle(hLPT);
|
|
|