cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 2011
-
27 sept. 2005 à 17:37
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 2010
-
28 sept. 2005 à 14:13
Bonjour,
J'ai une application qui a un timer qui scanne le port COM (qui ne touche pas au graphisme de mon application) toutes les 3 secondes.
C cool, seulement, quand je déplace ma fenetre ou que je fait des certains trucs (comme un popup menu par exemple, ...), ça bloque si le timer fait sa boucle à ce moment.
Comment faire pour que le timer n'ai pas d'incidence sur mon application ?
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 28 sept. 2005 à 13:58
pour information Tcomport utilise des threads à l'envoi d'une chaine
Il vaut mieux utiliser la fonction WriteStrAsync(const Str: string; var
AsyncPtr: PAsync); qui n'est pas bloquante. plutot que la fonction
WriteStr(const Str: string) qui attend la fin de transmition.
jlen100
Messages postés1606Date d'inscriptionsamedi 10 juillet 2004StatutMembreDernière intervention25 juillet 201413 27 sept. 2005 à 20:03
salut,
tu n'iadiques pas par quel composant tu accede au port COM mais
j'ai eu ce genre de probleme dans une application. ça arrivais quand je
dectectais une trame partielle et que j'attendais la fin de trame dans
le timer: par exemple je recevais les 5 premiers caracteres et
j'attendais les 5 suivants. j'ai résolu le problème en ne lisant que
les caracteres effectivement reçus et en reportant la lecture des
suivants à la scrutation suivante.
Je ne sais pas si c'et ton cas mais ça peut être une exiplication.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 28 sept. 2005 à 10:12
Salut ni69 et jlen100,
Je met déja des Application.ProcessMessages un peu partout (un peu trop d'ailleurs à mon gout).
J'accède au port COM par le composant tcomport.
Mais mon problème ne vient pas de l'échange des données car je ne fait qu'envoyer une commande toutes les 3 secondes et ma procédure est largement finie (et correctement) avant qu'il en relance une autre.
Je désire un peu lancer genre une pseudo "2ème instance", un autre thread si je puis me permettre de ce timer, qui n'ait pas d'incidence sur mon prog.