Конференция "WinAPI" » Странная задержка... [D7, WinXP]
 
  • Student © (12.02.09 12:35) [0]
    Доброго дня мастера. Я столкнулся с очень непонятной для меня "штукой".
    Есть процедура:
    procedure TForm1.ButtonPin2;
      begin
      Lpt.WritePort (GetCurrentPort,0,(1 xor Lpt.ReadPort( (GetCurrentPort) ,0) ));
     //Здесь идёт обращение к драйверу LPT порта...впринципе невникайте в суть работы
    end;

    .по
    .аналогии до
    procedure TForm1.ButtonPin9;
    begin
    end;
    Есть такая процедура, устанавливающая все биты регистра данных LPT порта в лог. 1
    procedure TForm1.Button41Click(Sender: TObject); //начальная установка сигналов
    var
    i : integer;
    begin
     if CheckBox1.Checked = false then ButtonPin2; //тут флажки чтоб видно было (для удобства)
     if CheckBox2.Checked = false then ButtonPin3;
     if CheckBox3.Checked = false then ButtonPin4;
     if CheckBox4.Checked = false then ButtonPin5;
     if CheckBox5.Checked = false then ButtonPin6;
     if CheckBox6.Checked = false then ButtonPin7;
     if CheckBox7.Checked = false then ButtonPin8;
     if CheckBox8.Checked = false then ButtonPin9;

     for i :=1 to 16 do arFlags[i] :=0;
    end;

    Есть также процедура
    procedure TForm1.Button13Click(Sender: TObject); //сигнал -АД00
    begin

       ButtonPin3;  //выкл 3 разряд
       ButtonPin4;
       ButtonPin7;  //     7 разряд

       ButtonPin8;  //имитирует строб
       ButtonPin8;

    //Вот здесь (до слова end)мне нужно вызвать процедуру Button41Click, устанавливающую все биты регистра данных LPT порта в 1. Но...здесь возникает проблема
    //1) Значит, вызываю процедуру Form1.Button41Click(Form1);
    // Результата нет.
     2) Пишу задержку:
    Sleep (5000);
    Form1.Button41Click(Form1); - результата нет
     3) Пишу задержку циклом
      for i :=1 to 10000 do
         for j :=1 to 10000 do Form1.Button41Click(Form1); - результата нет
    //
    // А если пишу так
     ShowMessage ('');
     Form1.Button41Click(Form1); - после нажатия на диалоге - процедура срабатывает (разумеется если не слишком быстро нажал :-) )
    //
    //
    end;
    Логичный вопрос: Почему так происходит и как избежать задержки подобным образом?


 
Конференция "WinAPI" » Странная задержка... [D7, WinXP]
Есть новые Нет новых   [134435   +34][b:0][p:0.001]