Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pd function

6 réponses
Avatar
Jingle
bonjour,

j'ai un probleme avec une fonction

la voici

Private function envoit(azert As String, qsdfg As String)
Dim reponse As String
Dim nbcar As String
Dim timeout

Do
With Mscomm1
.output =3D Chr("&H& & azert)
.output =3D Chr(Hex(qsdfg))
End With
timeout =3D timer+3
nbcar=3D0
Do
Doevents
nbcar=3DMSComm1.InBufferCount
Loop Until nbcar >=3D0
reponse =3D MSComm1.Input
loop until reponse =3D "d"
End function

voila
des que je me serts de cette fonction VB veut une =E9galt=E9.
envoit (variable1, variable2) 'mes variable sont bien de=20
type String.


Je pense que mon probl=E8me vient du p-tre du faite que je=20
nouvre pas et ne ferme pas mon port com dans la fonction.

Par je l'ouvre bien avant d'appeler cette fonction et je=20
le referme bien.

Merci de votre aide

6 réponses

Avatar
Jean-Marc
"Jingle" a écrit dans le message de
news:019401c3cf0e$3c8e8210$
bonjour,
j'ai un probleme avec une fonction
la voici
Private function envoit(azert As String, qsdfg As String)
Dim reponse As String
Dim nbcar As String
Dim timeout

Do
With Mscomm1
.output = Chr("&H& & azert)
.output = Chr(Hex(qsdfg))
End With
timeout = timer+3
nbcar=0
Do
Doevents
nbcar=MSComm1.InBufferCount
Loop Until nbcar >=0
reponse = MSComm1.Input
loop until reponse = "d"
End function



voila
des que je me serts de cette fonction VB veut une égalté.
envoit (variable1, variable2) 'mes variable sont bien de
type String.



Hello,

1) que veux tu dire par VB veut une égalité ?
2) Que doit retourner ta fonction "envoit" ?

JM
Avatar
Jingle
>-----Message d'origine-----
"Jingle" a écrit dans le


message de
news:019401c3cf0e$3c8e8210$
bonjour,
j'ai un probleme avec une fonction
la voici
Private function envoit(azert As String, qsdfg As String)
Dim reponse As String
Dim nbcar As String
Dim timeout

Do
With Mscomm1
.output = Chr("&H& & azert)
.output = Chr(Hex(qsdfg))
End With
timeout = timer+3
nbcar=0
Do
Doevents
nbcar=MSComm1.InBufferCount
Loop Until nbcar >=0
reponse = MSComm1.Input
loop until reponse = "d"
End function



voila
des que je me serts de cette fonction VB veut une égalté.
envoit (variable1, variable2) 'mes variable sont bien de
type String.



Hello,

1) que veux tu dire par VB veut une égalité ?



lorsque je me sert de ma fonction
envoit (variable1, variable2) il ne l'accepte que si je
mets
envoit (variable1, variable2) = 1 ou 2 ou n'importe quoi
donc a cause de cela a la fin j'ai des erreurs

2) Que doit retourner ta fonction "envoit" ?


ma fonction envoit ne doit rien retourner elle me sert
juste a racourcir mon code
puisque je doit envoyer une centaine de caracteres par le
port serie de cette meme manière

je veux juste que vb m'envoye les deux variables de ma
fonction sur mon port com. je n'est besoin d'aucune valeur
en retour

merci de ton aide

JM


.



Avatar
François Picalausa
Bonjour/soir,

ma fonction envoit ne doit rien retourner elle me sert
juste a racourcir mon code



Dans ce cas, utilise un Sub:
Sub envoit(var1 as string, var2 as string)

End Sub

Pour l'appel:
Call Sub("a","b")
ou
Sub "a","b"

A noter que l'appel d'un sub sans Call n'admet jamais de parenthèse. De la
même manière, quand tu demande à VB
MaFonction("a","b")
il pense qu'il doit retrouver une valeur mais il ne sait pas à quelle fin =>
erreur.
Il est aussi possible d'appeller une fonction sans parenthèse ou avec un
Call, mais en VB, une focntion qui ne renvoie rien est un Sub.
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"Jingle" a écrit dans le message de
news:024701c3cf1f$d70f3620$
-----Message d'origine-----
"Jingle" a écrit dans le message de
news:019401c3cf0e$3c8e8210$
bonjour,
j'ai un probleme avec une fonction
la voici
<snip>



