Bonjour,
Je me pose deux trois petites question ...
Je me demande comment ne pas louper des données qui rentre dans le port
Il faut faire une boucle qui en permanance fasse
+ COM1.input ?
Mais si on fait la boucle en permanence, comment on peut faire autre chose
du programme ?
En fait je voudrais surveiller le port COM1, que n'importe où dans le
programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le prog
et que ca execute une procedure.
Si il y a "A" qui rentre ca execute la procedure A
Si il y a "B" .........
Et ceci n'importe quand dans le prog!
Merci de me donner si possible dans exemple ce prog pour mes questions !
Merci d'avance pour vos reponses !
Jean-Michel
Bonjour,
Je me pose deux trois petites question ...
Je me demande comment ne pas louper des données qui rentre dans le port
Il faut faire une boucle qui en permanance fasse
+ COM1.input ?
Mais si on fait la boucle en permanence, comment on peut faire autre chose
du programme ?
En fait je voudrais surveiller le port COM1, que n'importe où dans le
programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le prog
et que ca execute une procedure.
Si il y a "A" qui rentre ca execute la procedure A
Si il y a "B" .........
Et ceci n'importe quand dans le prog!
Merci de me donner si possible dans exemple ce prog pour mes questions !
Merci d'avance pour vos reponses !
Jean-Michel
Bonjour,
Je me pose deux trois petites question ...
Je me demande comment ne pas louper des données qui rentre dans le port
Il faut faire une boucle qui en permanance fasse
+ COM1.input ?
Mais si on fait la boucle en permanence, comment on peut faire autre chose
du programme ?
En fait je voudrais surveiller le port COM1, que n'importe où dans le
programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le prog
et que ca execute une procedure.
Si il y a "A" qui rentre ca execute la procedure A
Si il y a "B" .........
Et ceci n'importe quand dans le prog!
Merci de me donner si possible dans exemple ce prog pour mes questions !
Merci d'avance pour vos reponses !
Jean-Michel
ng,
Merci beaucoup pour ta reponse !
Donc avec ce que tu me dit, la boucle qui est dans le Sub timer1.timer()
tourner en permanance pendant que le programme tourne ?
Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then Danger
EndIf ?
Ca veut dire que je ne vais jamais louper l'arriver de la lettre D pendant
tout le programme ?
Merci encore
Jean-Michel
"ng" a écrit dans le message news:
#
> Bonjour,
> Il suffirait de placer la boucle dans un timer :
>
> Soit comme ca :
>
> Au début du programme faire timer1.enabled=true
>
> Sub timer1_timer()
> timer1.enabledúlse
> do
> 'boucle
> DonneeEntrant=DonneeEntrant & COM1.input
> loop
> end sub
>
> ou définir un interval petit pour le timer
>
> Sub timer1_timer()
> DonneeEntrant=DonneeEntrant & COM1.input
> end sub
>
> Nicolas.
>
>
> "Jean-Michel" a écrit dans le
> message de news:
> > Bonjour,
> >
> > Je me pose deux trois petites question ...
> > Je me demande comment ne pas louper des données qui rentre dans le
> com1
> > Il faut faire une boucle qui en permanance fasse
> DonneeEntrant=DonneeEntrant
> > + COM1.input ?
> > Mais si on fait la boucle en permanence, comment on peut faire autre
chose
> > du programme ?
> >
> > En fait je voudrais surveiller le port COM1, que n'importe où dans le
> > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
prog
> > et que ca execute une procedure.
> > Si il y a "A" qui rentre ca execute la procedure A
> > Si il y a "B" .........
> >
> > Et ceci n'importe quand dans le prog!
> > Merci de me donner si possible dans exemple ce prog pour mes questions
> >
> > Merci d'avance pour vos reponses !
> >
> > Jean-Michel
> >
> >
>
>
ng,
Merci beaucoup pour ta reponse !
Donc avec ce que tu me dit, la boucle qui est dans le Sub timer1.timer()
tourner en permanance pendant que le programme tourne ?
Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then Danger
EndIf ?
Ca veut dire que je ne vais jamais louper l'arriver de la lettre D pendant
tout le programme ?
Merci encore
Jean-Michel
"ng" <ng@babeuk.net> a écrit dans le message news:
#uKqxMfnDHA.1004@TK2MSFTNGP09.phx.gbl...
> Bonjour,
> Il suffirait de placer la boucle dans un timer :
>
> Soit comme ca :
>
> Au début du programme faire timer1.enabled=true
>
> Sub timer1_timer()
> timer1.enabledúlse
> do
> 'boucle
> DonneeEntrant=DonneeEntrant & COM1.input
> loop
> end sub
>
> ou définir un interval petit pour le timer
>
> Sub timer1_timer()
> DonneeEntrant=DonneeEntrant & COM1.input
> end sub
>
> Nicolas.
>
>
> "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
> message de news: OJWZVCfnDHA.3504@TK2MSFTNGP11.phx.gbl...
> > Bonjour,
> >
> > Je me pose deux trois petites question ...
> > Je me demande comment ne pas louper des données qui rentre dans le
> com1
> > Il faut faire une boucle qui en permanance fasse
> DonneeEntrant=DonneeEntrant
> > + COM1.input ?
> > Mais si on fait la boucle en permanence, comment on peut faire autre
chose
> > du programme ?
> >
> > En fait je voudrais surveiller le port COM1, que n'importe où dans le
> > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
prog
> > et que ca execute une procedure.
> > Si il y a "A" qui rentre ca execute la procedure A
> > Si il y a "B" .........
> >
> > Et ceci n'importe quand dans le prog!
> > Merci de me donner si possible dans exemple ce prog pour mes questions
> >
> > Merci d'avance pour vos reponses !
> >
> > Jean-Michel
> >
> >
>
>
ng,
Merci beaucoup pour ta reponse !
Donc avec ce que tu me dit, la boucle qui est dans le Sub timer1.timer()
tourner en permanance pendant que le programme tourne ?
Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then Danger
EndIf ?
Ca veut dire que je ne vais jamais louper l'arriver de la lettre D pendant
tout le programme ?
Merci encore
Jean-Michel
"ng" a écrit dans le message news:
#
> Bonjour,
> Il suffirait de placer la boucle dans un timer :
>
> Soit comme ca :
>
> Au début du programme faire timer1.enabled=true
>
> Sub timer1_timer()
> timer1.enabledúlse
> do
> 'boucle
> DonneeEntrant=DonneeEntrant & COM1.input
> loop
> end sub
>
> ou définir un interval petit pour le timer
>
> Sub timer1_timer()
> DonneeEntrant=DonneeEntrant & COM1.input
> end sub
>
> Nicolas.
>
>
> "Jean-Michel" a écrit dans le
> message de news:
> > Bonjour,
> >
> > Je me pose deux trois petites question ...
> > Je me demande comment ne pas louper des données qui rentre dans le
> com1
> > Il faut faire une boucle qui en permanance fasse
> DonneeEntrant=DonneeEntrant
> > + COM1.input ?
> > Mais si on fait la boucle en permanence, comment on peut faire autre
chose
> > du programme ?
> >
> > En fait je voudrais surveiller le port COM1, que n'importe où dans le
> > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
prog
> > et que ca execute une procedure.
> > Si il y a "A" qui rentre ca execute la procedure A
> > Si il y a "B" .........
> >
> > Et ceci n'importe quand dans le prog!
> > Merci de me donner si possible dans exemple ce prog pour mes questions
> >
> > Merci d'avance pour vos reponses !
> >
> > Jean-Michel
> >
> >
>
>
Bonjour,
Il suffirait de placer la boucle dans un timer :
Soit comme ca :
Au début du programme faire timer1.enabled=true
Sub timer1_timer()
timer1.enabledúlse
do
'boucle
DonneeEntrant=DonneeEntrant & COM1.input
loop
end sub
ou définir un interval petit pour le timer
Sub timer1_timer()
DonneeEntrant=DonneeEntrant & COM1.input
end sub
Nicolas.
"Jean-Michel" a écrit dans le
message de news:
> Bonjour,
>
> Je me pose deux trois petites question ...
> Je me demande comment ne pas louper des données qui rentre dans le port
com1
> Il faut faire une boucle qui en permanance fasse
DonneeEntrant=DonneeEntrant
> + COM1.input ?
> Mais si on fait la boucle en permanence, comment on peut faire autre
> du programme ?
>
> En fait je voudrais surveiller le port COM1, que n'importe où dans le
> programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
> et que ca execute une procedure.
> Si il y a "A" qui rentre ca execute la procedure A
> Si il y a "B" .........
>
> Et ceci n'importe quand dans le prog!
> Merci de me donner si possible dans exemple ce prog pour mes questions !
>
> Merci d'avance pour vos reponses !
>
> Jean-Michel
>
>
Bonjour,
Il suffirait de placer la boucle dans un timer :
Soit comme ca :
Au début du programme faire timer1.enabled=true
Sub timer1_timer()
timer1.enabledúlse
do
'boucle
DonneeEntrant=DonneeEntrant & COM1.input
loop
end sub
ou définir un interval petit pour le timer
Sub timer1_timer()
DonneeEntrant=DonneeEntrant & COM1.input
end sub
Nicolas.
"Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
message de news: OJWZVCfnDHA.3504@TK2MSFTNGP11.phx.gbl...
> Bonjour,
>
> Je me pose deux trois petites question ...
> Je me demande comment ne pas louper des données qui rentre dans le port
com1
> Il faut faire une boucle qui en permanance fasse
DonneeEntrant=DonneeEntrant
> + COM1.input ?
> Mais si on fait la boucle en permanence, comment on peut faire autre
> du programme ?
>
> En fait je voudrais surveiller le port COM1, que n'importe où dans le
> programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
> et que ca execute une procedure.
> Si il y a "A" qui rentre ca execute la procedure A
> Si il y a "B" .........
>
> Et ceci n'importe quand dans le prog!
> Merci de me donner si possible dans exemple ce prog pour mes questions !
>
> Merci d'avance pour vos reponses !
>
> Jean-Michel
>
>
Bonjour,
Il suffirait de placer la boucle dans un timer :
Soit comme ca :
Au début du programme faire timer1.enabled=true
Sub timer1_timer()
timer1.enabledúlse
do
'boucle
DonneeEntrant=DonneeEntrant & COM1.input
loop
end sub
ou définir un interval petit pour le timer
Sub timer1_timer()
DonneeEntrant=DonneeEntrant & COM1.input
end sub
Nicolas.
"Jean-Michel" a écrit dans le
message de news:
> Bonjour,
>
> Je me pose deux trois petites question ...
> Je me demande comment ne pas louper des données qui rentre dans le port
com1
> Il faut faire une boucle qui en permanance fasse
DonneeEntrant=DonneeEntrant
> + COM1.input ?
> Mais si on fait la boucle en permanence, comment on peut faire autre
> du programme ?
>
> En fait je voudrais surveiller le port COM1, que n'importe où dans le
> programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
> et que ca execute une procedure.
> Si il y a "A" qui rentre ca execute la procedure A
> Si il y a "B" .........
>
> Et ceci n'importe quand dans le prog!
> Merci de me donner si possible dans exemple ce prog pour mes questions !
>
> Merci d'avance pour vos reponses !
>
> Jean-Michel
>
>
Bonjour,
Il suffirait de placer la boucle dans un timer :
Soit comme ca :
Au début du programme faire timer1.enabled=true
Sub timer1_timer()
timer1.enabledúlse
do
'boucle
DonneeEntrant=DonneeEntrant & COM1.input
loop
end sub
ou définir un interval petit pour le timer
Sub timer1_timer()
DonneeEntrant=DonneeEntrant & COM1.input
end sub
Nicolas.
"Jean-Michel" a écrit dans le
message de news:
> Bonjour,
>
> Je me pose deux trois petites question ...
> Je me demande comment ne pas louper des données qui rentre dans le port
com1
> Il faut faire une boucle qui en permanance fasse
DonneeEntrant=DonneeEntrant
> + COM1.input ?
> Mais si on fait la boucle en permanence, comment on peut faire autre
> du programme ?
>
> En fait je voudrais surveiller le port COM1, que n'importe où dans le
> programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
> et que ca execute une procedure.
> Si il y a "A" qui rentre ca execute la procedure A
> Si il y a "B" .........
>
> Et ceci n'importe quand dans le prog!
> Merci de me donner si possible dans exemple ce prog pour mes questions !
>
> Merci d'avance pour vos reponses !
>
> Jean-Michel
>
>
Bonjour,
Il suffirait de placer la boucle dans un timer :
Soit comme ca :
Au début du programme faire timer1.enabled=true
Sub timer1_timer()
timer1.enabledúlse
do
'boucle
DonneeEntrant=DonneeEntrant & COM1.input
loop
end sub
ou définir un interval petit pour le timer
Sub timer1_timer()
DonneeEntrant=DonneeEntrant & COM1.input
end sub
Nicolas.
"Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
message de news: OJWZVCfnDHA.3504@TK2MSFTNGP11.phx.gbl...
> Bonjour,
>
> Je me pose deux trois petites question ...
> Je me demande comment ne pas louper des données qui rentre dans le port
com1
> Il faut faire une boucle qui en permanance fasse
DonneeEntrant=DonneeEntrant
> + COM1.input ?
> Mais si on fait la boucle en permanence, comment on peut faire autre
> du programme ?
>
> En fait je voudrais surveiller le port COM1, que n'importe où dans le
> programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
> et que ca execute une procedure.
> Si il y a "A" qui rentre ca execute la procedure A
> Si il y a "B" .........
>
> Et ceci n'importe quand dans le prog!
> Merci de me donner si possible dans exemple ce prog pour mes questions !
>
> Merci d'avance pour vos reponses !
>
> Jean-Michel
>
>
Bonjour,
Il suffirait de placer la boucle dans un timer :
Soit comme ca :
Au début du programme faire timer1.enabled=true
Sub timer1_timer()
timer1.enabledúlse
do
'boucle
DonneeEntrant=DonneeEntrant & COM1.input
loop
end sub
ou définir un interval petit pour le timer
Sub timer1_timer()
DonneeEntrant=DonneeEntrant & COM1.input
end sub
Nicolas.
"Jean-Michel" a écrit dans le
message de news:
> Bonjour,
>
> Je me pose deux trois petites question ...
> Je me demande comment ne pas louper des données qui rentre dans le port
com1
> Il faut faire une boucle qui en permanance fasse
DonneeEntrant=DonneeEntrant
> + COM1.input ?
> Mais si on fait la boucle en permanence, comment on peut faire autre
> du programme ?
>
> En fait je voudrais surveiller le port COM1, que n'importe où dans le
> programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le
> et que ca execute une procedure.
> Si il y a "A" qui rentre ca execute la procedure A
> Si il y a "B" .........
>
> Et ceci n'importe quand dans le prog!
> Merci de me donner si possible dans exemple ce prog pour mes questions !
>
> Merci d'avance pour vos reponses !
>
> Jean-Michel
>
>
Merci Cégé pour ta réponse !
Donc tu me conseille de vider le buffer toutes les 50ms, ok !
Je n'arrive pas a trouver la fonction qui permet de lire toutes les info
recu pendant ces 50ms.
Donc je n'arrive pas a lire ce que le buffer a retenu durant ces 50ms...
Et je voudrai savoir, apparement tu as trouver une solution qui permet de
pas verifier en permanence le port pour verifier si il y a pas de D, mais
plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
procedure.
Peux tu m'en parler ?
Merci beaucoup de ton aide !
Jean-Michel
"Cégé" a écrit dans le message news:
bnnvlv$4pj$
> Bonjour
>
> Un timer t'évite une boucle.
> Toujours dangereuse dans un système comme Windows.
> Surtout que les accès au hard (COM1) ont une forte priorité.
>
> Je trouve que la solution d'un timer court (genre 50mS) qui purge
> régulièrement le buffer RS232 est la meilleure.
> Sans boucle à l'intérieur.
> Si le timer est trop court, il va ralentir la machine.
>
> Une boucle peut être agrémentée d'un "doevent" mais on prend le risque
> "ré-entrance" (l'horreur avec un port com).
>
> La meilleure solution est d'utiliser les évènements du port com.
> déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> plusieurs caractères par exemple (nb caractères programmables). Très
> pratique pour détecter l'arrivée d'un caractère de synchronisation
> "D" dans ton exemple). Pas d'encombrement des ressources -de
ralentissement
> machine- quand la ligne RS232 ne "parle" pas.
> N'oublie pas les contrôles de flux (matériels et logiciels). Qui peuvent
> être très puissants et qui permettent des communications robustes. Voir
> l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi tous
les
> cas sont traités dans ce code.
>
> -- Christian
>
> "Jean-Michel" a écrit dans le
> message news:
> > ng,
> >
> > Merci beaucoup pour ta reponse !
> >
> > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> va
> > tourner en permanance pendant que le programme tourne ?
> > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
> > EndIf ?
> > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
pendant
> > tout le programme ?
> >
> > Merci encore
> >
> > Jean-Michel
> >
> >
> >
> >
> > "ng" a écrit dans le message news:
> > #
> > > Bonjour,
> > > Il suffirait de placer la boucle dans un timer :
> > >
> > > Soit comme ca :
> > >
> > > Au début du programme faire timer1.enabled=true
> > >
> > > Sub timer1_timer()
> > > timer1.enabledúlse
> > > do
> > > 'boucle
> > > DonneeEntrant=DonneeEntrant & COM1.input
> > > loop
> > > end sub
> > >
> > > ou définir un interval petit pour le timer
> > >
> > > Sub timer1_timer()
> > > DonneeEntrant=DonneeEntrant & COM1.input
> > > end sub
> > >
> > > Nicolas.
> > >
> > >
> > > "Jean-Michel" a écrit dans
> > > message de news:
> > > > Bonjour,
> > > >
> > > > Je me pose deux trois petites question ...
> > > > Je me demande comment ne pas louper des données qui rentre dans le
> port
> > > com1
> > > > Il faut faire une boucle qui en permanance fasse
> > > DonneeEntrant=DonneeEntrant
> > > > + COM1.input ?
> > > > Mais si on fait la boucle en permanence, comment on peut faire
> > chose
> > > > du programme ?
> > > >
> > > > En fait je voudrais surveiller le port COM1, que n'importe où dans
le
> > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe
le
> > prog
> > > > et que ca execute une procedure.
> > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > Si il y a "B" .........
> > > >
> > > > Et ceci n'importe quand dans le prog!
> > > > Merci de me donner si possible dans exemple ce prog pour mes
questions
> !
> > > >
> > > > Merci d'avance pour vos reponses !
> > > >
> > > > Jean-Michel
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Merci Cégé pour ta réponse !
Donc tu me conseille de vider le buffer toutes les 50ms, ok !
Je n'arrive pas a trouver la fonction qui permet de lire toutes les info
recu pendant ces 50ms.
Donc je n'arrive pas a lire ce que le buffer a retenu durant ces 50ms...
Et je voudrai savoir, apparement tu as trouver une solution qui permet de
pas verifier en permanence le port pour verifier si il y a pas de D, mais
plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
procedure.
Peux tu m'en parler ?
Merci beaucoup de ton aide !
Jean-Michel
"Cégé" <personne@nullePart.fr> a écrit dans le message news:
bnnvlv$4pj$1@s1.read.news.oleane.net...
> Bonjour
>
> Un timer t'évite une boucle.
> Toujours dangereuse dans un système comme Windows.
> Surtout que les accès au hard (COM1) ont une forte priorité.
>
> Je trouve que la solution d'un timer court (genre 50mS) qui purge
> régulièrement le buffer RS232 est la meilleure.
> Sans boucle à l'intérieur.
> Si le timer est trop court, il va ralentir la machine.
>
> Une boucle peut être agrémentée d'un "doevent" mais on prend le risque
> "ré-entrance" (l'horreur avec un port com).
>
> La meilleure solution est d'utiliser les évènements du port com.
> déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> plusieurs caractères par exemple (nb caractères programmables). Très
> pratique pour détecter l'arrivée d'un caractère de synchronisation
> "D" dans ton exemple). Pas d'encombrement des ressources -de
ralentissement
> machine- quand la ligne RS232 ne "parle" pas.
> N'oublie pas les contrôles de flux (matériels et logiciels). Qui peuvent
> être très puissants et qui permettent des communications robustes. Voir
> l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi tous
les
> cas sont traités dans ce code.
>
> -- Christian
>
> "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
> message news: Of8lpffnDHA.2012@TK2MSFTNGP12.phx.gbl...
> > ng,
> >
> > Merci beaucoup pour ta reponse !
> >
> > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> va
> > tourner en permanance pendant que le programme tourne ?
> > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
> > EndIf ?
> > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
pendant
> > tout le programme ?
> >
> > Merci encore
> >
> > Jean-Michel
> >
> >
> >
> >
> > "ng" <ng@babeuk.net> a écrit dans le message news:
> > #uKqxMfnDHA.1004@TK2MSFTNGP09.phx.gbl...
> > > Bonjour,
> > > Il suffirait de placer la boucle dans un timer :
> > >
> > > Soit comme ca :
> > >
> > > Au début du programme faire timer1.enabled=true
> > >
> > > Sub timer1_timer()
> > > timer1.enabledúlse
> > > do
> > > 'boucle
> > > DonneeEntrant=DonneeEntrant & COM1.input
> > > loop
> > > end sub
> > >
> > > ou définir un interval petit pour le timer
> > >
> > > Sub timer1_timer()
> > > DonneeEntrant=DonneeEntrant & COM1.input
> > > end sub
> > >
> > > Nicolas.
> > >
> > >
> > > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans
> > > message de news: OJWZVCfnDHA.3504@TK2MSFTNGP11.phx.gbl...
> > > > Bonjour,
> > > >
> > > > Je me pose deux trois petites question ...
> > > > Je me demande comment ne pas louper des données qui rentre dans le
> port
> > > com1
> > > > Il faut faire une boucle qui en permanance fasse
> > > DonneeEntrant=DonneeEntrant
> > > > + COM1.input ?
> > > > Mais si on fait la boucle en permanence, comment on peut faire
> > chose
> > > > du programme ?
> > > >
> > > > En fait je voudrais surveiller le port COM1, que n'importe où dans
le
> > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe
le
> > prog
> > > > et que ca execute une procedure.
> > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > Si il y a "B" .........
> > > >
> > > > Et ceci n'importe quand dans le prog!
> > > > Merci de me donner si possible dans exemple ce prog pour mes
questions
> !
> > > >
> > > > Merci d'avance pour vos reponses !
> > > >
> > > > Jean-Michel
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Merci Cégé pour ta réponse !
Donc tu me conseille de vider le buffer toutes les 50ms, ok !
Je n'arrive pas a trouver la fonction qui permet de lire toutes les info
recu pendant ces 50ms.
Donc je n'arrive pas a lire ce que le buffer a retenu durant ces 50ms...
Et je voudrai savoir, apparement tu as trouver une solution qui permet de
pas verifier en permanence le port pour verifier si il y a pas de D, mais
plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
procedure.
Peux tu m'en parler ?
Merci beaucoup de ton aide !
Jean-Michel
"Cégé" a écrit dans le message news:
bnnvlv$4pj$
> Bonjour
>
> Un timer t'évite une boucle.
> Toujours dangereuse dans un système comme Windows.
> Surtout que les accès au hard (COM1) ont une forte priorité.
>
> Je trouve que la solution d'un timer court (genre 50mS) qui purge
> régulièrement le buffer RS232 est la meilleure.
> Sans boucle à l'intérieur.
> Si le timer est trop court, il va ralentir la machine.
>
> Une boucle peut être agrémentée d'un "doevent" mais on prend le risque
> "ré-entrance" (l'horreur avec un port com).
>
> La meilleure solution est d'utiliser les évènements du port com.
> déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> plusieurs caractères par exemple (nb caractères programmables). Très
> pratique pour détecter l'arrivée d'un caractère de synchronisation
> "D" dans ton exemple). Pas d'encombrement des ressources -de
ralentissement
> machine- quand la ligne RS232 ne "parle" pas.
> N'oublie pas les contrôles de flux (matériels et logiciels). Qui peuvent
> être très puissants et qui permettent des communications robustes. Voir
> l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi tous
les
> cas sont traités dans ce code.
>
> -- Christian
>
> "Jean-Michel" a écrit dans le
> message news:
> > ng,
> >
> > Merci beaucoup pour ta reponse !
> >
> > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> va
> > tourner en permanance pendant que le programme tourne ?
> > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
> > EndIf ?
> > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
pendant
> > tout le programme ?
> >
> > Merci encore
> >
> > Jean-Michel
> >
> >
> >
> >
> > "ng" a écrit dans le message news:
> > #
> > > Bonjour,
> > > Il suffirait de placer la boucle dans un timer :
> > >
> > > Soit comme ca :
> > >
> > > Au début du programme faire timer1.enabled=true
> > >
> > > Sub timer1_timer()
> > > timer1.enabledúlse
> > > do
> > > 'boucle
> > > DonneeEntrant=DonneeEntrant & COM1.input
> > > loop
> > > end sub
> > >
> > > ou définir un interval petit pour le timer
> > >
> > > Sub timer1_timer()
> > > DonneeEntrant=DonneeEntrant & COM1.input
> > > end sub
> > >
> > > Nicolas.
> > >
> > >
> > > "Jean-Michel" a écrit dans
> > > message de news:
> > > > Bonjour,
> > > >
> > > > Je me pose deux trois petites question ...
> > > > Je me demande comment ne pas louper des données qui rentre dans le
> port
> > > com1
> > > > Il faut faire une boucle qui en permanance fasse
> > > DonneeEntrant=DonneeEntrant
> > > > + COM1.input ?
> > > > Mais si on fait la boucle en permanence, comment on peut faire
> > chose
> > > > du programme ?
> > > >
> > > > En fait je voudrais surveiller le port COM1, que n'importe où dans
le
> > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe
le
> > prog
> > > > et que ca execute une procedure.
> > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > Si il y a "B" .........
> > > >
> > > > Et ceci n'importe quand dans le prog!
> > > > Merci de me donner si possible dans exemple ce prog pour mes
questions
> !
> > > >
> > > > Merci d'avance pour vos reponses !
> > > >
> > > > Jean-Michel
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Bonjour
Un timer t'évite une boucle.
Toujours dangereuse dans un système comme Windows.
Surtout que les accès au hard (COM1) ont une forte priorité.
Je trouve que la solution d'un timer court (genre 50mS) qui purge
régulièrement le buffer RS232 est la meilleure.
Sans boucle à l'intérieur.
Si le timer est trop court, il va ralentir la machine.
Une boucle peut être agrémentée d'un "doevent" mais on prend le risque de
"ré-entrance" (l'horreur avec un port com).
La meilleure solution est d'utiliser les évènements du port com. Celui-ci
déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
plusieurs caractères par exemple (nb caractères programmables). Très
pratique pour détecter l'arrivée d'un caractère de synchronisation (comme
"D" dans ton exemple). Pas d'encombrement des ressources -de
machine- quand la ligne RS232 ne "parle" pas.
N'oublie pas les contrôles de flux (matériels et logiciels). Qui peuvent
être très puissants et qui permettent des communications robustes. Voir
l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi tous
cas sont traités dans ce code.
-- Christian
"Jean-Michel" a écrit dans le
message news:
> ng,
>
> Merci beaucoup pour ta reponse !
>
> Donc avec ce que tu me dit, la boucle qui est dans le Sub timer1.timer()
va
> tourner en permanance pendant que le programme tourne ?
> Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then Danger
> EndIf ?
> Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> tout le programme ?
>
> Merci encore
>
> Jean-Michel
>
>
>
>
> "ng" a écrit dans le message news:
> #
> > Bonjour,
> > Il suffirait de placer la boucle dans un timer :
> >
> > Soit comme ca :
> >
> > Au début du programme faire timer1.enabled=true
> >
> > Sub timer1_timer()
> > timer1.enabledúlse
> > do
> > 'boucle
> > DonneeEntrant=DonneeEntrant & COM1.input
> > loop
> > end sub
> >
> > ou définir un interval petit pour le timer
> >
> > Sub timer1_timer()
> > DonneeEntrant=DonneeEntrant & COM1.input
> > end sub
> >
> > Nicolas.
> >
> >
> > "Jean-Michel" a écrit dans le
> > message de news:
> > > Bonjour,
> > >
> > > Je me pose deux trois petites question ...
> > > Je me demande comment ne pas louper des données qui rentre dans le
port
> > com1
> > > Il faut faire une boucle qui en permanance fasse
> > DonneeEntrant=DonneeEntrant
> > > + COM1.input ?
> > > Mais si on fait la boucle en permanence, comment on peut faire autre
> chose
> > > du programme ?
> > >
> > > En fait je voudrais surveiller le port COM1, que n'importe où dans
> > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe
> prog
> > > et que ca execute une procedure.
> > > Si il y a "A" qui rentre ca execute la procedure A
> > > Si il y a "B" .........
> > >
> > > Et ceci n'importe quand dans le prog!
> > > Merci de me donner si possible dans exemple ce prog pour mes
!
> > >
> > > Merci d'avance pour vos reponses !
> > >
> > > Jean-Michel
> > >
> > >
> >
> >
>
>
Bonjour
Un timer t'évite une boucle.
Toujours dangereuse dans un système comme Windows.
Surtout que les accès au hard (COM1) ont une forte priorité.
Je trouve que la solution d'un timer court (genre 50mS) qui purge
régulièrement le buffer RS232 est la meilleure.
Sans boucle à l'intérieur.
Si le timer est trop court, il va ralentir la machine.
Une boucle peut être agrémentée d'un "doevent" mais on prend le risque de
"ré-entrance" (l'horreur avec un port com).
La meilleure solution est d'utiliser les évènements du port com. Celui-ci
déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
plusieurs caractères par exemple (nb caractères programmables). Très
pratique pour détecter l'arrivée d'un caractère de synchronisation (comme
"D" dans ton exemple). Pas d'encombrement des ressources -de
machine- quand la ligne RS232 ne "parle" pas.
N'oublie pas les contrôles de flux (matériels et logiciels). Qui peuvent
être très puissants et qui permettent des communications robustes. Voir
l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi tous
cas sont traités dans ce code.
-- Christian
"Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
message news: Of8lpffnDHA.2012@TK2MSFTNGP12.phx.gbl...
> ng,
>
> Merci beaucoup pour ta reponse !
>
> Donc avec ce que tu me dit, la boucle qui est dans le Sub timer1.timer()
va
> tourner en permanance pendant que le programme tourne ?
> Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then Danger
> EndIf ?
> Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> tout le programme ?
>
> Merci encore
>
> Jean-Michel
>
>
>
>
> "ng" <ng@babeuk.net> a écrit dans le message news:
> #uKqxMfnDHA.1004@TK2MSFTNGP09.phx.gbl...
> > Bonjour,
> > Il suffirait de placer la boucle dans un timer :
> >
> > Soit comme ca :
> >
> > Au début du programme faire timer1.enabled=true
> >
> > Sub timer1_timer()
> > timer1.enabledúlse
> > do
> > 'boucle
> > DonneeEntrant=DonneeEntrant & COM1.input
> > loop
> > end sub
> >
> > ou définir un interval petit pour le timer
> >
> > Sub timer1_timer()
> > DonneeEntrant=DonneeEntrant & COM1.input
> > end sub
> >
> > Nicolas.
> >
> >
> > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
> > message de news: OJWZVCfnDHA.3504@TK2MSFTNGP11.phx.gbl...
> > > Bonjour,
> > >
> > > Je me pose deux trois petites question ...
> > > Je me demande comment ne pas louper des données qui rentre dans le
port
> > com1
> > > Il faut faire une boucle qui en permanance fasse
> > DonneeEntrant=DonneeEntrant
> > > + COM1.input ?
> > > Mais si on fait la boucle en permanence, comment on peut faire autre
> chose
> > > du programme ?
> > >
> > > En fait je voudrais surveiller le port COM1, que n'importe où dans
> > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe
> prog
> > > et que ca execute une procedure.
> > > Si il y a "A" qui rentre ca execute la procedure A
> > > Si il y a "B" .........
> > >
> > > Et ceci n'importe quand dans le prog!
> > > Merci de me donner si possible dans exemple ce prog pour mes
!
> > >
> > > Merci d'avance pour vos reponses !
> > >
> > > Jean-Michel
> > >
> > >
> >
> >
>
>
Bonjour
Un timer t'évite une boucle.
Toujours dangereuse dans un système comme Windows.
Surtout que les accès au hard (COM1) ont une forte priorité.
Je trouve que la solution d'un timer court (genre 50mS) qui purge
régulièrement le buffer RS232 est la meilleure.
Sans boucle à l'intérieur.
Si le timer est trop court, il va ralentir la machine.
Une boucle peut être agrémentée d'un "doevent" mais on prend le risque de
"ré-entrance" (l'horreur avec un port com).
La meilleure solution est d'utiliser les évènements du port com. Celui-ci
déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
plusieurs caractères par exemple (nb caractères programmables). Très
pratique pour détecter l'arrivée d'un caractère de synchronisation (comme
"D" dans ton exemple). Pas d'encombrement des ressources -de
machine- quand la ligne RS232 ne "parle" pas.
N'oublie pas les contrôles de flux (matériels et logiciels). Qui peuvent
être très puissants et qui permettent des communications robustes. Voir
l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi tous
cas sont traités dans ce code.
-- Christian
"Jean-Michel" a écrit dans le
message news:
> ng,
>
> Merci beaucoup pour ta reponse !
>
> Donc avec ce que tu me dit, la boucle qui est dans le Sub timer1.timer()
va
> tourner en permanance pendant que le programme tourne ?
> Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then Danger
> EndIf ?
> Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> tout le programme ?
>
> Merci encore
>
> Jean-Michel
>
>
>
>
> "ng" a écrit dans le message news:
> #
> > Bonjour,
> > Il suffirait de placer la boucle dans un timer :
> >
> > Soit comme ca :
> >
> > Au début du programme faire timer1.enabled=true
> >
> > Sub timer1_timer()
> > timer1.enabledúlse
> > do
> > 'boucle
> > DonneeEntrant=DonneeEntrant & COM1.input
> > loop
> > end sub
> >
> > ou définir un interval petit pour le timer
> >
> > Sub timer1_timer()
> > DonneeEntrant=DonneeEntrant & COM1.input
> > end sub
> >
> > Nicolas.
> >
> >
> > "Jean-Michel" a écrit dans le
> > message de news:
> > > Bonjour,
> > >
> > > Je me pose deux trois petites question ...
> > > Je me demande comment ne pas louper des données qui rentre dans le
port
> > com1
> > > Il faut faire une boucle qui en permanance fasse
> > DonneeEntrant=DonneeEntrant
> > > + COM1.input ?
> > > Mais si on fait la boucle en permanence, comment on peut faire autre
> chose
> > > du programme ?
> > >
> > > En fait je voudrais surveiller le port COM1, que n'importe où dans
> > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe
> prog
> > > et que ca execute une procedure.
> > > Si il y a "A" qui rentre ca execute la procedure A
> > > Si il y a "B" .........
> > >
> > > Et ceci n'importe quand dans le prog!
> > > Merci de me donner si possible dans exemple ce prog pour mes
!
> > >
> > > Merci d'avance pour vos reponses !
> > >
> > > Jean-Michel
> > >
> > >
> >
> >
>
>
Si tu utilise le contrôle MSCOMM
(Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
Double clic sur le bouton correspondant (dans mon cas représente un
téléphone).
Private Sub MSComm1_OnComm()
end sub
Cet évènement sera appelé *par le port de communication* en fontion de
propriétés fixées (par exemple à la réception de chaque caractère).
Dans cette procédure, on teste une propriété du port com pour connaitre la
nature de l'évènement (.CommEvent de mémoire). Par exemple réception (ca
peut être des erreurs, la réception de signaux de controle, l'émission de
caractère, etc.).
On peut également lire le buffer de réception du port com (.input) afin de
le tester ou de le cumuler avec le buffer de ton application.
Je ne me souviens pas du détail. Le controle est documenté (un peu confus
mais c'est du microsoft : un bit = 2 tonnes de documentation :).
Faire F1 dans la forme avec le ComPort (bouton "téléphone") sélectionné.
Suivre les exemples.
Attention à bien assimiler les propriétés de ce composant. Ce sont elles
vont déterminer QUAND OnComm() est appelée.
Ca marche très bien.
-- Christian
"Jean-Michel" a écrit dans le
message news:
> Merci Cégé pour ta réponse !
>
> Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> Je n'arrive pas a trouver la fonction qui permet de lire toutes les info
> recu pendant ces 50ms.
> Donc je n'arrive pas a lire ce que le buffer a retenu durant ces 50ms...
>
> Et je voudrai savoir, apparement tu as trouver une solution qui permet
ne
> pas verifier en permanence le port pour verifier si il y a pas de D,
> plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> procedure.
> Peux tu m'en parler ?
>
> Merci beaucoup de ton aide !
>
> Jean-Michel
>
> "Cégé" a écrit dans le message news:
> bnnvlv$4pj$
> > Bonjour
> >
> > Un timer t'évite une boucle.
> > Toujours dangereuse dans un système comme Windows.
> > Surtout que les accès au hard (COM1) ont une forte priorité.
> >
> > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > régulièrement le buffer RS232 est la meilleure.
> > Sans boucle à l'intérieur.
> > Si le timer est trop court, il va ralentir la machine.
> >
> > Une boucle peut être agrémentée d'un "doevent" mais on prend le risque
de
> > "ré-entrance" (l'horreur avec un port com).
> >
> > La meilleure solution est d'utiliser les évènements du port com.
Celui-ci
> > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> > plusieurs caractères par exemple (nb caractères programmables). Très
> > pratique pour détecter l'arrivée d'un caractère de synchronisation
(comme
> > "D" dans ton exemple). Pas d'encombrement des ressources -de
> ralentissement
> > machine- quand la ligne RS232 ne "parle" pas.
> > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
> > être très puissants et qui permettent des communications robustes.
> > l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi
> les
> > cas sont traités dans ce code.
> >
> > -- Christian
> >
> > "Jean-Michel" a écrit dans le
> > message news:
> > > ng,
> > >
> > > Merci beaucoup pour ta reponse !
> > >
> > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
timer1.timer()
> > va
> > > tourner en permanance pendant que le programme tourne ?
> > > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
Danger
> > > EndIf ?
> > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> pendant
> > > tout le programme ?
> > >
> > > Merci encore
> > >
> > > Jean-Michel
> > >
> > >
> > >
> > >
> > > "ng" a écrit dans le message news:
> > > #
> > > > Bonjour,
> > > > Il suffirait de placer la boucle dans un timer :
> > > >
> > > > Soit comme ca :
> > > >
> > > > Au début du programme faire timer1.enabled=true
> > > >
> > > > Sub timer1_timer()
> > > > timer1.enabledúlse
> > > > do
> > > > 'boucle
> > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > loop
> > > > end sub
> > > >
> > > > ou définir un interval petit pour le timer
> > > >
> > > > Sub timer1_timer()
> > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > end sub
> > > >
> > > > Nicolas.
> > > >
> > > >
> > > > "Jean-Michel" a écrit dans
le
> > > > message de news:
> > > > > Bonjour,
> > > > >
> > > > > Je me pose deux trois petites question ...
> > > > > Je me demande comment ne pas louper des données qui rentre dans
> > port
> > > > com1
> > > > > Il faut faire une boucle qui en permanance fasse
> > > > DonneeEntrant=DonneeEntrant
> > > > > + COM1.input ?
> > > > > Mais si on fait la boucle en permanence, comment on peut faire
autre
> > > chose
> > > > > du programme ?
> > > > >
> > > > > En fait je voudrais surveiller le port COM1, que n'importe où
> le
> > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
> le
> > > prog
> > > > > et que ca execute une procedure.
> > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > Si il y a "B" .........
> > > > >
> > > > > Et ceci n'importe quand dans le prog!
> > > > > Merci de me donner si possible dans exemple ce prog pour mes
> questions
> > !
> > > > >
> > > > > Merci d'avance pour vos reponses !
> > > > >
> > > > > Jean-Michel
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Si tu utilise le contrôle MSCOMM
(Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
Double clic sur le bouton correspondant (dans mon cas représente un
téléphone).
Private Sub MSComm1_OnComm()
end sub
Cet évènement sera appelé *par le port de communication* en fontion de
propriétés fixées (par exemple à la réception de chaque caractère).
Dans cette procédure, on teste une propriété du port com pour connaitre la
nature de l'évènement (.CommEvent de mémoire). Par exemple réception (ca
peut être des erreurs, la réception de signaux de controle, l'émission de
caractère, etc.).
On peut également lire le buffer de réception du port com (.input) afin de
le tester ou de le cumuler avec le buffer de ton application.
Je ne me souviens pas du détail. Le controle est documenté (un peu confus
mais c'est du microsoft : un bit = 2 tonnes de documentation :).
Faire F1 dans la forme avec le ComPort (bouton "téléphone") sélectionné.
Suivre les exemples.
Attention à bien assimiler les propriétés de ce composant. Ce sont elles
vont déterminer QUAND OnComm() est appelée.
Ca marche très bien.
-- Christian
"Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
message news: esGyw2fnDHA.3316@tk2msftngp13.phx.gbl...
> Merci Cégé pour ta réponse !
>
> Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> Je n'arrive pas a trouver la fonction qui permet de lire toutes les info
> recu pendant ces 50ms.
> Donc je n'arrive pas a lire ce que le buffer a retenu durant ces 50ms...
>
> Et je voudrai savoir, apparement tu as trouver une solution qui permet
ne
> pas verifier en permanence le port pour verifier si il y a pas de D,
> plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> procedure.
> Peux tu m'en parler ?
>
> Merci beaucoup de ton aide !
>
> Jean-Michel
>
> "Cégé" <personne@nullePart.fr> a écrit dans le message news:
> bnnvlv$4pj$1@s1.read.news.oleane.net...
> > Bonjour
> >
> > Un timer t'évite une boucle.
> > Toujours dangereuse dans un système comme Windows.
> > Surtout que les accès au hard (COM1) ont une forte priorité.
> >
> > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > régulièrement le buffer RS232 est la meilleure.
> > Sans boucle à l'intérieur.
> > Si le timer est trop court, il va ralentir la machine.
> >
> > Une boucle peut être agrémentée d'un "doevent" mais on prend le risque
de
> > "ré-entrance" (l'horreur avec un port com).
> >
> > La meilleure solution est d'utiliser les évènements du port com.
Celui-ci
> > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> > plusieurs caractères par exemple (nb caractères programmables). Très
> > pratique pour détecter l'arrivée d'un caractère de synchronisation
(comme
> > "D" dans ton exemple). Pas d'encombrement des ressources -de
> ralentissement
> > machine- quand la ligne RS232 ne "parle" pas.
> > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
> > être très puissants et qui permettent des communications robustes.
> > l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi
> les
> > cas sont traités dans ce code.
> >
> > -- Christian
> >
> > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
> > message news: Of8lpffnDHA.2012@TK2MSFTNGP12.phx.gbl...
> > > ng,
> > >
> > > Merci beaucoup pour ta reponse !
> > >
> > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
timer1.timer()
> > va
> > > tourner en permanance pendant que le programme tourne ?
> > > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
Danger
> > > EndIf ?
> > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> pendant
> > > tout le programme ?
> > >
> > > Merci encore
> > >
> > > Jean-Michel
> > >
> > >
> > >
> > >
> > > "ng" <ng@babeuk.net> a écrit dans le message news:
> > > #uKqxMfnDHA.1004@TK2MSFTNGP09.phx.gbl...
> > > > Bonjour,
> > > > Il suffirait de placer la boucle dans un timer :
> > > >
> > > > Soit comme ca :
> > > >
> > > > Au début du programme faire timer1.enabled=true
> > > >
> > > > Sub timer1_timer()
> > > > timer1.enabledúlse
> > > > do
> > > > 'boucle
> > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > loop
> > > > end sub
> > > >
> > > > ou définir un interval petit pour le timer
> > > >
> > > > Sub timer1_timer()
> > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > end sub
> > > >
> > > > Nicolas.
> > > >
> > > >
> > > > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans
le
> > > > message de news: OJWZVCfnDHA.3504@TK2MSFTNGP11.phx.gbl...
> > > > > Bonjour,
> > > > >
> > > > > Je me pose deux trois petites question ...
> > > > > Je me demande comment ne pas louper des données qui rentre dans
> > port
> > > > com1
> > > > > Il faut faire une boucle qui en permanance fasse
> > > > DonneeEntrant=DonneeEntrant
> > > > > + COM1.input ?
> > > > > Mais si on fait la boucle en permanence, comment on peut faire
autre
> > > chose
> > > > > du programme ?
> > > > >
> > > > > En fait je voudrais surveiller le port COM1, que n'importe où
> le
> > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
> le
> > > prog
> > > > > et que ca execute une procedure.
> > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > Si il y a "B" .........
> > > > >
> > > > > Et ceci n'importe quand dans le prog!
> > > > > Merci de me donner si possible dans exemple ce prog pour mes
> questions
> > !
> > > > >
> > > > > Merci d'avance pour vos reponses !
> > > > >
> > > > > Jean-Michel
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Si tu utilise le contrôle MSCOMM
(Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
Double clic sur le bouton correspondant (dans mon cas représente un
téléphone).
Private Sub MSComm1_OnComm()
end sub
Cet évènement sera appelé *par le port de communication* en fontion de
propriétés fixées (par exemple à la réception de chaque caractère).
Dans cette procédure, on teste une propriété du port com pour connaitre la
nature de l'évènement (.CommEvent de mémoire). Par exemple réception (ca
peut être des erreurs, la réception de signaux de controle, l'émission de
caractère, etc.).
On peut également lire le buffer de réception du port com (.input) afin de
le tester ou de le cumuler avec le buffer de ton application.
Je ne me souviens pas du détail. Le controle est documenté (un peu confus
mais c'est du microsoft : un bit = 2 tonnes de documentation :).
Faire F1 dans la forme avec le ComPort (bouton "téléphone") sélectionné.
Suivre les exemples.
Attention à bien assimiler les propriétés de ce composant. Ce sont elles
vont déterminer QUAND OnComm() est appelée.
Ca marche très bien.
-- Christian
"Jean-Michel" a écrit dans le
message news:
> Merci Cégé pour ta réponse !
>
> Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> Je n'arrive pas a trouver la fonction qui permet de lire toutes les info
> recu pendant ces 50ms.
> Donc je n'arrive pas a lire ce que le buffer a retenu durant ces 50ms...
>
> Et je voudrai savoir, apparement tu as trouver une solution qui permet
ne
> pas verifier en permanence le port pour verifier si il y a pas de D,
> plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> procedure.
> Peux tu m'en parler ?
>
> Merci beaucoup de ton aide !
>
> Jean-Michel
>
> "Cégé" a écrit dans le message news:
> bnnvlv$4pj$
> > Bonjour
> >
> > Un timer t'évite une boucle.
> > Toujours dangereuse dans un système comme Windows.
> > Surtout que les accès au hard (COM1) ont une forte priorité.
> >
> > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > régulièrement le buffer RS232 est la meilleure.
> > Sans boucle à l'intérieur.
> > Si le timer est trop court, il va ralentir la machine.
> >
> > Une boucle peut être agrémentée d'un "doevent" mais on prend le risque
de
> > "ré-entrance" (l'horreur avec un port com).
> >
> > La meilleure solution est d'utiliser les évènements du port com.
Celui-ci
> > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> > plusieurs caractères par exemple (nb caractères programmables). Très
> > pratique pour détecter l'arrivée d'un caractère de synchronisation
(comme
> > "D" dans ton exemple). Pas d'encombrement des ressources -de
> ralentissement
> > machine- quand la ligne RS232 ne "parle" pas.
> > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
> > être très puissants et qui permettent des communications robustes.
> > l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi
> les
> > cas sont traités dans ce code.
> >
> > -- Christian
> >
> > "Jean-Michel" a écrit dans le
> > message news:
> > > ng,
> > >
> > > Merci beaucoup pour ta reponse !
> > >
> > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
timer1.timer()
> > va
> > > tourner en permanance pendant que le programme tourne ?
> > > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
Danger
> > > EndIf ?
> > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> pendant
> > > tout le programme ?
> > >
> > > Merci encore
> > >
> > > Jean-Michel
> > >
> > >
> > >
> > >
> > > "ng" a écrit dans le message news:
> > > #
> > > > Bonjour,
> > > > Il suffirait de placer la boucle dans un timer :
> > > >
> > > > Soit comme ca :
> > > >
> > > > Au début du programme faire timer1.enabled=true
> > > >
> > > > Sub timer1_timer()
> > > > timer1.enabledúlse
> > > > do
> > > > 'boucle
> > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > loop
> > > > end sub
> > > >
> > > > ou définir un interval petit pour le timer
> > > >
> > > > Sub timer1_timer()
> > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > end sub
> > > >
> > > > Nicolas.
> > > >
> > > >
> > > > "Jean-Michel" a écrit dans
le
> > > > message de news:
> > > > > Bonjour,
> > > > >
> > > > > Je me pose deux trois petites question ...
> > > > > Je me demande comment ne pas louper des données qui rentre dans
> > port
> > > > com1
> > > > > Il faut faire une boucle qui en permanance fasse
> > > > DonneeEntrant=DonneeEntrant
> > > > > + COM1.input ?
> > > > > Mais si on fait la boucle en permanence, comment on peut faire
autre
> > > chose
> > > > > du programme ?
> > > > >
> > > > > En fait je voudrais surveiller le port COM1, que n'importe où
> le
> > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
> le
> > > prog
> > > > > et que ca execute une procedure.
> > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > Si il y a "B" .........
> > > > >
> > > > > Et ceci n'importe quand dans le prog!
> > > > > Merci de me donner si possible dans exemple ce prog pour mes
> questions
> > !
> > > > >
> > > > > Merci d'avance pour vos reponses !
> > > > >
> > > > > Jean-Michel
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Merci encore pour ta reponse Cégé,
Donc avec ta methode, on a plus besoin de 'timer' ?
Et donc tu me dit que le OnComm se lance quand il y qqchose qui arrive
le port COM ?
Et c'est ensuite dans la procedure qu'on essaye de detecter le type de
donnée, et le type de donnée est dans la variable COM1.CommEvent ?
Et on peut lire le buffer sur .input ?
Ou sont les propriété a regler pour dire QUAND la procedure OnComm se met
route ?
Merci beaucoup
Jean-Michel
"Cégé" a écrit dans le message news:
bno2mc$6j8$
> Si tu utilise le contrôle MSCOMM
> (Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
> Double clic sur le bouton correspondant (dans mon cas représente un
> téléphone).
>
> Private Sub MSComm1_OnComm()
> end sub
>
> Cet évènement sera appelé *par le port de communication* en fontion de
> propriétés fixées (par exemple à la réception de chaque caractère).
> Dans cette procédure, on teste une propriété du port com pour connaitre
> nature de l'évènement (.CommEvent de mémoire). Par exemple réception (ca
> peut être des erreurs, la réception de signaux de controle, l'émission
> caractère, etc.).
> On peut également lire le buffer de réception du port com (.input) afin
> le tester ou de le cumuler avec le buffer de ton application.
>
> Je ne me souviens pas du détail. Le controle est documenté (un peu
> mais c'est du microsoft : un bit = 2 tonnes de documentation :).
> Faire F1 dans la forme avec le ComPort (bouton "téléphone") sélectionné.
> Suivre les exemples.
>
> Attention à bien assimiler les propriétés de ce composant. Ce sont elles
qui
> vont déterminer QUAND OnComm() est appelée.
>
> Ca marche très bien.
>
> -- Christian
>
>
> "Jean-Michel" a écrit dans le
> message news:
> > Merci Cégé pour ta réponse !
> >
> > Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> > Je n'arrive pas a trouver la fonction qui permet de lire toutes les
> > recu pendant ces 50ms.
> > Donc je n'arrive pas a lire ce que le buffer a retenu durant ces
> >
> > Et je voudrai savoir, apparement tu as trouver une solution qui permet
de
> ne
> > pas verifier en permanence le port pour verifier si il y a pas de D,
mais
> > plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> > procedure.
> > Peux tu m'en parler ?
> >
> > Merci beaucoup de ton aide !
> >
> > Jean-Michel
> >
> > "Cégé" a écrit dans le message news:
> > bnnvlv$4pj$
> > > Bonjour
> > >
> > > Un timer t'évite une boucle.
> > > Toujours dangereuse dans un système comme Windows.
> > > Surtout que les accès au hard (COM1) ont une forte priorité.
> > >
> > > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > > régulièrement le buffer RS232 est la meilleure.
> > > Sans boucle à l'intérieur.
> > > Si le timer est trop court, il va ralentir la machine.
> > >
> > > Une boucle peut être agrémentée d'un "doevent" mais on prend le
> de
> > > "ré-entrance" (l'horreur avec un port com).
> > >
> > > La meilleure solution est d'utiliser les évènements du port com.
> Celui-ci
> > > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> > > plusieurs caractères par exemple (nb caractères programmables). Très
> > > pratique pour détecter l'arrivée d'un caractère de synchronisation
> (comme
> > > "D" dans ton exemple). Pas d'encombrement des ressources -de
> > ralentissement
> > > machine- quand la ligne RS232 ne "parle" pas.
> > > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
peuvent
> > > être très puissants et qui permettent des communications robustes.
Voir
> > > l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi
tous
> > les
> > > cas sont traités dans ce code.
> > >
> > > -- Christian
> > >
> > > "Jean-Michel" a écrit dans
> > > message news:
> > > > ng,
> > > >
> > > > Merci beaucoup pour ta reponse !
> > > >
> > > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> timer1.timer()
> > > va
> > > > tourner en permanance pendant que le programme tourne ?
> > > > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
> Danger
> > > > EndIf ?
> > > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> > pendant
> > > > tout le programme ?
> > > >
> > > > Merci encore
> > > >
> > > > Jean-Michel
> > > >
> > > >
> > > >
> > > >
> > > > "ng" a écrit dans le message news:
> > > > #
> > > > > Bonjour,
> > > > > Il suffirait de placer la boucle dans un timer :
> > > > >
> > > > > Soit comme ca :
> > > > >
> > > > > Au début du programme faire timer1.enabled=true
> > > > >
> > > > > Sub timer1_timer()
> > > > > timer1.enabledúlse
> > > > > do
> > > > > 'boucle
> > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > loop
> > > > > end sub
> > > > >
> > > > > ou définir un interval petit pour le timer
> > > > >
> > > > > Sub timer1_timer()
> > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > end sub
> > > > >
> > > > > Nicolas.
> > > > >
> > > > >
> > > > > "Jean-Michel" a écrit
> le
> > > > > message de news:
> > > > > > Bonjour,
> > > > > >
> > > > > > Je me pose deux trois petites question ...
> > > > > > Je me demande comment ne pas louper des données qui rentre
le
> > > port
> > > > > com1
> > > > > > Il faut faire une boucle qui en permanance fasse
> > > > > DonneeEntrant=DonneeEntrant
> > > > > > + COM1.input ?
> > > > > > Mais si on fait la boucle en permanence, comment on peut faire
> autre
> > > > chose
> > > > > > du programme ?
> > > > > >
> > > > > > En fait je voudrais surveiller le port COM1, que n'importe où
dans
> > le
> > > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
coupe
> > le
> > > > prog
> > > > > > et que ca execute une procedure.
> > > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > > Si il y a "B" .........
> > > > > >
> > > > > > Et ceci n'importe quand dans le prog!
> > > > > > Merci de me donner si possible dans exemple ce prog pour mes
> > questions
> > > !
> > > > > >
> > > > > > Merci d'avance pour vos reponses !
> > > > > >
> > > > > > Jean-Michel
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Merci encore pour ta reponse Cégé,
Donc avec ta methode, on a plus besoin de 'timer' ?
Et donc tu me dit que le OnComm se lance quand il y qqchose qui arrive
le port COM ?
Et c'est ensuite dans la procedure qu'on essaye de detecter le type de
donnée, et le type de donnée est dans la variable COM1.CommEvent ?
Et on peut lire le buffer sur .input ?
Ou sont les propriété a regler pour dire QUAND la procedure OnComm se met
route ?
Merci beaucoup
Jean-Michel
"Cégé" <personne@nullePart.fr> a écrit dans le message news:
bno2mc$6j8$1@s1.read.news.oleane.net...
> Si tu utilise le contrôle MSCOMM
> (Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
> Double clic sur le bouton correspondant (dans mon cas représente un
> téléphone).
>
> Private Sub MSComm1_OnComm()
> end sub
>
> Cet évènement sera appelé *par le port de communication* en fontion de
> propriétés fixées (par exemple à la réception de chaque caractère).
> Dans cette procédure, on teste une propriété du port com pour connaitre
> nature de l'évènement (.CommEvent de mémoire). Par exemple réception (ca
> peut être des erreurs, la réception de signaux de controle, l'émission
> caractère, etc.).
> On peut également lire le buffer de réception du port com (.input) afin
> le tester ou de le cumuler avec le buffer de ton application.
>
> Je ne me souviens pas du détail. Le controle est documenté (un peu
> mais c'est du microsoft : un bit = 2 tonnes de documentation :).
> Faire F1 dans la forme avec le ComPort (bouton "téléphone") sélectionné.
> Suivre les exemples.
>
> Attention à bien assimiler les propriétés de ce composant. Ce sont elles
qui
> vont déterminer QUAND OnComm() est appelée.
>
> Ca marche très bien.
>
> -- Christian
>
>
> "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
> message news: esGyw2fnDHA.3316@tk2msftngp13.phx.gbl...
> > Merci Cégé pour ta réponse !
> >
> > Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> > Je n'arrive pas a trouver la fonction qui permet de lire toutes les
> > recu pendant ces 50ms.
> > Donc je n'arrive pas a lire ce que le buffer a retenu durant ces
> >
> > Et je voudrai savoir, apparement tu as trouver une solution qui permet
de
> ne
> > pas verifier en permanence le port pour verifier si il y a pas de D,
mais
> > plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> > procedure.
> > Peux tu m'en parler ?
> >
> > Merci beaucoup de ton aide !
> >
> > Jean-Michel
> >
> > "Cégé" <personne@nullePart.fr> a écrit dans le message news:
> > bnnvlv$4pj$1@s1.read.news.oleane.net...
> > > Bonjour
> > >
> > > Un timer t'évite une boucle.
> > > Toujours dangereuse dans un système comme Windows.
> > > Surtout que les accès au hard (COM1) ont une forte priorité.
> > >
> > > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > > régulièrement le buffer RS232 est la meilleure.
> > > Sans boucle à l'intérieur.
> > > Si le timer est trop court, il va ralentir la machine.
> > >
> > > Une boucle peut être agrémentée d'un "doevent" mais on prend le
> de
> > > "ré-entrance" (l'horreur avec un port com).
> > >
> > > La meilleure solution est d'utiliser les évènements du port com.
> Celui-ci
> > > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> > > plusieurs caractères par exemple (nb caractères programmables). Très
> > > pratique pour détecter l'arrivée d'un caractère de synchronisation
> (comme
> > > "D" dans ton exemple). Pas d'encombrement des ressources -de
> > ralentissement
> > > machine- quand la ligne RS232 ne "parle" pas.
> > > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
peuvent
> > > être très puissants et qui permettent des communications robustes.
Voir
> > > l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi
tous
> > les
> > > cas sont traités dans ce code.
> > >
> > > -- Christian
> > >
> > > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans
> > > message news: Of8lpffnDHA.2012@TK2MSFTNGP12.phx.gbl...
> > > > ng,
> > > >
> > > > Merci beaucoup pour ta reponse !
> > > >
> > > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> timer1.timer()
> > > va
> > > > tourner en permanance pendant que le programme tourne ?
> > > > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
> Danger
> > > > EndIf ?
> > > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> > pendant
> > > > tout le programme ?
> > > >
> > > > Merci encore
> > > >
> > > > Jean-Michel
> > > >
> > > >
> > > >
> > > >
> > > > "ng" <ng@babeuk.net> a écrit dans le message news:
> > > > #uKqxMfnDHA.1004@TK2MSFTNGP09.phx.gbl...
> > > > > Bonjour,
> > > > > Il suffirait de placer la boucle dans un timer :
> > > > >
> > > > > Soit comme ca :
> > > > >
> > > > > Au début du programme faire timer1.enabled=true
> > > > >
> > > > > Sub timer1_timer()
> > > > > timer1.enabledúlse
> > > > > do
> > > > > 'boucle
> > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > loop
> > > > > end sub
> > > > >
> > > > > ou définir un interval petit pour le timer
> > > > >
> > > > > Sub timer1_timer()
> > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > end sub
> > > > >
> > > > > Nicolas.
> > > > >
> > > > >
> > > > > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit
> le
> > > > > message de news: OJWZVCfnDHA.3504@TK2MSFTNGP11.phx.gbl...
> > > > > > Bonjour,
> > > > > >
> > > > > > Je me pose deux trois petites question ...
> > > > > > Je me demande comment ne pas louper des données qui rentre
le
> > > port
> > > > > com1
> > > > > > Il faut faire une boucle qui en permanance fasse
> > > > > DonneeEntrant=DonneeEntrant
> > > > > > + COM1.input ?
> > > > > > Mais si on fait la boucle en permanence, comment on peut faire
> autre
> > > > chose
> > > > > > du programme ?
> > > > > >
> > > > > > En fait je voudrais surveiller le port COM1, que n'importe où
dans
> > le
> > > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
coupe
> > le
> > > > prog
> > > > > > et que ca execute une procedure.
> > > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > > Si il y a "B" .........
> > > > > >
> > > > > > Et ceci n'importe quand dans le prog!
> > > > > > Merci de me donner si possible dans exemple ce prog pour mes
> > questions
> > > !
> > > > > >
> > > > > > Merci d'avance pour vos reponses !
> > > > > >
> > > > > > Jean-Michel
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Merci encore pour ta reponse Cégé,
Donc avec ta methode, on a plus besoin de 'timer' ?
Et donc tu me dit que le OnComm se lance quand il y qqchose qui arrive
le port COM ?
Et c'est ensuite dans la procedure qu'on essaye de detecter le type de
donnée, et le type de donnée est dans la variable COM1.CommEvent ?
Et on peut lire le buffer sur .input ?
Ou sont les propriété a regler pour dire QUAND la procedure OnComm se met
route ?
Merci beaucoup
Jean-Michel
"Cégé" a écrit dans le message news:
bno2mc$6j8$
> Si tu utilise le contrôle MSCOMM
> (Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
> Double clic sur le bouton correspondant (dans mon cas représente un
> téléphone).
>
> Private Sub MSComm1_OnComm()
> end sub
>
> Cet évènement sera appelé *par le port de communication* en fontion de
> propriétés fixées (par exemple à la réception de chaque caractère).
> Dans cette procédure, on teste une propriété du port com pour connaitre
> nature de l'évènement (.CommEvent de mémoire). Par exemple réception (ca
> peut être des erreurs, la réception de signaux de controle, l'émission
> caractère, etc.).
> On peut également lire le buffer de réception du port com (.input) afin
> le tester ou de le cumuler avec le buffer de ton application.
>
> Je ne me souviens pas du détail. Le controle est documenté (un peu
> mais c'est du microsoft : un bit = 2 tonnes de documentation :).
> Faire F1 dans la forme avec le ComPort (bouton "téléphone") sélectionné.
> Suivre les exemples.
>
> Attention à bien assimiler les propriétés de ce composant. Ce sont elles
qui
> vont déterminer QUAND OnComm() est appelée.
>
> Ca marche très bien.
>
> -- Christian
>
>
> "Jean-Michel" a écrit dans le
> message news:
> > Merci Cégé pour ta réponse !
> >
> > Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> > Je n'arrive pas a trouver la fonction qui permet de lire toutes les
> > recu pendant ces 50ms.
> > Donc je n'arrive pas a lire ce que le buffer a retenu durant ces
> >
> > Et je voudrai savoir, apparement tu as trouver une solution qui permet
de
> ne
> > pas verifier en permanence le port pour verifier si il y a pas de D,
mais
> > plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> > procedure.
> > Peux tu m'en parler ?
> >
> > Merci beaucoup de ton aide !
> >
> > Jean-Michel
> >
> > "Cégé" a écrit dans le message news:
> > bnnvlv$4pj$
> > > Bonjour
> > >
> > > Un timer t'évite une boucle.
> > > Toujours dangereuse dans un système comme Windows.
> > > Surtout que les accès au hard (COM1) ont une forte priorité.
> > >
> > > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > > régulièrement le buffer RS232 est la meilleure.
> > > Sans boucle à l'intérieur.
> > > Si le timer est trop court, il va ralentir la machine.
> > >
> > > Une boucle peut être agrémentée d'un "doevent" mais on prend le
> de
> > > "ré-entrance" (l'horreur avec un port com).
> > >
> > > La meilleure solution est d'utiliser les évènements du port com.
> Celui-ci
> > > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un ou
> > > plusieurs caractères par exemple (nb caractères programmables). Très
> > > pratique pour détecter l'arrivée d'un caractère de synchronisation
> (comme
> > > "D" dans ton exemple). Pas d'encombrement des ressources -de
> > ralentissement
> > > machine- quand la ligne RS232 ne "parle" pas.
> > > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
peuvent
> > > être très puissants et qui permettent des communications robustes.
Voir
> > > l'exemple de microsoft VBTerm. Très didactique quoique lourd. Quasi
tous
> > les
> > > cas sont traités dans ce code.
> > >
> > > -- Christian
> > >
> > > "Jean-Michel" a écrit dans
> > > message news:
> > > > ng,
> > > >
> > > > Merci beaucoup pour ta reponse !
> > > >
> > > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> timer1.timer()
> > > va
> > > > tourner en permanance pendant que le programme tourne ?
> > > > Et donc dans la boucle, je peux rajouter if COM1.input = "D" Then
> Danger
> > > > EndIf ?
> > > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre D
> > pendant
> > > > tout le programme ?
> > > >
> > > > Merci encore
> > > >
> > > > Jean-Michel
> > > >
> > > >
> > > >
> > > >
> > > > "ng" a écrit dans le message news:
> > > > #
> > > > > Bonjour,
> > > > > Il suffirait de placer la boucle dans un timer :
> > > > >
> > > > > Soit comme ca :
> > > > >
> > > > > Au début du programme faire timer1.enabled=true
> > > > >
> > > > > Sub timer1_timer()
> > > > > timer1.enabledúlse
> > > > > do
> > > > > 'boucle
> > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > loop
> > > > > end sub
> > > > >
> > > > > ou définir un interval petit pour le timer
> > > > >
> > > > > Sub timer1_timer()
> > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > end sub
> > > > >
> > > > > Nicolas.
> > > > >
> > > > >
> > > > > "Jean-Michel" a écrit
> le
> > > > > message de news:
> > > > > > Bonjour,
> > > > > >
> > > > > > Je me pose deux trois petites question ...
> > > > > > Je me demande comment ne pas louper des données qui rentre
le
> > > port
> > > > > com1
> > > > > > Il faut faire une boucle qui en permanance fasse
> > > > > DonneeEntrant=DonneeEntrant
> > > > > > + COM1.input ?
> > > > > > Mais si on fait la boucle en permanence, comment on peut faire
> autre
> > > > chose
> > > > > > du programme ?
> > > > > >
> > > > > > En fait je voudrais surveiller le port COM1, que n'importe où
dans
> > le
> > > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
coupe
> > le
> > > > prog
> > > > > > et que ca execute une procedure.
> > > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > > Si il y a "B" .........
> > > > > >
> > > > > > Et ceci n'importe quand dans le prog!
> > > > > > Merci de me donner si possible dans exemple ce prog pour mes
> > questions
> > > !
> > > > > >
> > > > > > Merci d'avance pour vos reponses !
> > > > > >
> > > > > > Jean-Michel
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Clic droit sur le contrôle ou bien dans la fenêtre de propriétés du projet
sous VB6.
Ne pas confondre le InBufferSize (capacité du buffer de réception ) et le
RThreshold (seuil de déclenchement de OnComm)...
Attention aussi : le buffer se vide dès la lecture (lecture de Input), par
exemple
MaChaine = MSComm.Input '** vidage du buffer, suivi de
MaChaine = MSComm.Input '** vide ou caractères suivants...
Voir l'aide.
Piège : ne pas faire trop de chose dans OnComm() : risque d'être dépassé
les évènement si débit rapide + forte densité d'informations.
(essayé à 115Kb/s avec des remontées d'1Mo)
-- Christian
"Jean-Michel" a écrit dans le
message news:
> Merci encore pour ta reponse Cégé,
>
> Donc avec ta methode, on a plus besoin de 'timer' ?
> Et donc tu me dit que le OnComm se lance quand il y qqchose qui arrive
dans
> le port COM ?
> Et c'est ensuite dans la procedure qu'on essaye de detecter le type de
> donnée, et le type de donnée est dans la variable COM1.CommEvent ?
> Et on peut lire le buffer sur .input ?
> Ou sont les propriété a regler pour dire QUAND la procedure OnComm se
en
> route ?
>
> Merci beaucoup
>
> Jean-Michel
>
>
>
> "Cégé" a écrit dans le message news:
> bno2mc$6j8$
> > Si tu utilise le contrôle MSCOMM
> > (Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
> > Double clic sur le bouton correspondant (dans mon cas représente un
> > téléphone).
> >
> > Private Sub MSComm1_OnComm()
> > end sub
> >
> > Cet évènement sera appelé *par le port de communication* en fontion de
> > propriétés fixées (par exemple à la réception de chaque caractère).
> > Dans cette procédure, on teste une propriété du port com pour
la
> > nature de l'évènement (.CommEvent de mémoire). Par exemple réception
> > peut être des erreurs, la réception de signaux de controle, l'émission
de
> > caractère, etc.).
> > On peut également lire le buffer de réception du port com (.input)
de
> > le tester ou de le cumuler avec le buffer de ton application.
> >
> > Je ne me souviens pas du détail. Le controle est documenté (un peu
confus
> > mais c'est du microsoft : un bit = 2 tonnes de documentation :).
> > Faire F1 dans la forme avec le ComPort (bouton "téléphone")
> > Suivre les exemples.
> >
> > Attention à bien assimiler les propriétés de ce composant. Ce sont
> qui
> > vont déterminer QUAND OnComm() est appelée.
> >
> > Ca marche très bien.
> >
> > -- Christian
> >
> >
> > "Jean-Michel" a écrit dans le
> > message news:
> > > Merci Cégé pour ta réponse !
> > >
> > > Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> > > Je n'arrive pas a trouver la fonction qui permet de lire toutes les
info
> > > recu pendant ces 50ms.
> > > Donc je n'arrive pas a lire ce que le buffer a retenu durant ces
50ms...
> > >
> > > Et je voudrai savoir, apparement tu as trouver une solution qui
> de
> > ne
> > > pas verifier en permanence le port pour verifier si il y a pas de D,
> mais
> > > plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> > > procedure.
> > > Peux tu m'en parler ?
> > >
> > > Merci beaucoup de ton aide !
> > >
> > > Jean-Michel
> > >
> > > "Cégé" a écrit dans le message news:
> > > bnnvlv$4pj$
> > > > Bonjour
> > > >
> > > > Un timer t'évite une boucle.
> > > > Toujours dangereuse dans un système comme Windows.
> > > > Surtout que les accès au hard (COM1) ont une forte priorité.
> > > >
> > > > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > > > régulièrement le buffer RS232 est la meilleure.
> > > > Sans boucle à l'intérieur.
> > > > Si le timer est trop court, il va ralentir la machine.
> > > >
> > > > Une boucle peut être agrémentée d'un "doevent" mais on prend le
risque
> > de
> > > > "ré-entrance" (l'horreur avec un port com).
> > > >
> > > > La meilleure solution est d'utiliser les évènements du port com.
> > Celui-ci
> > > > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un
> > > > plusieurs caractères par exemple (nb caractères programmables).
> > > > pratique pour détecter l'arrivée d'un caractère de synchronisation
> > (comme
> > > > "D" dans ton exemple). Pas d'encombrement des ressources -de
> > > ralentissement
> > > > machine- quand la ligne RS232 ne "parle" pas.
> > > > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
> peuvent
> > > > être très puissants et qui permettent des communications robustes.
> Voir
> > > > l'exemple de microsoft VBTerm. Très didactique quoique lourd.
> tous
> > > les
> > > > cas sont traités dans ce code.
> > > >
> > > > -- Christian
> > > >
> > > > "Jean-Michel" a écrit dans
le
> > > > message news:
> > > > > ng,
> > > > >
> > > > > Merci beaucoup pour ta reponse !
> > > > >
> > > > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> > timer1.timer()
> > > > va
> > > > > tourner en permanance pendant que le programme tourne ?
> > > > > Et donc dans la boucle, je peux rajouter if COM1.input = "D"
> > Danger
> > > > > EndIf ?
> > > > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre
> > > pendant
> > > > > tout le programme ?
> > > > >
> > > > > Merci encore
> > > > >
> > > > > Jean-Michel
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > "ng" a écrit dans le message news:
> > > > > #
> > > > > > Bonjour,
> > > > > > Il suffirait de placer la boucle dans un timer :
> > > > > >
> > > > > > Soit comme ca :
> > > > > >
> > > > > > Au début du programme faire timer1.enabled=true
> > > > > >
> > > > > > Sub timer1_timer()
> > > > > > timer1.enabledúlse
> > > > > > do
> > > > > > 'boucle
> > > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > > loop
> > > > > > end sub
> > > > > >
> > > > > > ou définir un interval petit pour le timer
> > > > > >
> > > > > > Sub timer1_timer()
> > > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > > end sub
> > > > > >
> > > > > > Nicolas.
> > > > > >
> > > > > >
> > > > > > "Jean-Michel" a écrit
dans
> > le
> > > > > > message de news:
> > > > > > > Bonjour,
> > > > > > >
> > > > > > > Je me pose deux trois petites question ...
> > > > > > > Je me demande comment ne pas louper des données qui rentre
dans
> le
> > > > port
> > > > > > com1
> > > > > > > Il faut faire une boucle qui en permanance fasse
> > > > > > DonneeEntrant=DonneeEntrant
> > > > > > > + COM1.input ?
> > > > > > > Mais si on fait la boucle en permanence, comment on peut
> > autre
> > > > > chose
> > > > > > > du programme ?
> > > > > > >
> > > > > > > En fait je voudrais surveiller le port COM1, que n'importe
> dans
> > > le
> > > > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
> coupe
> > > le
> > > > > prog
> > > > > > > et que ca execute une procedure.
> > > > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > > > Si il y a "B" .........
> > > > > > >
> > > > > > > Et ceci n'importe quand dans le prog!
> > > > > > > Merci de me donner si possible dans exemple ce prog pour mes
> > > questions
> > > > !
> > > > > > >
> > > > > > > Merci d'avance pour vos reponses !
> > > > > > >
> > > > > > > Jean-Michel
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Clic droit sur le contrôle ou bien dans la fenêtre de propriétés du projet
sous VB6.
Ne pas confondre le InBufferSize (capacité du buffer de réception ) et le
RThreshold (seuil de déclenchement de OnComm)...
Attention aussi : le buffer se vide dès la lecture (lecture de Input), par
exemple
MaChaine = MSComm.Input '** vidage du buffer, suivi de
MaChaine = MSComm.Input '** vide ou caractères suivants...
Voir l'aide.
Piège : ne pas faire trop de chose dans OnComm() : risque d'être dépassé
les évènement si débit rapide + forte densité d'informations.
(essayé à 115Kb/s avec des remontées d'1Mo)
-- Christian
"Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
message news: OBA1jUgnDHA.2628@TK2MSFTNGP10.phx.gbl...
> Merci encore pour ta reponse Cégé,
>
> Donc avec ta methode, on a plus besoin de 'timer' ?
> Et donc tu me dit que le OnComm se lance quand il y qqchose qui arrive
dans
> le port COM ?
> Et c'est ensuite dans la procedure qu'on essaye de detecter le type de
> donnée, et le type de donnée est dans la variable COM1.CommEvent ?
> Et on peut lire le buffer sur .input ?
> Ou sont les propriété a regler pour dire QUAND la procedure OnComm se
en
> route ?
>
> Merci beaucoup
>
> Jean-Michel
>
>
>
> "Cégé" <personne@nullePart.fr> a écrit dans le message news:
> bno2mc$6j8$1@s1.read.news.oleane.net...
> > Si tu utilise le contrôle MSCOMM
> > (Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
> > Double clic sur le bouton correspondant (dans mon cas représente un
> > téléphone).
> >
> > Private Sub MSComm1_OnComm()
> > end sub
> >
> > Cet évènement sera appelé *par le port de communication* en fontion de
> > propriétés fixées (par exemple à la réception de chaque caractère).
> > Dans cette procédure, on teste une propriété du port com pour
la
> > nature de l'évènement (.CommEvent de mémoire). Par exemple réception
> > peut être des erreurs, la réception de signaux de controle, l'émission
de
> > caractère, etc.).
> > On peut également lire le buffer de réception du port com (.input)
de
> > le tester ou de le cumuler avec le buffer de ton application.
> >
> > Je ne me souviens pas du détail. Le controle est documenté (un peu
confus
> > mais c'est du microsoft : un bit = 2 tonnes de documentation :).
> > Faire F1 dans la forme avec le ComPort (bouton "téléphone")
> > Suivre les exemples.
> >
> > Attention à bien assimiler les propriétés de ce composant. Ce sont
> qui
> > vont déterminer QUAND OnComm() est appelée.
> >
> > Ca marche très bien.
> >
> > -- Christian
> >
> >
> > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans le
> > message news: esGyw2fnDHA.3316@tk2msftngp13.phx.gbl...
> > > Merci Cégé pour ta réponse !
> > >
> > > Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> > > Je n'arrive pas a trouver la fonction qui permet de lire toutes les
info
> > > recu pendant ces 50ms.
> > > Donc je n'arrive pas a lire ce que le buffer a retenu durant ces
50ms...
> > >
> > > Et je voudrai savoir, apparement tu as trouver une solution qui
> de
> > ne
> > > pas verifier en permanence le port pour verifier si il y a pas de D,
> mais
> > > plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> > > procedure.
> > > Peux tu m'en parler ?
> > >
> > > Merci beaucoup de ton aide !
> > >
> > > Jean-Michel
> > >
> > > "Cégé" <personne@nullePart.fr> a écrit dans le message news:
> > > bnnvlv$4pj$1@s1.read.news.oleane.net...
> > > > Bonjour
> > > >
> > > > Un timer t'évite une boucle.
> > > > Toujours dangereuse dans un système comme Windows.
> > > > Surtout que les accès au hard (COM1) ont une forte priorité.
> > > >
> > > > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > > > régulièrement le buffer RS232 est la meilleure.
> > > > Sans boucle à l'intérieur.
> > > > Si le timer est trop court, il va ralentir la machine.
> > > >
> > > > Une boucle peut être agrémentée d'un "doevent" mais on prend le
risque
> > de
> > > > "ré-entrance" (l'horreur avec un port com).
> > > >
> > > > La meilleure solution est d'utiliser les évènements du port com.
> > Celui-ci
> > > > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un
> > > > plusieurs caractères par exemple (nb caractères programmables).
> > > > pratique pour détecter l'arrivée d'un caractère de synchronisation
> > (comme
> > > > "D" dans ton exemple). Pas d'encombrement des ressources -de
> > > ralentissement
> > > > machine- quand la ligne RS232 ne "parle" pas.
> > > > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
> peuvent
> > > > être très puissants et qui permettent des communications robustes.
> Voir
> > > > l'exemple de microsoft VBTerm. Très didactique quoique lourd.
> tous
> > > les
> > > > cas sont traités dans ce code.
> > > >
> > > > -- Christian
> > > >
> > > > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit dans
le
> > > > message news: Of8lpffnDHA.2012@TK2MSFTNGP12.phx.gbl...
> > > > > ng,
> > > > >
> > > > > Merci beaucoup pour ta reponse !
> > > > >
> > > > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> > timer1.timer()
> > > > va
> > > > > tourner en permanance pendant que le programme tourne ?
> > > > > Et donc dans la boucle, je peux rajouter if COM1.input = "D"
> > Danger
> > > > > EndIf ?
> > > > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre
> > > pendant
> > > > > tout le programme ?
> > > > >
> > > > > Merci encore
> > > > >
> > > > > Jean-Michel
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > "ng" <ng@babeuk.net> a écrit dans le message news:
> > > > > #uKqxMfnDHA.1004@TK2MSFTNGP09.phx.gbl...
> > > > > > Bonjour,
> > > > > > Il suffirait de placer la boucle dans un timer :
> > > > > >
> > > > > > Soit comme ca :
> > > > > >
> > > > > > Au début du programme faire timer1.enabled=true
> > > > > >
> > > > > > Sub timer1_timer()
> > > > > > timer1.enabledúlse
> > > > > > do
> > > > > > 'boucle
> > > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > > loop
> > > > > > end sub
> > > > > >
> > > > > > ou définir un interval petit pour le timer
> > > > > >
> > > > > > Sub timer1_timer()
> > > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > > end sub
> > > > > >
> > > > > > Nicolas.
> > > > > >
> > > > > >
> > > > > > "Jean-Michel" <jeneveuxpasdespam_coconuts@genial.net> a écrit
dans
> > le
> > > > > > message de news: OJWZVCfnDHA.3504@TK2MSFTNGP11.phx.gbl...
> > > > > > > Bonjour,
> > > > > > >
> > > > > > > Je me pose deux trois petites question ...
> > > > > > > Je me demande comment ne pas louper des données qui rentre
dans
> le
> > > > port
> > > > > > com1
> > > > > > > Il faut faire une boucle qui en permanance fasse
> > > > > > DonneeEntrant=DonneeEntrant
> > > > > > > + COM1.input ?
> > > > > > > Mais si on fait la boucle en permanence, comment on peut
> > autre
> > > > > chose
> > > > > > > du programme ?
> > > > > > >
> > > > > > > En fait je voudrais surveiller le port COM1, que n'importe
> dans
> > > le
> > > > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
> coupe
> > > le
> > > > > prog
> > > > > > > et que ca execute une procedure.
> > > > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > > > Si il y a "B" .........
> > > > > > >
> > > > > > > Et ceci n'importe quand dans le prog!
> > > > > > > Merci de me donner si possible dans exemple ce prog pour mes
> > > questions
> > > > !
> > > > > > >
> > > > > > > Merci d'avance pour vos reponses !
> > > > > > >
> > > > > > > Jean-Michel
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Clic droit sur le contrôle ou bien dans la fenêtre de propriétés du projet
sous VB6.
Ne pas confondre le InBufferSize (capacité du buffer de réception ) et le
RThreshold (seuil de déclenchement de OnComm)...
Attention aussi : le buffer se vide dès la lecture (lecture de Input), par
exemple
MaChaine = MSComm.Input '** vidage du buffer, suivi de
MaChaine = MSComm.Input '** vide ou caractères suivants...
Voir l'aide.
Piège : ne pas faire trop de chose dans OnComm() : risque d'être dépassé
les évènement si débit rapide + forte densité d'informations.
(essayé à 115Kb/s avec des remontées d'1Mo)
-- Christian
"Jean-Michel" a écrit dans le
message news:
> Merci encore pour ta reponse Cégé,
>
> Donc avec ta methode, on a plus besoin de 'timer' ?
> Et donc tu me dit que le OnComm se lance quand il y qqchose qui arrive
dans
> le port COM ?
> Et c'est ensuite dans la procedure qu'on essaye de detecter le type de
> donnée, et le type de donnée est dans la variable COM1.CommEvent ?
> Et on peut lire le buffer sur .input ?
> Ou sont les propriété a regler pour dire QUAND la procedure OnComm se
en
> route ?
>
> Merci beaucoup
>
> Jean-Michel
>
>
>
> "Cégé" a écrit dans le message news:
> bno2mc$6j8$
> > Si tu utilise le contrôle MSCOMM
> > (Dans mon cas : Projet/Composant/Microsoft Com Control 6.0).
> > Double clic sur le bouton correspondant (dans mon cas représente un
> > téléphone).
> >
> > Private Sub MSComm1_OnComm()
> > end sub
> >
> > Cet évènement sera appelé *par le port de communication* en fontion de
> > propriétés fixées (par exemple à la réception de chaque caractère).
> > Dans cette procédure, on teste une propriété du port com pour
la
> > nature de l'évènement (.CommEvent de mémoire). Par exemple réception
> > peut être des erreurs, la réception de signaux de controle, l'émission
de
> > caractère, etc.).
> > On peut également lire le buffer de réception du port com (.input)
de
> > le tester ou de le cumuler avec le buffer de ton application.
> >
> > Je ne me souviens pas du détail. Le controle est documenté (un peu
confus
> > mais c'est du microsoft : un bit = 2 tonnes de documentation :).
> > Faire F1 dans la forme avec le ComPort (bouton "téléphone")
> > Suivre les exemples.
> >
> > Attention à bien assimiler les propriétés de ce composant. Ce sont
> qui
> > vont déterminer QUAND OnComm() est appelée.
> >
> > Ca marche très bien.
> >
> > -- Christian
> >
> >
> > "Jean-Michel" a écrit dans le
> > message news:
> > > Merci Cégé pour ta réponse !
> > >
> > > Donc tu me conseille de vider le buffer toutes les 50ms, ok !
> > > Je n'arrive pas a trouver la fonction qui permet de lire toutes les
info
> > > recu pendant ces 50ms.
> > > Donc je n'arrive pas a lire ce que le buffer a retenu durant ces
50ms...
> > >
> > > Et je voudrai savoir, apparement tu as trouver une solution qui
> de
> > ne
> > > pas verifier en permanence le port pour verifier si il y a pas de D,
> mais
> > > plutot que si il y a un D qui arrive, ca arrete tout et ca lance une
> > > procedure.
> > > Peux tu m'en parler ?
> > >
> > > Merci beaucoup de ton aide !
> > >
> > > Jean-Michel
> > >
> > > "Cégé" a écrit dans le message news:
> > > bnnvlv$4pj$
> > > > Bonjour
> > > >
> > > > Un timer t'évite une boucle.
> > > > Toujours dangereuse dans un système comme Windows.
> > > > Surtout que les accès au hard (COM1) ont une forte priorité.
> > > >
> > > > Je trouve que la solution d'un timer court (genre 50mS) qui purge
> > > > régulièrement le buffer RS232 est la meilleure.
> > > > Sans boucle à l'intérieur.
> > > > Si le timer est trop court, il va ralentir la machine.
> > > >
> > > > Une boucle peut être agrémentée d'un "doevent" mais on prend le
risque
> > de
> > > > "ré-entrance" (l'horreur avec un port com).
> > > >
> > > > La meilleure solution est d'utiliser les évènements du port com.
> > Celui-ci
> > > > déclenche un évènement (comme un clic souris) lorsqu'il a reçu un
> > > > plusieurs caractères par exemple (nb caractères programmables).
> > > > pratique pour détecter l'arrivée d'un caractère de synchronisation
> > (comme
> > > > "D" dans ton exemple). Pas d'encombrement des ressources -de
> > > ralentissement
> > > > machine- quand la ligne RS232 ne "parle" pas.
> > > > N'oublie pas les contrôles de flux (matériels et logiciels). Qui
> peuvent
> > > > être très puissants et qui permettent des communications robustes.
> Voir
> > > > l'exemple de microsoft VBTerm. Très didactique quoique lourd.
> tous
> > > les
> > > > cas sont traités dans ce code.
> > > >
> > > > -- Christian
> > > >
> > > > "Jean-Michel" a écrit dans
le
> > > > message news:
> > > > > ng,
> > > > >
> > > > > Merci beaucoup pour ta reponse !
> > > > >
> > > > > Donc avec ce que tu me dit, la boucle qui est dans le Sub
> > timer1.timer()
> > > > va
> > > > > tourner en permanance pendant que le programme tourne ?
> > > > > Et donc dans la boucle, je peux rajouter if COM1.input = "D"
> > Danger
> > > > > EndIf ?
> > > > > Ca veut dire que je ne vais jamais louper l'arriver de la lettre
> > > pendant
> > > > > tout le programme ?
> > > > >
> > > > > Merci encore
> > > > >
> > > > > Jean-Michel
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > "ng" a écrit dans le message news:
> > > > > #
> > > > > > Bonjour,
> > > > > > Il suffirait de placer la boucle dans un timer :
> > > > > >
> > > > > > Soit comme ca :
> > > > > >
> > > > > > Au début du programme faire timer1.enabled=true
> > > > > >
> > > > > > Sub timer1_timer()
> > > > > > timer1.enabledúlse
> > > > > > do
> > > > > > 'boucle
> > > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > > loop
> > > > > > end sub
> > > > > >
> > > > > > ou définir un interval petit pour le timer
> > > > > >
> > > > > > Sub timer1_timer()
> > > > > > DonneeEntrant=DonneeEntrant & COM1.input
> > > > > > end sub
> > > > > >
> > > > > > Nicolas.
> > > > > >
> > > > > >
> > > > > > "Jean-Michel" a écrit
dans
> > le
> > > > > > message de news:
> > > > > > > Bonjour,
> > > > > > >
> > > > > > > Je me pose deux trois petites question ...
> > > > > > > Je me demande comment ne pas louper des données qui rentre
dans
> le
> > > > port
> > > > > > com1
> > > > > > > Il faut faire une boucle qui en permanance fasse
> > > > > > DonneeEntrant=DonneeEntrant
> > > > > > > + COM1.input ?
> > > > > > > Mais si on fait la boucle en permanence, comment on peut
> > autre
> > > > > chose
> > > > > > > du programme ?
> > > > > > >
> > > > > > > En fait je voudrais surveiller le port COM1, que n'importe
> dans
> > > le
> > > > > > > programme, dés qu'il y a qqchose qui rentre dans le COM1, ca
> coupe
> > > le
> > > > > prog
> > > > > > > et que ca execute une procedure.
> > > > > > > Si il y a "A" qui rentre ca execute la procedure A
> > > > > > > Si il y a "B" .........
> > > > > > >
> > > > > > > Et ceci n'importe quand dans le prog!
> > > > > > > Merci de me donner si possible dans exemple ce prog pour mes
> > > questions
> > > > !
> > > > > > >
> > > > > > > Merci d'avance pour vos reponses !
> > > > > > >
> > > > > > > Jean-Michel
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Bonjour,
Je me pose deux trois petites question ...
Je me demande comment ne pas louper des données qui rentre dans le port
Il faut faire une boucle qui en permanance fasse
+ COM1.input ?
Mais si on fait la boucle en permanence, comment on peut faire autre chose
du programme ?
En fait je voudrais surveiller le port COM1, que n'importe où dans le
programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le prog
et que ca execute une procedure.
Si il y a "A" qui rentre ca execute la procedure A
Si il y a "B" .........
Et ceci n'importe quand dans le prog!
Merci de me donner si possible dans exemple ce prog pour mes questions !
Merci d'avance pour vos reponses !
Jean-Michel
Bonjour,
Je me pose deux trois petites question ...
Je me demande comment ne pas louper des données qui rentre dans le port
Il faut faire une boucle qui en permanance fasse
+ COM1.input ?
Mais si on fait la boucle en permanence, comment on peut faire autre chose
du programme ?
En fait je voudrais surveiller le port COM1, que n'importe où dans le
programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le prog
et que ca execute une procedure.
Si il y a "A" qui rentre ca execute la procedure A
Si il y a "B" .........
Et ceci n'importe quand dans le prog!
Merci de me donner si possible dans exemple ce prog pour mes questions !
Merci d'avance pour vos reponses !
Jean-Michel
Bonjour,
Je me pose deux trois petites question ...
Je me demande comment ne pas louper des données qui rentre dans le port
Il faut faire une boucle qui en permanance fasse
+ COM1.input ?
Mais si on fait la boucle en permanence, comment on peut faire autre chose
du programme ?
En fait je voudrais surveiller le port COM1, que n'importe où dans le
programme, dés qu'il y a qqchose qui rentre dans le COM1, ca coupe le prog
et que ca execute une procedure.
Si il y a "A" qui rentre ca execute la procedure A
Si il y a "B" .........
Et ceci n'importe quand dans le prog!
Merci de me donner si possible dans exemple ce prog pour mes questions !
Merci d'avance pour vos reponses !
Jean-Michel