Прежде всего, я хотел бы сказать, что я знаю, что это действительно устаревший вопрос. Вероятно, поэтому я не могу найти какую-либо информацию через Google. (или я просто хуже в поиске, чем хотелось бы признать! ха-ха.) Все результаты в значительной степени говорят мне, что inp()
& outp()
бесполезны в современных системах, потому что ядро обрабатывает все ввод и вывод, а не программа. Я использую 16-битные Dos с машины 486, и я смог отлично использовать outp()
с моим параллельным портом. Мне нравятся 16-битные Dos, и я не заинтересован в изучении «нового и улучшенного» способа сделать это на системах эпохи NT и выше (по крайней мере, сейчас).
С этим прояснилось -
Мой вопрос касается inp()
. У меня есть старое печатное руководство, в котором говорится, что вы передаете одну переменную, адрес порта, inp()
. В этом случае я предполагаю, что, поскольку я использую 0x378
в качестве порта для outp()
, я бы также использовал его для inp()
. Так как я не запрограммировал принимать внешний ввод раньше, я не был уверен, какой тип значения я получу от простого включения / выключения, поэтому я написал этот быстрый код, чтобы получить все новые значения-
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <dos.h>
int main(void){
clrscr();
int input;
int buff = 0;
restart:
input = inp(0x378);
if(input != buff){
cout<<input;
buff = input;
}
goto restart;
}
Я просто использовал «buff», чтобы он не продолжал выплевывать «255» снова и снова и, возможно, скрывал другое значение при подаче питания на входной вывод. Излишне говорить, что единственное значение, которое было напечатано, было «255».
Когда я пишу программу для вывода данных на выводы «D» параллельного порта, я посылаю шестнадцатеричный код на порт, который соответствует желаемому выводу ... Сейчас я имею дело с выводами «S» на параллельный порт для ввода. Должен ли я получить шестнадцатеричный код обратно в программу?
Кроме того, я вошел в BIOS и убедился, что режим параллельного порта был вход / выход, а не только выход. Узнав, что у меня было два режима, моя волна возбуждения быстро смялась с тем же паршивым выходом «255».
Любая информация, которая укажет мне правильное направление, будет полезна.
Спасибо!