Блин вот уже 3 месяца парюсь нихрена не получается, Поможите кто сможет и захочет...
Нужна прога, хотя нет.. лучше процедура для делфей, которая могла бы читать и писать данные побитно в LPT так чтоб на вход ей например подавать номер провода в порте, бит чтение\запись, и что необходимо установить 1или0 на этом проводе. причем так чтобы значение сохранялось до тех пор пока оно не будет изменено........
Если не ошибаюсь, в регистре управления LPT младшие 4 бита пишутся а остальные 4 читаются.
То есть всего у Вас 12 проводов на выход и 4 на вход.
Правда у тех что пишутся 1 соответствует где низкий а где высокий уровень. Поэтому для единообразия (чтобы 1 всегда соответсвовала высокому) я сделал так
procedure SendLpt1(b:byte);
var bb:byte;
begin
bb:=((not b) and $0F) xor $04;
asm // это просто вывод байта bb в порт $37A
mov DX, $37A
mov AL, bb
out (DX), AL
end;
end;
Чтение старшего полубайта так же просто
procedure GetLpt1(var b:byte);
begin
asm // это просто ввод байта b из порта $37A
mov DX, $37A
in AL, (DX)
mov b, AL
end;
b:=b and $F0 ; // это не обязятельно, но мне так удобнее
end;
Это все работает, если в BIOS установлен режим SPP для LPT1
P.S. в моем предыдущем примере ошибка -
должно быть mov AL,b вместо mov b,AL
Я писал драйвер для того чтобы все работало под NT(win2k*winXP) и под Win95&sons.
Ассемблерная вставка (а попросту запись в порт))
будет работать только под Win95/98/2000
Джордано Бруно секс-форума. =) Забанен за стихотворение.
нее... под ХР не пошло... под 9Х вроде проканало но както кривовато.... доделать так и не смог.... в принципе для себя делал, поэтому и крива проканало......
Под ХР ка таковой я не пробовал.... под 2003 виндой не прошло....
Боюсь тупым записыванием в порт ничго ны получится. У меня например ДОСная программа, которая общается с последовательным портом. Там как раз напрямую в порт пишется. Так из под виндов работает очень криво.
Неужели нет для этого соответсвующего VCL во всемогущем инете?