Envoyer/Recevoir sur Port Com

Signaler
Messages postés
5
Date d'inscription
mardi 7 mai 2002
Statut
Membre
Dernière intervention
31 mai 2002
-
cs_Cask
Messages postés
23
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
3 décembre 2003
-
Salut !
J'essaye de récupérer des données sur un appareil branché sur port com. J'ai mis le téléphone (icône) sur ma form et après je sais plus quoi faire!!!
Je dois envoyer le message "MP?" à l'appareil pour qu'il me renvoie les valeurs.
Quelqu'un peu m'aider SVP ???!!!

J'ai essayé :

MSComm1.PortOpen = true
MsComm1.Output = "MP?"
res$ = MSComm1.Input

mais ça marche pas. ;-(
Aidez moi, je sais vraiment pas comment m'y prendre, je débute en VB

Merci

4 réponses

Messages postés
23
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
3 décembre 2003

Voila, en fait le controle COM n'a pas d'evennement quand il y des données dans le buffer. Ce qu'il faut faire, c'est envoyer les données comme tu as fait ("mscomm1.output = "MP?") puis faire un boucle qui tourne dans le vide (j'aime pas bien ça mais bon....) qui scrute si ya des nouvelles données arrivées :

while mscomm1.InBufferCount=0
doevents
wend

str = mscomm1.input
'et la tu as ta valeur dans str
Messages postés
5
Date d'inscription
mardi 7 mai 2002
Statut
Membre
Dernière intervention
31 mai 2002

Merci !
J'ai trouvé un autre truc maintenant :
private sub MSComm1_OnComm()
select case MSComm1.CommEvent
case comEvReceive
'ce que tu veux faire
case comEvSend
...
end select

Seulement j'ai un autre problème :
quand je reçois le signal d'arrivée de quelque chose et que je l'affiche avec un truc tout simple :

Str = MSComm1.Input
while Str <> ""
msgbox Str
Str = MSComm1.Input
wend

il me récupère toutes les valeurs. Mais si je veux les mettres dans un fichier :

dim fd as integer
fd = FreeFile()
open MonFichier for output as #fd
Str = MSComm1.Input
while Str <> ""
print #fd, Str
Str = MSComm1.Input
wend
close #fd

il ne m'ecrit que la première vague.
Le pire, c'est que si je rajoute un msgbox Str avant le print, il me récupère tout.

Je comprends plus rien !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Messages postés
5
Date d'inscription
mardi 7 mai 2002
Statut
Membre
Dernière intervention
31 mai 2002

Merci !
J'ai trouvé un autre truc maintenant :
private sub MSComm1_OnComm()
select case MSComm1.CommEvent
case comEvReceive
'ce que tu veux faire
case comEvSend
...
end select

Seulement j'ai un autre problème :
quand je reçois le signal d'arrivée de quelque chose et que je l'affiche avec un truc tout simple :

Str = MSComm1.Input
while Str <> ""
msgbox Str
Str = MSComm1.Input
wend

il me récupère toutes les valeurs. Mais si je veux les mettres dans un fichier :

dim fd as integer
fd = FreeFile()
open MonFichier for output as #fd
Str = MSComm1.Input
while Str <> ""
print #fd, Str
Str = MSComm1.Input
wend
close #fd

il ne m'ecrit que la première vague.
Le pire, c'est que si je rajoute un msgbox Str avant le print, il me récupère tout.

Je comprends plus rien !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Messages postés
23
Date d'inscription
jeudi 10 janvier 2002
Statut
Membre
Dernière intervention
3 décembre 2003

Attend attend !!
Deja merci bcp pour l'evvennement je ne savais pas que ca marchait !
Ensuite, c pas comme ca qu'il faut faire.
C'est pas une boucle avec str qu'il faut faire, car str<>"" !!! Donc ta boucle ne fait qu'une fois le truc.
tu veux tout metre dans un fichier au fur et à mesure ?
Pour cela, tu fais à chaque evennement :
str = str & MsComm1.input & vbcrlf

et la tu fous str dans un fichier (str contient toutes les données depuis le debut)