Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
6-64259
Lusha
2003-01-31 17:30
2003.03.20
Sockets & TServiceApplication


7-64399
Hopkins
2002-12-14 12:28
2003.03.20
Как из Delphi вносить изменения в окнах апплетов ?


3-63930
Ник
2003-03-03 10:54
2003.03.20
Вычисляемое поле


3-64043
Вованчик
2003-03-03 09:13
2003.03.20
Вопрос о кодировке


7-64393
Oleg_G
2003-01-22 23:58
2003.03.20
Как можно узнать объем Винта в Гб и ОЗУ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский