| 
 
 
 
 Легенда:
  новое сообщение 
  закрытая нитка 
  новое сообщение 
  в закрытой нитке 
  старое сообщение   | 
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
Новичкам также крайне полезно ознакомиться с данным документом.
|  |  | [Win32] I tut uzhe brosal ssylku na LPT port driver dlia NT...  01.08.02 00:17  Число просмотров: 1128 Автор: $tain Статус: Незарегистрированный пользователь
 |  
| thx |  | <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);
 
 
 
 
 
 |  
 
 
 |  |