![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с LPT портом [D6, Win95/98]
ychenick © (2003-11-04 17:28:00)
Написал программу на паскале со вставками на asm:
{процедура посылки данных в порт}
procedure PortOut(Port: Word; Data: Byte); assembler;
asm
MOV DX,Port;
MOV AL,Data
OUT DX,AL
end;
{функция получения данных из порта}
function PortIn(Port: Word): Byte; assembler;
asm
MOV DX,Port;
IN AL,DX
end;
Удалил драйвера под принтер ( LPT1) с виндовса что б не мишали моей роге.
Припаял к ножкам 2 (Data0 - Output), 20 (Ground) и 10 (ACK-input).
по идее когда я выполню portout($378,255), должны загорется все проводки, беру 2 и 20, пробую напряжение,0 (ноль). Беру 10 и 20, напряжение Ок. Как ведь 10 (ACK) input!
Выполняю portout($378,0) - таже ситуация. Несколько раз проверил так ли припаял, все так как надо, без замыкания и т.п.
Замыкаю 2 и 20, делаю portin($379) получаю 120 тоесть 01111000. Рассоединяю, ситуация в portin($379) не меняется! Какие ошибки, что посоветуете?
Alec (2003-11-23 06:47:00) [1]
Я уже точно не помню - давно это было, но кажется в ЛПТ есть один инверсный выход, так что может это как раз он?
Pat (2003-11-18 13:25:00) [2]
>Agr (18.11.03 06:51) [9]
Win API - CreateFile, WriteFile, ReadFile...статей навалом
Agr (2003-11-18 06:51:00) [3]
На ASME писать конечно круто, но под NT писать беспонтово...
Защищенный режим, 0-е кольцо, драйверы и прочая хрень (пытался разобраться да время жалко):( Зато с хваленым компонентом все на ура работало, на нескольких машинах проверял, с разными винтами, в т.ч. и на ХР...
Новый чайник (2003-11-17 18:16:00) [4]
Я писал подобные процедуры и на Асм и на стандартных операторах Паскаля (Port,mem,memw). Все работало. Код на Асме правильный. Тип порта не важен, я переключал по всякому и все работало под W9x. Сейчас вот маюсь с XP. Под ним ничего не работает на Асме. В чем косяк, не пойму никак. Кстати для теста программы я сделал переходную платку под LPT со светодиодами и теперь никакими проводками не экспериментирую. раньше стоял, простите, раком и тыкал осцилографом в разъем ( системник под столом у меня). Рекомендую сделать нечто подобное, намного удобнее да порт целее будет.
knstantun (2003-11-17 11:15:00) [5]
Все зависит от ОСи, НО единстванный выход это DirectPort_3.8
- Компонент стоящий того, чтобы с его простотой, ворочить горы!
Agr (2003-11-17 09:00:00) [6]
Под D6 есть компонент DirectPort (у меня, если не найдешь), для низкоуровневого доступа к портам,в Win9x работает отлично, в NT с Com-портом возникали косяки. Данные из регистра $378 (lpt1) выводятся напрямую на ноги 2-9 порта. Фишка в том, что если порт настроен не как SPP (Standart Parallel Port), то возможно чтение сигналов с этих ног.
И еще, проводки врят-ли загорятся, т.к. ток КЗ 50-60 мА максимум ;)
icWasya (2003-11-06 11:03:00) [7]
а кстати посмотри в дебагере, как передаются параметры - не через регистры ли??
Talla2k (2003-11-06 01:59:00) [8]
Через int17 легко и просто смотри HELP!!!
Инфы просто море,поищи!!!Ежели не найдешь скажи,поделюсь!
И еще,типа работал как-то с LPT и через asm и через INT17,все работало как часы,не пойму что за проблемы???Это-ж не COM!!!
yachenick (2003-11-05 11:25:00) [9]
У меня XP и 98. В паскале port будет работать только в 98, но не в XP. На асме код в норме,так как после
PortOut($378,255);
выполнить x:=port[$378] получим что надо(x:byte)= 255 . А как ты говориш работать через INT17?
Talla2k (2003-11-05 00:51:00) [10]
Во-первых надо учитывать ОС (я надеюсь у тебя 9X)!!!
Во-вторых зачем эти вставки asm,ведь в Паскале есть оператор port???
В-третьих(если я не ошибаюсь [просто давно не работал с LPT])после записи в $378 надо в $37a в D0(первый бит) сделать строб,дабы все то что в $378 передалось!!!
И в-четвертых,есть возможность работать с LPT через INT17!!!
Успехов! :)
reticon (2003-11-05 00:22:00) [11]
а может все-таки косячок в процедуре PortIn?