Подключение к LPT-порту

Данная страничка представляет собой описание выполнения задания по "Периферийным устройствам". Получив задание: "Подключение датчиков к LPT-порту", мы с энтузиазмом принялись за дело. (Долго ли воткнуть пол десятка переключателей:-)) Как оказалось совсем не долго , но заставить комп их видеть и обрабатывать не удалось. используя много численные ссылки мы обнаружили, что не всё так уж запущенно.LPT-порт используется для множества полезных вещей через него можно подключить принтер, видеокамеру, внешний CD-ROM, сканер и даже другой компьтер. Используя LPT-порт можно считывать информацию с телефонных карточек или управлять различными устройствами. Ниже можно пройти тот путь по которому мы долго и упорно шли сбивая в кровь мышечные кнопки.
Описание LPT порта
Телефонные карточки
Примеры программ
Пример работы с LPT портом
Примеры программирования
В конечном счете мы всё равно остались перед разъемом LPT порта,в который надо что-то воткнуть и потом это что-то считать.

Разведка показала какие контакты за что отвечают:

далее эвристическим методом мы определили что, как и куда:))

Переключателями в назначенном количестве (5 штук) соединили 25 контакт с 10,11,12,13,15.

Теперь рассмотрим события происходящие при замыкании контактов
При замыкание 25 контакта с 12 контактом бит №6 равный единице обнулится.
При замыкание 25 контакта с 13 контактом бит №5 равный единице обнулится.
При замыкание 25 контакта с 11 контактом бит №8 равный 0 станет единицей.
При замыкание 25 контакта с 10 контактом бит №7 равный 0 станет единицей.
При замыкание 25 контакта с 15 контактом бит №4 равный 0 станет единицей.
Далее располагается текст программы, которая отображает положение переключателей в графической форме.
                        program datchik;
 uses graph, dos, crt; {объявление модулей, необходимых для работы программы}

 var
    regs:registers;
    x, n,driverscreen,modescreen,i1,step:integer;
    i:byte;
{объявление переменных необходимых для выполнения программы}
 begin {начало основного блока}
DriverScreen:=Detect; {считывание показаний экрана}
InitGraph(DriverScreen,ModeScreen,'..\bgi');{инициализация графического режима
экрана и запоминание предыдущего состояния экрана}
step:=15;{переменной присвоено значение}
line(0,240,640,240);{рисуется линия-кардинат на экране}
moveto(0,240);{позецируем курсор на начало линии-кардинат}
repeat {начало цикла опроса состояния порта и вывода графически этой информации}

regs.Ah:=01;{регистру ah присваивается состояние 01(состояние порта
 возвращается в это же регистр)}
intr($17, regs);{считывается прерывание от принтера по регистру ah}
With regs do begin  {блок приоброзования десятичного числа
 в двоичное представление}
    for i:=0 to 15 do begin
       x:=ah shr i;
        n:=x and 1;

        if (n=0) then {если бит состояния равен 0 то рисуется
        два цикла точек образующих отклонение от линии кардинат
        условно обозначающих 0}
          begin
          for i1:=0 to step do begin
              putpixel(GetX+i1,GetY+i1,15);{рисование точек}
              delay(50);{задержка при рисование позволяет сделать вывод
              согласно графической информации}
          end;
          moveto(getx+i1,gety+i1);{позецирование курсора }
          for i1:=0 to step do begin
              putpixel(GetX+i1,GetY-i1,15);
              delay(50);
          end;          
        moveto(getx+i1,gety-i1);
          end
        else
        begin
          for i1:=0 to step do begin
              putpixel(GetX+i1,GetY-i1,15);
             delay(50);
          end;
          moveto(getx+i1,gety-i1);
          for i1:=0 to step do begin
              putpixel(GetX+i1,GetY+i1,15);
              delay(50);
          end;
          moveto(getx+i1,gety+i1);
          end;
               if n=1 then
                       end;
          delay(50);
       end;
moveto(0,240);{позецирование курсора на начало кардинат}
until keypressed;{окончание цикла при нажатие любой клавиши}

 CloseGraph;{закрытие графики и возвращение к начальным установкам}
  end.{конец программы}

програма создана только для того что бы показать процесс работы и возможности LPT-порта поэтому не оформлена и не нацелена для практической работы.Всё что вы увидете это полосочки в режиме MS-DOS. Пример показан внизу(на нем имеется ввиду что кнопочки вы расположите над экраном:).Если нужно что-то более оформленное и удобное пишите может помогу:)






Прoграмма в формате PAS Программа в EXE формате
Сайт создан в системе uCoz