Envoyer/Recevoir sur Port Com

cs_FrenchTouch Messages postés 5 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 31 mai 2002 - 29 mai 2002 à 16:06
cs_Cask Messages postés 23 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 3 décembre 2003 - 31 mai 2002 à 12:18
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

cs_Cask Messages postés 23 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 3 décembre 2003
29 mai 2002 à 16:55
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
0
cs_FrenchTouch Messages postés 5 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 31 mai 2002
31 mai 2002 à 10:31
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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
cs_FrenchTouch Messages postés 5 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 31 mai 2002
31 mai 2002 à 10:31
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 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0
cs_Cask Messages postés 23 Date d'inscription jeudi 10 janvier 2002 Statut Membre Dernière intervention 3 décembre 2003
31 mai 2002 à 12:18
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)
0
Rejoignez-nous