1) que veux tu dire par VB veut une égalité ?



lorsque je me sert de ma fonction
envoit (variable1, variable2) il ne l'accepte que si je
mets
envoit (variable1, variable2) = 1 ou 2 ou n'importe quoi
donc a cause de cela a la fin j'ai des erreurs

2) Que doit retourner ta fonction "envoit" ?


ma fonction envoit ne doit rien retourner elle me sert
juste a racourcir mon code
puisque je doit envoyer une centaine de caracteres par le
port serie de cette meme manière



Avatar
Patrice Henrio
J'ai été confronté à ce type de problème lié à ma formation en pascal et
quelques autres langages (LISP en particulier).
Je n'ai compris qu'après plusieurs mois de VB que les parenthèses ne sont
pas obligatoires.
Cependant pour moi une fonction qui ne renvoie rien ne se conçoit que dans
un langage n'acceptant que des fonctions : le sfameux "effets de bord" des
fonctions LISP.
Pour mieux expliquer ce qui se passe ne VB l'exemple idéal est MsgBox

MsgBox "OK", vbOKOnly
affichera une boîte de dialogue et attendra que l'utilisateur frappe sur
entrée ou clique sur le bouton "OK"

Par contre

MsgBox("OK",vbOKOnly) renverra une erreur car cette écriture considère bien
qu'au retour de MsgBox uen résultat soit stocké quelque part.
La bonne écriture est
Dim REP as string
REP=MsgBox("OK",vbOKOnly)


"François Picalausa" a écrit dans le message de
news:%
Bonjour/soir,

> ma fonction envoit ne doit rien retourner elle me sert
> juste a racourcir mon code

Dans ce cas, utilise un Sub:
Sub envoit(var1 as string, var2 as string)

End Sub

Pour l'appel:
Call Sub("a","b")
ou
Sub "a","b"

A noter que l'appel d'un sub sans Call n'admet jamais de parenthèse. De la
même manière, quand tu demande à VB
MaFonction("a","b")
il pense qu'il doit retrouver une valeur mais il ne sait pas à quelle fin


=>
erreur.
Il est aussi possible d'appeller une fonction sans parenthèse ou avec un
Call, mais en VB, une focntion qui ne renvoie rien est un Sub.
--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com

"Jingle" a écrit dans le message de
news:024701c3cf1f$d70f3620$
>> -----Message d'origine-----
>> "Jingle" a écrit dans le message de
>> news:019401c3cf0e$3c8e8210$
>>> bonjour,
>>> j'ai un probleme avec une fonction
>>> la voici
>>> <snip>
>>
>> 1) que veux tu dire par VB veut une égalité ?
>
> lorsque je me sert de ma fonction
> envoit (variable1, variable2) il ne l'accepte que si je
> mets
> envoit (variable1, variable2) = 1 ou 2 ou n'importe quoi
> donc a cause de cela a la fin j'ai des erreurs
>
>> 2) Que doit retourner ta fonction "envoit" ?
> ma fonction envoit ne doit rien retourner elle me sert
> juste a racourcir mon code
> puisque je doit envoyer une centaine de caracteres par le
> port serie de cette meme manière
>




Avatar
François Picalausa
Bonjour/soir,

"Patrice Henrio" a écrit dans le
message de news:%
La bonne écriture est
Dim REP as string
REP=MsgBox("OK",vbOKOnly)



Mis à part que REP devrait être As vbMsgBoxResult au lieu de As String ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Patrice Henrio
Tout à fait d'accord, même si cela marche quand même surtout si on n'a pas
besoin de Rep. Par contre en cas de besoin, avec Rep en string, le retour
sera un nombre transformé en chaîne de caractères.
"François Picalausa" a écrit dans le message de
news:%
Bonjour/soir,

"Patrice Henrio" a écrit dans le
message de news:%
> La bonne écriture est
> Dim REP as string
> REP=MsgBox("OK",vbOKOnly)

Mis à part que REP devrait être As vbMsgBoxResult au lieu de As String ;-)

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com