Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите с 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?


Наверх

Титульная страница Поиск, карта сайта Написать письмо