Форум: "Система";
Текущий архив: 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