Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Problem beim grafischen Programmieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.08.2005, 15:16 Uhr
Sneido82



Hallo, bitte helft mir,

Ich möchte so lange ein Button gedrückt ist einen Takt ausgeben bis Ich vom Button wieder runter gehe. Ich steh aber auf dem Schlauch, da meine do-while-Schleife nie abgebrochen werden kann. Hier mein Text:

void __fastcall TPositionieren::btnReMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
do
{
if(I%2)
{
I++;
Out=(Out|SBIT2); //Ausgabe an LPT
my_outp(PORT_ADR,Out);
Sleep(1000);
//speed(vwert);
}
else
{
I++;
Out=(Out&LBIT2); //Ausgabe an LPT
my_outp(PORT_ADR,Out);
Sleep(1000);
//speed(vwert);
}
}
while(???); //???Abbruchbedingung???
}
//---------------------------------------------------------------------------

Kann mir irgendjemand helfen
MfG Sneido
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.08.2005, 10:59 Uhr
Th



Du mußt einen Timer benutzen, der mittels OnMouseDown aktiviert und mittels OnMouseUp wieder deaktiviert wird, also z.B.

C++:
void __fastcall TPositionieren::btnReMouseDown(TObject *Sender,
                    TMouseButton Button, TShiftState Shift, int X, int Y)
{
     Timer->OnTimer = OnTimer;
     Timer->Interval = 1000; // statt Sleep(1000);
     Timer->Enabled = true;
}

void __fastcall TPositionieren::btnReMouseUp(TObject *Sender,
                    TMouseButton Button, TShiftState Shift, int X, int Y)
{
     Timer->Enabled = false;
}

void __fastcall TPositionieren::OnTimer(TObject *Sender)
{
  static bool st_bFlag = true; // statt Zähler I, außer du brauchst den Zähler noch für was anderes

  if(st_bFlag)
   Out=(Out|SBIT2); //Ausgabe an LPT
else
   Out=(Out&LBIT2); //Ausgabe an LPT

  my_outp(PORT_ADR,Out);
  st_bFlag = !st_bFlag;
}


Dieser Post wurde am 25.08.2005 um 11:02 Uhr von Th editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.09.2005, 17:12 Uhr
Sneido82



Danke für deinen Vorschlag!!!

habe es soweit auch realisieren können, allerdings mit der 1ms (1000Hz) an
Timer->Interval = 1;
kann ich noch nichts anfangen!!

Somit meine Frage: Ist es möglich den Zeitablauf noch kleiner zu gestalten, evtl. auf
0,5ms (2000Hz).
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: