Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2011, 17:50   #1
ovram
Пользователь
 
Регистрация: 04.01.2011
Сообщений: 11
По умолчанию работа с LTP портом, делфи

Была портирована програма с паскаля в делфи, суть заключалась в выводе последовательности бит на ногу порта, поскольку под винду используются другие библиотеки а я больше шарю в железе а не в коде получилась запарка, порт работает нормально. Анализатор показует изменение уровней при подтягивании ног, токо немогу вьехать где в коде описаны ноги порта

LPT 1:

_25 - земля.



_8 - выход данных на запись.

_10 - вход детектора

схема устройст
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
 CRT32;
 function Inp32(PortAdr: word): byte; stdcall; external 'inpout32.dll';
 function Out32(PortAdr: word; Data: byte): byte; stdcall; external 'inpout32.dll';

const
{time=75;}
port=888;
var
halft,i,n,o,time:integer;
z,f,s:byte;
mass:array[1..650] of byte;
a:text;
h:string[25];

procedure prep;
begin
textbackground(11);
for i:=1 to 2000 do write(' ');
clrscr;
textcolor(4);
writeln(' writer Copywrite by leg ');
for i:=1 to 650 do mass[i]:=0;
i:=0;
textcolor(yellow);
{normvideo; }
writeln('select line "1" --> iso1 "2" --> iso2');
readln(h); { h:='1'; }
if h='1' then begin
o:=650;
writeln('write iso1 line');{ enter time of fronta (20-150)');
read(time);}
time:=35; {sinchron time}
end;
if h='2' then begin
o:=250;
writeln('write iso2 line');
time:=75;
end;
halft:=round(time/2);
write('input CAR-file name?:');
readln(h);
{ h:=h+'.car';
{h:='v2.car'; }
assign(a,h);
reset(a);
{ if filesize(a)=480 then o:=250;
if filesize(a)=1260 then o:=650;}
repeat
inc(i);
read(a,f);
mass[i]:=f;
write(f,' ');
{ read(a,f); }
until eof(a);
close(a);
writeln;
writeln('insert in writer');
writeln('time of front: ',time);
end;

begin
{halft:=round(time/2); }
prep;
Out32(Port,0);
  repeat
   delay(time);
    if Inp32(Port)=0 then Out32(Port,255);
    if Inp32(Port)=255 then Out32(Port,0);
    z:=Inp32(Port+1);;
  until z=255;
{uslovie starta}
{delay(100);} {smeshenie}
textcolor(red);
writeln;
writeln('!!!record!!!');
  for i:=1 to o do
   begin
     f:=mass[i];
{readkey; } {step by step}
     write(f,' ');
       if f=0 then
        begin
         z:=Inp32(Port);
          if z=0 then s:=255;
          if z=255 then s:=0;
         Out32(Port,s);
{for n:=1 to time do
begin }
         delay(time);
{ end;
write(f,' '); }
        end;
      if f=1 then
        begin
         z:=Inp32(Port);
         if z=0 then s:=255;
         if z=255 then s:=0;
         Out32(Port,s);
{for n:=1 to halft do
begin }
         delay(halft);
{ end;
{2 chast}
         z:=Inp32(Port);
         if z=0 then s:=255;
         if z=255 then s:=0;
         Out32(Port,s);
{for n:=1 to halft do
begin}
         delay(halft);
{ end;
write(f,' ');}
        end;
   end;
textcolor(yellow);
writeln;
writeln;
writeln('complite!');
sound(3000);
delay(30000);
nosound;
end.

Последний раз редактировалось Stilet; 07.01.2011 в 18:56.
ovram вне форума Ответить с цитированием
Старый 07.01.2011, 18:10   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Код унулый и не оформленый. Читай статью http://www.programmersclub.ru/lpt-delphi/

На пальцах сложновато пояснить...
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 07.01.2011, 22:44   #3
ovram
Пользователь
 
Регистрация: 04.01.2011
Сообщений: 11
По умолчанию

а в чем могут быть косяки? все компилиться но неработает, подозреваю просто неправильно выдаются и принимаются биты в строчках if Inp32(port)=0 then Out32(port,255);
ovram вне форума Ответить с цитированием
Старый 07.01.2011, 23:10   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

оригиналы статей представлены в выпусках №3-4 журнала на http://procoder.info.
Цитата:
где в коде описаны ноги порта
ноги порта представлены в трех регистрах DATA, STATUS, CONTROL доступных каждый по своему адресу и представляют собой байт, тот самый с которым вы работаете
Код:
   z:=Inp32(Port);
Out32(Port,s);

читайте статью Владимира Дегтяря.

Добавлено
и поправьте название темы, LPT, а не LTP.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 07.01.2011 в 23:13.
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с com-портом larry Visual C++ 6 12.08.2010 16:21
работа с портом Assemblerru Win Api 16 10.06.2010 20:00
Работа с com портом albles Общие вопросы C/C++ 2 16.11.2009 15:15
Работа с COM-портом jovanny Помощь студентам 2 03.05.2009 18:06
работа с COM портом ShAzat Общие вопросы Delphi 8 28.05.2008 20:08