Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.20;
Скачать: CL | DM;

Вниз

LPT порт   Найти похожие ветки 

 
Dionis ©   (2003-01-26 20:04) [0]

Хочу записать в порт LPT. Имеется код:

asm
MOV DX,890;
MOV AL,Data
OUT DX,AL
end;

У меня при 0<=Data<=255 в порт записывается 58 (при любом начальном значении в порту). Что делать? (ОС Windows ME)


 
jack128 ©   (2003-01-26 22:45) [1]

Учить WinApi, а не асм...
СreateFile(),ReadFile(),WriteFile()


 
Serious Sam   (2003-01-26 23:21) [2]

Использовать сторонний компонент DlPortIo


 
int64 ©   (2003-01-27 03:18) [3]

asm
MOV DX, 888;
MOV AL,Data
OUT DX,AL
end;


Вообще-то, не только регистры порта, но и сами порты могут разные адреса иметь.


ЗЫ.Только не спрашивай потом, почему не работает под НТ.


 
Dionis ©   (2003-01-27 09:24) [4]

888 не работает. У меня порт на 890 сидит! А в 888 записывается только 120 независимо от Data.


 
koka   (2003-01-27 09:54) [5]

Проблема в W2000 и выше
Решается - просто
-использованием стороннего компонента DirectPort



 
Dionis ©   (2003-01-27 11:53) [6]

А каким образом этот DirectPort использовать?


 
Valentain ©   (2003-01-27 16:01) [7]


procedure port_Write( APortAddr:Word; AData:Byte ); assembler;
{$IfDef WIN32} pascal; {$EndIf}
{ -- }
asm
mov dx,APortAddr
mov al,AData
out dx,al
end;{port_Write}

Порт принтера имеет диапазон ввода/вывода, информацию по каждому адресу диапазона (за что каждый отвечает) можно найти...
а port_Write(888,х) нормально работало в Win95/98...

С уважением...


 
Yaga   (2003-01-27 18:12) [8]

Если есть желание разобраться...
Адрес LPT1 в области данных BIOS - 0:408h, если есть сомнения отноcительно 378h, добавляете маленький кусочек кода:
mov ax,40h
mov ds,ax
mov dx,ds:[8]
в результате чего в dx - базовый адрес LPT1
Предположем, что базовый 378h:
378h - Регистр данных, запись/чтение
379h - Регистр состояния принтера, чтение:
биты:
3: 0 - при печати возникла ошибка
4: 0 - принтер в автономном режиме
5: 1 - конец бумаги
6: 0 - принтер готов к печати след. символа
7: 0 - принтер занят, находится в автономном режиме или произошла ошибка
37Ah - Регистр управления принтером, запись/чтение
биты:
0: бит запуска печати (кратковременно устанавливается в 0)
1: 1 - после возврата каретки выводить перевод строки
2: 1 - инициализировать принтер
3: 1 - разрешить вывод на печать
4: 1 - разрешить прерывания от принтера
Это если на асме. Перед кормлением очередным байтом не забудьте проверить готов ли заглотать его и не произошло ли какой-нить ошибки.
Не совсем согласна с jack128 - асм сила, но тоже рекомендую использовать CreateFile(), ReadFile(), WriteFile(). Использовать готовые компоненты, конечно тоже выход, но приятнее разобраться.



Страницы: 1 вся ветка

Текущий архив: 2003.03.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-64092
SkyQuake
2003-03-04 08:02
2003.03.20
Ключевое слово object


3-64016
Ruf
2003-03-01 12:39
2003.03.20
summ(pole1)


14-64373
panov
2003-01-26 19:07
2003.03.20
О теме сообщения.


6-64263
Шморгун Евгений
2003-01-31 16:15
2003.03.20
Internet Explorer и Delphi


14-64357
Intell
2003-03-05 11:54
2003.03.20
Работа с WinRAR или WinZIP