WulF |
Отправлено: 04.04.2004, 15:49 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 3
|
Народ, помогите плз. Уже мозги киснут. Спаял железяку для того чтоб увидеть что на LPT творится. Т.е. 8 светодиодов на выходе и 5 кнопок на вход. Написал прогу с помощью компонента VCX. Все вроде хорошо, все прекрасно. Все что поросишь идет на выход, также и на вход. Потом компилю релиз и несу на другую тачку, а прога там не работает — требует зарегирить компонент в системе.
В качестве платформы использую Win2k (т.е. никакого ассемблера)
Потом пытался все это переписать под CreateFile, вроде судя по докам все правильно, но на выходе все равно ничего нет.
Может я напутал что-то?
HANDLE hLPT=CreateFile("\\\\.\\LPT1",GENERIC_WRITE,0,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL|FILE_FLAG_RANDOM_ACCESS , NULL);
if (hLPT!=INVALID_HANDLE_VALUE){
Memo1->Lines->Add(" Ok Open LPT1");
char buffer;
buffer=10;
DWORD dw;
OVERLAPPED ov;
WriteFile(hLPT,buffer,sizeof(buffer),&dw,&ov);
CloseHandle(hLPT);}
else Memo1->Lines->Add("Error Open");}
Ошибок вроде не выдает, типа все нормально, а светодиоды все равно не мигают.
Насколько я понимаю проблему, то LPT просто берет это все в свой буфер и наружу не выводит. Подскажите плиз в чем траблы, или как ему команду подать на вывод буфера? |
|
Asher |
Отправлено: 04.04.2004, 16:53 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
а \\\\.\\ перед LPT1 убрать не пробовал?
|
|
WulF |
Отправлено: 04.04.2004, 18:35 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 3
|
Пробовал. Соединение с портом происходит нормально и запись в него тоже, просто данные из него не выходят. |
|
klumba |
Отправлено: 06.04.2004, 05:34 |
|
Не зарегистрирован
|
Попробуй в биосе сделать LPT как EPP.
Я связывался с портом через библиотеку dlportio, идет с прогой DlPortIO, с ней же идет пример на С. Общается прямо с регистрами (0x378 — для LPT1). Библиотеку просто добавил в проект и все работает.
У меня другой вопрос почему при передачи по порту выдает 3.2 вольта а при приеме 3.9 и какой ток тама. (может это только у меня) |
|
WulF |
Отправлено: 07.04.2004, 16:49 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 3
|
Выходной ток на LPT не должен превышать 20мкА, а выходное характеристики соответсвуют ТТЛ уровням. Вообще лучше возьми полистай Гука "Аппаратные интерфейсы ПК". Также определен стандарт на приемники/передатчики для LPT — IEEE1284.
У меня напряжение при вводе/выводе тоже прыгает, но какой-то глобальной проблемы для меня пока не составляет. А с режимами порта в БИОСе я игрался, все равно не помогает. |
|
Asher |
Отправлено: 07.04.2004, 18:13 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
Для начала попробуй упростить:
CreateFile( "LPT1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL );
и т.к. ты открывал не overlapped, то &ov тебе не нужен.
WriteFile(hLPT, &buffer,sizeof(buffer),&dw,NULL);
В предыдущей строке самое главное это &buffer, а не buffer!!!
А ток все-таки 20мА (У Гука опечатка. Там на странице выше все данные приведены для тока 14мА)
|
|
|