|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 7, 2003 18:38:11 Как писать в LPT, не используя WriteFile? В Visual C++ 6.0 пишу: #include <windows.h> INT WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nShowCmd) { HANDLE port; port = CreateFile("LPT1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NU LL); if (port == INVALID_HANDLE_VALUE) MessageBox(NULL,"Не возможно открыть LPT1","Error",MB_OK); char buf = 1; DWORD BytesWriten = 0; WriteFile (port, &buf, 1, &BytesWriten, NULL); CloseHandle (port); return 0; } Все компилиться без ошибок, но на WriteFile прога зависает и всё. Помогите! |
|
|
Дата: Дек 7, 2003 20:58:24 · Поправил: Quantum AZ87 Как писать в LPT, не используя WriteFile? Лучше всего писать именно через WriteFile. но на WriteFile прога зависает и всё Чтоб не зависала нужно предварительно вызвать SetCommTimeouts. Ещё перед CloseHandle желательно добавить PurgeComm(port,PURGE_TXABORT | PURGE_TXCLEAR); Кстати, а что подключено к порту? Принтер? |
|
|
Дата: Дек 8, 2003 18:26:15 Принтер подключен к USB, а к порту подключен девайс со светодиодиками и кнопочками. Если в DOS'е то светодиоды на 0х378 порту, а кнопки на 0х379. |
|
|
Дата: Дек 8, 2003 18:28:37 AZ87 а к порту подключен девайс со светодиодиками и кнопочками. Я так сразу и заподозрил ;-) В DOS'е всё работало? |
|
|
Дата: Дек 8, 2003 19:20:20 Работало отлично. Спасибо за SetCommTimeouts. А можно писать вообще без тайаутов. Мне требуется скорость, а милисекундные задержки не нужны. Ещё вопрос. Что делает Функция PurgeComm? |
|
|
Дата: Дек 8, 2003 19:25:59 А можно писать вообще без тайаутов Обнулить оба таймаута в SetCommTimeouts. Что делает Функция PurgeComm? Очищает буфер контроллера и финиширует все операции чтения/записи. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.065 |