cs_stender
Messages postés11Date d'inscriptionvendredi 12 décembre 2003StatutMembreDernière intervention17 mai 2008
-
3 mai 2008 à 13:27
cs_stender
Messages postés11Date d'inscriptionvendredi 12 décembre 2003StatutMembreDernière intervention17 mai 2008
-
17 mai 2008 à 18:30
Bonjour,
je cherche à faire clignoter des LEDs via le port serie ça ok :
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=True;
if SortieClgn=1 then begin
SortieClgn:=0;
end
else
begin
SortieClgn:=1;
end;
RTS(SortieClgn); (LED1 rouge)
DTR(SortieClgn); (LED2 verte)
end
Mon problème est d'avoir un clignotement asynchrone sur les LEDs
allumée une LED 1seconde puis éteinte 5secondes.
Puis second problème avoir alternativement (LED1 rouge) puis (LED2 verte) tout en pouvant gérer l'asynchronisme !.
des infos pour m'aiguiller ?
un composant timer tout près ?
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=True;<----- Ne sert à rien
if SortieClgn=1 then begin
SortieClgn:=0;
end
else
begin<----Sert à rien
SortieClgn:=1;
end;<----Sert à rien
RTS(SortieClgn); (LED1 rouge)
DTR(SortieClgn); (LED2 verte)
end;
Ton code est un peu caca
Procedure plus simple
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled : =False
SortieClg : =Not SortieClg ;//<--SortieClg est un boolean
RTS(SortieClgn); (LED1 rouge)
DTR(SortieClgn); (LED2 verte)
Timer1.Enabled : =True;
end;
Le probleme n'est pas dans le caractere asynchrone ou non d'un timer : Ce que tu cherches à faire s'en lancer les procédures RTS(SortieClgn) et DTR(SortieClgn) en même temps. A cela deux solutions :
1)Solution crade : jouer sur l'interval du Timer. Un interval "important" implique que tu auras le sentiment de voir les deux leds s'allumer en meme temps.
2)Méthode propre : les threads => Je te renvois sur les nombreux tutos / discussions sur le sujet.
B-Seconde partie :
1)Méthode crade
Var
RedToBeViewed : Boolean=True;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=False;
RedToBeViewed:=Not RedToBeViewed ;
Case RedToBeViewed Of
False : DTR(SortieClgn);
True : RTS(SortieClgn);
End;
Timer1.Enabled:=True;
cs_stender
Messages postés11Date d'inscriptionvendredi 12 décembre 2003StatutMembreDernière intervention17 mai 2008 17 mai 2008 à 18:30
Bonjour,
J'ai essayé de lire les Threads j'avoue que j'ai pas mal de mal à comprendre comment tout ça fonctionne !.
donc je vais essayer de vous poser la question suivante avec un ti dessin :)
Le but étant de comme je le disais dans mon premier message est que passer par les threads est la seule solution "propre" parce que j'avoue threads c'est quand même pas si évident que cela :(