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

Comment piloter un port comm en vb ? pourquoi ca ne marche pas chez moi ?

8 réponses
Avatar
Celemka
Bonjour,

etant novice j'ai fais de multiples recherches sur le net mais ne parvenant
pas à mes fins je me permet de vous demander ou j'ai faits des erreurs.

j'ai VB6 entreprises.
J'ai télecharger mscomm32.ocx je l'ai mis dans c:\winnt\system32 ( win 2K)

Puis j'ai fais : REGSVR32.EXE /u C:\Windoxs\System32\MSCOMM32.OCX

puis j'ai telecharger

http://download.microsoft.com/download/vb60ent/Sample30/1/W9XNT4/EN-US/VB6CLI.EXE


http://download.microsoft.com/download/VB60Pro/Install/2/Win98/En-US/VBUSC.exe

que j'ai les ai executés sans problème.


Puis dans VB, je suis allez chercher le petit téléphone ( il n'est pas jaune
chez moi mais bleu une fois placer dans la Form ) et voici le code que
j'essai de faire marché

Option Explicit
Private Sub Form_Load()
Form1.Caption = "App1"
With MSComm1 'configuration du port
.CommPort = 1 'On utilise le port COM1:
.Handshaking = 2 'RTS
.RThreshold = 1
.RTSEnable = True 'mieux pour le port COM:
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True 'ouverture du port
End With

Command1.Caption = "&Send"
Text1.Text = "Coucou"
End Sub

Private Sub Command1_Click()
MSComm1.Output = Text1.Text
End Sub

Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False 'on ferme le port à la fermeture de l'appli
End Sub



Le probleme que j'ai est que j'arrive a lancer une fois le programe mais je
n'arrive rien envoyer et lorsque je ve le relancer il me dis que le port est
deja ouvert alors que je fais bien MSComm1.PortOpen = False dans
Form_Unload, mais bon c'est pas le plus grand des probleme.

Sur ma liaison série j'ai des petite led TX et RX et rien de bouge donc mon
programme n'envoi rien. J'ai meme reboucler le tout sur un autre port comm
avec l'yperterminal mais je ne recois rien. Alors pourquoi je n'arrive a
rien envoyer ?

Et encore, je n'arrive pas a faire d'executable avec le VB6, pour lancer mon
programme il fait que j'ouvre VB puis le proget puis RUN, n'y a til pas
moyen de faire un executable, cela me faciliterais la tache car chaque essai
me mais la liaison serie en l'air, il faut que je reboot puisque le port
serie ne se ferme pas proprement apparament.

un grand merci a vous, je ne sais pas quoi faire? mon mscomm32.ocx n'est pas
bon ?

a plus
Emka

8 réponses

Avatar
Vincent Guichard
Celemka a écrit :
Bonjour,

etant novice j'ai fais de multiples recherches sur le net mais ne parvenant
pas à mes fins je me permet de vous demander ou j'ai faits des erreurs.

j'ai VB6 entreprises.
J'ai télecharger mscomm32.ocx je l'ai mis dans c:winntsystem32 ( win 2K)



Tu l'a téléchargé où? Ici:
http://activex.microsoft.com/controls/vb6/MSCOMM32.CAB ?

Puis j'ai fais : REGSVR32.EXE /u C:WindoxsSystem32MSCOMM32.OCX

puis j'ai telecharger

http://download.microsoft.com/download/vb60ent/Sample30/1/W9XNT4/EN-US/VB6CLI.EXE


http://download.microsoft.com/download/VB60Pro/Install/2/Win98/En-US/VBUSC.exe

que j'ai les ai executés sans problème.


Puis dans VB, je suis allez chercher le petit téléphone ( il n'est pas jaune
chez moi mais bleu une fois placer dans la Form ) et voici le code que
j'essai de faire marché



C'est bizarre ça. Mais bon...


Option Explicit
Private Sub Form_Load()
Form1.Caption = "App1"
With MSComm1 'configuration du port
.CommPort = 1 'On utilise le port COM1:
.Handshaking = 2 'RTS
.RThreshold = 1
.RTSEnable = True 'mieux pour le port COM:
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True 'ouverture du port
End With



Pourquoi du RTS? Si j'applique ton code tel que, le programme ne va
émettre que s'il en recoit l'autorisation. Tu as quelque chose (un
modem) qui l'autaurise à emmettre? Sinon, après un timeout, les données
seront perdues (et pas transmises).

Le probleme que j'ai est que j'arrive a lancer une fois le programe mais je
n'arrive rien envoyer et lorsque je ve le relancer il me dis que le port est
deja ouvert alors que je fais bien MSComm1.PortOpen = False dans
Form_Unload, mais bon c'est pas le plus grand des probleme.



Comment stoppes-tu ton programme? Directement par l'interface de VB?
alors, il n'est pas fermé correctement.

Sur ma liaison série j'ai des petite led TX et RX et rien de bouge donc mon
programme n'envoi rien. J'ai meme reboucler le tout sur un autre port comm
avec l'yperterminal mais je ne recois rien. Alors pourquoi je n'arrive a
rien envoyer ?


L'hyperterminal est-il configuré pour le protocole RTS?


Et encore, je n'arrive pas a faire d'executable avec le VB6, pour lancer mon
programme il fait que j'ouvre VB puis le proget puis RUN, n'y a til pas
moyen de faire un executable, cela me faciliterais la tache car chaque essai
me mais la liaison serie en l'air, il faut que je reboot puisque le port
serie ne se ferme pas proprement apparament.



Menu Fichier-> Créer Projet1.exe

un grand merci a vous, je ne sais pas quoi faire? mon mscomm32.ocx n'est pas
bon ?



Mon conseil serait de passer en mode sans handshake.


a plus
Emka



Vincent Guichard



Avatar
Celemka
Re

merci pour les réponses, je vais essayer de completé mes explications afin
d'arriver a bout de mon probleme

J'ai retelecharger mscomm32.ocx sur http://www.webzila.com/?wz=dll
elle fait 102Ko et la effectivement le petit télephone est jaune. Donc plus
de probleme de ce coté la.

Celle de ton lien semble identique ( 102Ko) il y a en plus un fichier inf
donc je ne sais pas koi faire avec.
mais je pense que REGSVR32.EXE remplace l'utilisation de ce INF.

Pourquoi du RTS? euh ... effectivement c'est un bout de code sources
copier de vbfrance et effectivement il pilotait un modem ... donc moi si
j'ai bien compris je n'ai ai pas besoin.

Effectivement j'ai elevé tout cela et j'arrive a ecrire "coucou" ou plus
precisement "oucou" , le premier "c" etait perdu je ne sais pas ou mais je
suis deja hyper content !!!

Comment stoppes-tu ton programme? Directement par l'interface de VB?
alors, il n'est pas fermé correctement.



ben oui, je clic sur le petit carré STOP

ben la ca marche du coup

L'hyperterminal est-il configuré pour le protocole RTS?
non il ne devais pas l'etre, mais a present ca marche
Merci pour la création d'executable, ca marche

Mon conseil serait de passer en mode sans handshake.
euh, c'est quoi en mode sans handshake ?

peut etre que c'est cela : j'ai lu qu'avec VB.NET ( donc la nouvelle version
de vb ) permet de faire des application comme VC++ ou on a pas besoin de dll
extern et ocx extern. C'est cela qui veut dire sans handshake ?

Sinon j'arrive bien a envoyer la chaine de caractere "coucou" mais si
m'aintenant je veux envoyer 0x01 0x47 0x03 0x44 0x04 je fais comment ?

j'ai essayer de remplacer Text1.Text = "coucou" par Text1.Text = "0x01 0x47
... "
mais cela me crache texto la meme chose sur l'hyperterminal.

En fait 01 47 03 44 04 est une commande (ascci) d'un protocole permettant
d'allumer une led sur une carte electronique( via max 232 ). et le but est
de pouvoir envoyer cela via le prob VB.

Pour le moment j'envoyer la commande via l'yperterm avec un fichier txt (
que je remplissais via Ultra Edit basculer en mode HEXA voici en fait ce que
j'aimerais envoyer " GD "

Merci pour votre aide
Emka



"Vincent Guichard" a écrit dans le message de
news:43d8a6a6$0$20180$
Celemka a écrit :
> Bonjour,
>
> etant novice j'ai fais de multiples recherches sur le net mais ne


parvenant
> pas à mes fins je me permet de vous demander ou j'ai faits des erreurs.
>
> j'ai VB6 entreprises.
> J'ai télecharger mscomm32.ocx je l'ai mis dans c:winntsystem32 ( win


2K)

Tu l'a téléchargé où? Ici:
http://activex.microsoft.com/controls/vb6/MSCOMM32.CAB ?

> Puis j'ai fais : REGSVR32.EXE /u C:WindoxsSystem32MSCOMM32.OCX
>
> puis j'ai telecharger
>
>


http://download.microsoft.com/download/vb60ent/Sample30/1/W9XNT4/EN-US/VB6CLI.EXE
>
>
>


http://download.microsoft.com/download/VB60Pro/Install/2/Win98/En-US/VBUSC.exe
>
> que j'ai les ai executés sans problème.
>
>
> Puis dans VB, je suis allez chercher le petit téléphone ( il n'est pas


jaune
> chez moi mais bleu une fois placer dans la Form ) et voici le code que
> j'essai de faire marché

C'est bizarre ça. Mais bon...

>
> Option Explicit
> Private Sub Form_Load()
> Form1.Caption = "App1"
> With MSComm1 'configuration du port
> .CommPort = 1 'On utilise le port COM1:
> .Handshaking = 2 'RTS
> .RThreshold = 1
> .RTSEnable = True 'mieux pour le port COM:
> .Settings = "9600,n,8,1"
> .SThreshold = 1
> .PortOpen = True 'ouverture du port
> End With

Pourquoi du RTS? Si j'applique ton code tel que, le programme ne va
émettre que s'il en recoit l'autorisation. Tu as quelque chose (un
modem) qui l'autaurise à emmettre? Sinon, après un timeout, les données
seront perdues (et pas transmises).

> Le probleme que j'ai est que j'arrive a lancer une fois le programe mais


je
> n'arrive rien envoyer et lorsque je ve le relancer il me dis que le port


est
> deja ouvert alors que je fais bien MSComm1.PortOpen = False dans
> Form_Unload, mais bon c'est pas le plus grand des probleme.

Comment stoppes-tu ton programme? Directement par l'interface de VB?
alors, il n'est pas fermé correctement.

> Sur ma liaison série j'ai des petite led TX et RX et rien de bouge donc


mon
> programme n'envoi rien. J'ai meme reboucler le tout sur un autre port


comm
> avec l'yperterminal mais je ne recois rien. Alors pourquoi je n'arrive a
> rien envoyer ?
L'hyperterminal est-il configuré pour le protocole RTS?

>
> Et encore, je n'arrive pas a faire d'executable avec le VB6, pour lancer


mon
> programme il fait que j'ouvre VB puis le proget puis RUN, n'y a til pas
> moyen de faire un executable, cela me faciliterais la tache car chaque


essai
> me mais la liaison serie en l'air, il faut que je reboot puisque le port
> serie ne se ferme pas proprement apparament.

Menu Fichier-> Créer Projet1.exe

> un grand merci a vous, je ne sais pas quoi faire? mon mscomm32.ocx n'est


pas
> bon ?

Mon conseil serait de passer en mode sans handshake.

>
> a plus
> Emka

Vincent Guichard
>


Avatar
Vincent Guichard
Celemka a écrit :
Re

merci pour les réponses, je vais essayer de completé mes explications afin
d'arriver a bout de mon probleme

J'ai retelecharger mscomm32.ocx sur http://www.webzila.com/?wz=dll
elle fait 102Ko et la effectivement le petit télephone est jaune. Donc plus
de probleme de ce coté la.

Celle de ton lien semble identique ( 102Ko) il y a en plus un fichier inf
donc je ne sais pas koi faire avec.
mais je pense que REGSVR32.EXE remplace l'utilisation de ce INF.


Oui, le inf sert à faire l'installation de l'ocx. D'une façon générale,
je ne saurais que te conseiller de privilégier les téléchargements
directs plutôt que de passer par une tierce personne (je ne connais pas
webzila, mais si microsoft fais une mise à jour du contrôle, y'a des
chances que leur site soit plus à jour que celui de Webzila ...)

Pourquoi du RTS? euh ... effectivement c'est un bout de code sources
copier de vbfrance et effectivement il pilotait un modem ... donc moi si
j'ai bien compris je n'ai ai pas besoin.



RTS, c'est pour Ready To Send. En gros, en plus des lignes Tx et Rx, on
utilises des lignes supplémentaires pour transmettre des informations de
contrôle. Le port com va dire: "J'ai quelque chose à dire", et va
attendre qu'on lui réponde "c'est bon, parle, je t'écoute". C'est ce
qu'on appelle le handshaking (ou poignée de main en français).
Tu peux choisir de te passer de protocole (ce que je te conseille),
utiliser un protocole matériel (le RTS), ou utiliser un protocole
logiciel (Xon Xoff). D'une façon générale, ça ne sert que si le débit
des données est plus rapide que leur traitement.
cela se règle par la valeur de MSComm1.Handshaking: 0 pour pas de
protocole, 1 pour XonXoff, 2 pour RTS et 3 pour un mélange de 1 et de 2.


Effectivement j'ai elevé tout cela et j'arrive a ecrire "coucou" ou plus
precisement "oucou" , le premier "c" etait perdu je ne sais pas ou mais je
suis deja hyper content !!!



Mouais, c'est bizarre ça.


Mon conseil serait de passer en mode sans handshake.


euh, c'est quoi en mode sans handshake ?



Voir ci-dessus

Sinon j'arrive bien a envoyer la chaine de caractere "coucou" mais si
m'aintenant je veux envoyer 0x01 0x47 0x03 0x44 0x04 je fais comment ?

j'ai essayer de remplacer Text1.Text = "coucou" par Text1.Text = "0x01 0x47
... "
mais cela me crache texto la meme chose sur l'hyperterminal.

En fait 01 47 03 44 04 est une commande (ascci) d'un protocole permettant
d'allumer une led sur une carte electronique( via max 232 ). et le but est
de pouvoir envoyer cela via le prob VB.

Pour le moment j'envoyer la commande via l'yperterm avec un fichier txt (
que je remplissais via Ultra Edit basculer en mode HEXA voici en fait ce que
j'aimerais envoyer " GD "




Si tu veux envoyer du binaire, c'est tout simple, fais le.
dim tab(5) as byte
tab(0) = &h01
tab(1) = &h47
tab(2) = &h03
tab(3) = &h44
tab(4) = &h04
MSComm1.Output = tab

Merci pour votre aide


> Emka

De rien. N'hésite pas à lire la documentation du contrôle MSComm. Si tu
n'as pas les CDs avec l'aide de VB6 et la MSDN, tu peux aller sur le
site de microsoft:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcomm.asp

Vincent Guichard
Avatar
Celemka
Bonjour,

Tout d'abord merci Vincent, j'ai l'impression que ca marche, cela est tres
basic pour l'instant mais il faut que j'avance a petit pas. Hier soir j'ai
commencer a lire un cours sur le VB.

On va donc arreter la pour ce post car la reponse est trouvé. Encore merci
Emka


"Vincent Guichard" a écrit dans le message de
news:43d8fbc0$0$29191$
Celemka a écrit :
> Re
>
> merci pour les réponses, je vais essayer de completé mes explications


afin
> d'arriver a bout de mon probleme
>
> J'ai retelecharger mscomm32.ocx sur http://www.webzila.com/?wz=dll
> elle fait 102Ko et la effectivement le petit télephone est jaune. Donc


plus
> de probleme de ce coté la.
>
> Celle de ton lien semble identique ( 102Ko) il y a en plus un fichier


inf
> donc je ne sais pas koi faire avec.
> mais je pense que REGSVR32.EXE remplace l'utilisation de ce INF.
Oui, le inf sert à faire l'installation de l'ocx. D'une façon générale,
je ne saurais que te conseiller de privilégier les téléchargements
directs plutôt que de passer par une tierce personne (je ne connais pas
webzila, mais si microsoft fais une mise à jour du contrôle, y'a des
chances que leur site soit plus à jour que celui de Webzila ...)

> Pourquoi du RTS? euh ... effectivement c'est un bout de code sources
> copier de vbfrance et effectivement il pilotait un modem ... donc moi si
> j'ai bien compris je n'ai ai pas besoin.

RTS, c'est pour Ready To Send. En gros, en plus des lignes Tx et Rx, on
utilises des lignes supplémentaires pour transmettre des informations de
contrôle. Le port com va dire: "J'ai quelque chose à dire", et va
attendre qu'on lui réponde "c'est bon, parle, je t'écoute". C'est ce
qu'on appelle le handshaking (ou poignée de main en français).
Tu peux choisir de te passer de protocole (ce que je te conseille),
utiliser un protocole matériel (le RTS), ou utiliser un protocole
logiciel (Xon Xoff). D'une façon générale, ça ne sert que si le débit
des données est plus rapide que leur traitement.
cela se règle par la valeur de MSComm1.Handshaking: 0 pour pas de
protocole, 1 pour XonXoff, 2 pour RTS et 3 pour un mélange de 1 et de 2.


> Effectivement j'ai elevé tout cela et j'arrive a ecrire "coucou" ou plus
> precisement "oucou" , le premier "c" etait perdu je ne sais pas ou mais


je
> suis deja hyper content !!!

Mouais, c'est bizarre ça.

>
>> Mon conseil serait de passer en mode sans handshake.
> euh, c'est quoi en mode sans handshake ?

Voir ci-dessus

> Sinon j'arrive bien a envoyer la chaine de caractere "coucou" mais si
> m'aintenant je veux envoyer 0x01 0x47 0x03 0x44 0x04 je fais comment ?
>
> j'ai essayer de remplacer Text1.Text = "coucou" par Text1.Text = "0x01


0x47
> ... "
> mais cela me crache texto la meme chose sur l'hyperterminal.
>
> En fait 01 47 03 44 04 est une commande (ascci) d'un protocole


permettant
> d'allumer une led sur une carte electronique( via max 232 ). et le but


est
> de pouvoir envoyer cela via le prob VB.
>
> Pour le moment j'envoyer la commande via l'yperterm avec un fichier txt


(
> que je remplissais via Ultra Edit basculer en mode HEXA voici en fait ce


que
> j'aimerais envoyer " GD "
>

Si tu veux envoyer du binaire, c'est tout simple, fais le.
dim tab(5) as byte
tab(0) = &h01
tab(1) = &h47
tab(2) = &h03
tab(3) = &h44
tab(4) = &h04
MSComm1.Output = tab

> Merci pour votre aide
> Emka

De rien. N'hésite pas à lire la documentation du contrôle MSComm. Si tu
n'as pas les CDs avec l'aide de VB6 et la MSDN, tu peux aller sur le
site de microsoft:



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcomm.asp

Vincent Guichard


Avatar
Celemka
Re,

Bon, me revoicit, en fait, cela ne marche pas tout a fait, a present j'ai
branché la carte electronique est lorsque j'envoie
0x01 0x47 0x03 0x44 0x04 rienne se passe pourtant l'info est bien partie
cette fois.

Voici mon code

**********************
Private Sub Command1_Click()

Dim tableau(5) As Byte

tableau(0) = &H1
tableau(1) = &H47
tableau(2) = &H3
tableau(3) = &H44
tableau(4) = &H4

MSComm1.Output = tableau

Text1.Text = tableau

Label3.Caption = tableau(0)
Label4.Caption = tableau(1)
Label5.Caption = tableau(2)
Label6.Caption = tableau(3)
Label7.Caption = tableau(4)

End Sub
*******************

En fait dans Label3 j'ai 01
Label4 j'ai 71
Label5 j'ai 01
Label6 j'ai 68
Label7 j'ai 01


en fait 71 est le caractere decimal de 0x47 et 68 de 0x44.

Ma question est : es ce que j'envoi bien 01 47 03 44 04 ? ou est que c'est
juste l'affichage des labels qui me le retourne en décimal. Sinon j'ai
chercher dans MSDN et je n'ai pas trouvé cette notation :"&H". Avez vous des
info la dessus ?

Merci d'avance.
Emka




"Celemka" a écrit dans le message de
news:43d9d958$0$26810$
Bonjour,

Tout d'abord merci Vincent, j'ai l'impression que ca marche, cela est tres
basic pour l'instant mais il faut que j'avance a petit pas. Hier soir j'ai
commencer a lire un cours sur le VB.

On va donc arreter la pour ce post car la reponse est trouvé. Encore merci
Emka


"Vincent Guichard" a écrit dans le message de
news:43d8fbc0$0$29191$
> Celemka a écrit :
> > Re
> >
> > merci pour les réponses, je vais essayer de completé mes explications
afin
> > d'arriver a bout de mon probleme
> >
> > J'ai retelecharger mscomm32.ocx sur http://www.webzila.com/?wz=dll
> > elle fait 102Ko et la effectivement le petit télephone est jaune. Donc
plus
> > de probleme de ce coté la.
> >
> > Celle de ton lien semble identique ( 102Ko) il y a en plus un fichier
inf
> > donc je ne sais pas koi faire avec.
> > mais je pense que REGSVR32.EXE remplace l'utilisation de ce INF.
> Oui, le inf sert à faire l'installation de l'ocx. D'une façon générale,
> je ne saurais que te conseiller de privilégier les téléchargements
> directs plutôt que de passer par une tierce personne (je ne connais pas
> webzila, mais si microsoft fais une mise à jour du contrôle, y'a des
> chances que leur site soit plus à jour que celui de Webzila ...)
>
> > Pourquoi du RTS? euh ... effectivement c'est un bout de code sources
> > copier de vbfrance et effectivement il pilotait un modem ... donc moi


si
> > j'ai bien compris je n'ai ai pas besoin.
>
> RTS, c'est pour Ready To Send. En gros, en plus des lignes Tx et Rx, on
> utilises des lignes supplémentaires pour transmettre des informations de
> contrôle. Le port com va dire: "J'ai quelque chose à dire", et va
> attendre qu'on lui réponde "c'est bon, parle, je t'écoute". C'est ce
> qu'on appelle le handshaking (ou poignée de main en français).
> Tu peux choisir de te passer de protocole (ce que je te conseille),
> utiliser un protocole matériel (le RTS), ou utiliser un protocole
> logiciel (Xon Xoff). D'une façon générale, ça ne sert que si le débit
> des données est plus rapide que leur traitement.
> cela se règle par la valeur de MSComm1.Handshaking: 0 pour pas de
> protocole, 1 pour XonXoff, 2 pour RTS et 3 pour un mélange de 1 et de 2.
>
>
> > Effectivement j'ai elevé tout cela et j'arrive a ecrire "coucou" ou


plus
> > precisement "oucou" , le premier "c" etait perdu je ne sais pas ou


mais
je
> > suis deja hyper content !!!
>
> Mouais, c'est bizarre ça.
>
> >
> >> Mon conseil serait de passer en mode sans handshake.
> > euh, c'est quoi en mode sans handshake ?
>
> Voir ci-dessus
>
> > Sinon j'arrive bien a envoyer la chaine de caractere "coucou" mais si
> > m'aintenant je veux envoyer 0x01 0x47 0x03 0x44 0x04 je fais comment


?
> >
> > j'ai essayer de remplacer Text1.Text = "coucou" par Text1.Text = "0x01
0x47
> > ... "
> > mais cela me crache texto la meme chose sur l'hyperterminal.
> >
> > En fait 01 47 03 44 04 est une commande (ascci) d'un protocole
permettant
> > d'allumer une led sur une carte electronique( via max 232 ). et le but
est
> > de pouvoir envoyer cela via le prob VB.
> >
> > Pour le moment j'envoyer la commande via l'yperterm avec un fichier


txt
(
> > que je remplissais via Ultra Edit basculer en mode HEXA voici en fait


ce
que
> > j'aimerais envoyer " GD "
> >
>
> Si tu veux envoyer du binaire, c'est tout simple, fais le.
> dim tab(5) as byte
> tab(0) = &h01
> tab(1) = &h47
> tab(2) = &h03
> tab(3) = &h44
> tab(4) = &h04
> MSComm1.Output = tab
>
> > Merci pour votre aide
> > Emka
>
> De rien. N'hésite pas à lire la documentation du contrôle MSComm. Si tu
> n'as pas les CDs avec l'aide de VB6 et la MSDN, tu peux aller sur le
> site de microsoft:
>



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcomm.asp
>
> Vincent Guichard




Avatar
Celemka
Re bonjour,

Avez une réponse pour envoyer directement un code hexa sur le port série ?

Merci d'avance


"Celemka" a écrit dans le message de
news:43da32e4$0$26830$
Re,

Bon, me revoicit, en fait, cela ne marche pas tout a fait, a present j'ai
branché la carte electronique est lorsque j'envoie
0x01 0x47 0x03 0x44 0x04 rienne se passe pourtant l'info est bien partie
cette fois.

Voici mon code

**********************
Private Sub Command1_Click()

Dim tableau(5) As Byte

tableau(0) = &H1
tableau(1) = &H47
tableau(2) = &H3
tableau(3) = &H44
tableau(4) = &H4

MSComm1.Output = tableau

Text1.Text = tableau

Label3.Caption = tableau(0)
Label4.Caption = tableau(1)
Label5.Caption = tableau(2)
Label6.Caption = tableau(3)
Label7.Caption = tableau(4)

End Sub
*******************

En fait dans Label3 j'ai 01
Label4 j'ai 71
Label5 j'ai 01
Label6 j'ai 68
Label7 j'ai 01


en fait 71 est le caractere decimal de 0x47 et 68 de 0x44.

Ma question est : es ce que j'envoi bien 01 47 03 44 04 ? ou est que


c'est
juste l'affichage des labels qui me le retourne en décimal. Sinon j'ai
chercher dans MSDN et je n'ai pas trouvé cette notation :"&H". Avez vous


des
info la dessus ?

Merci d'avance.
Emka




"Celemka" a écrit dans le message de
news:43d9d958$0$26810$
> Bonjour,
>
> Tout d'abord merci Vincent, j'ai l'impression que ca marche, cela est


tres
> basic pour l'instant mais il faut que j'avance a petit pas. Hier soir


j'ai
> commencer a lire un cours sur le VB.
>
> On va donc arreter la pour ce post car la reponse est trouvé. Encore


merci
> Emka
>
>
> "Vincent Guichard" a écrit dans le message


de
> news:43d8fbc0$0$29191$
> > Celemka a écrit :
> > > Re
> > >
> > > merci pour les réponses, je vais essayer de completé mes


explications
> afin
> > > d'arriver a bout de mon probleme
> > >
> > > J'ai retelecharger mscomm32.ocx sur http://www.webzila.com/?wz=dll
> > > elle fait 102Ko et la effectivement le petit télephone est jaune.


Donc
> plus
> > > de probleme de ce coté la.
> > >
> > > Celle de ton lien semble identique ( 102Ko) il y a en plus un


fichier
> inf
> > > donc je ne sais pas koi faire avec.
> > > mais je pense que REGSVR32.EXE remplace l'utilisation de ce INF.
> > Oui, le inf sert à faire l'installation de l'ocx. D'une façon


générale,
> > je ne saurais que te conseiller de privilégier les téléchargements
> > directs plutôt que de passer par une tierce personne (je ne connais


pas
> > webzila, mais si microsoft fais une mise à jour du contrôle, y'a des
> > chances que leur site soit plus à jour que celui de Webzila ...)
> >
> > > Pourquoi du RTS? euh ... effectivement c'est un bout de code


sources
> > > copier de vbfrance et effectivement il pilotait un modem ... donc


moi
si
> > > j'ai bien compris je n'ai ai pas besoin.
> >
> > RTS, c'est pour Ready To Send. En gros, en plus des lignes Tx et Rx,


on
> > utilises des lignes supplémentaires pour transmettre des informations


de
> > contrôle. Le port com va dire: "J'ai quelque chose à dire", et va
> > attendre qu'on lui réponde "c'est bon, parle, je t'écoute". C'est ce
> > qu'on appelle le handshaking (ou poignée de main en français).
> > Tu peux choisir de te passer de protocole (ce que je te conseille),
> > utiliser un protocole matériel (le RTS), ou utiliser un protocole
> > logiciel (Xon Xoff). D'une façon générale, ça ne sert que si le débit
> > des données est plus rapide que leur traitement.
> > cela se règle par la valeur de MSComm1.Handshaking: 0 pour pas de
> > protocole, 1 pour XonXoff, 2 pour RTS et 3 pour un mélange de 1 et de


2.
> >
> >
> > > Effectivement j'ai elevé tout cela et j'arrive a ecrire "coucou" ou
plus
> > > precisement "oucou" , le premier "c" etait perdu je ne sais pas ou
mais
> je
> > > suis deja hyper content !!!
> >
> > Mouais, c'est bizarre ça.
> >
> > >
> > >> Mon conseil serait de passer en mode sans handshake.
> > > euh, c'est quoi en mode sans handshake ?
> >
> > Voir ci-dessus
> >
> > > Sinon j'arrive bien a envoyer la chaine de caractere "coucou" mais


si
> > > m'aintenant je veux envoyer 0x01 0x47 0x03 0x44 0x04 je fais


comment
?
> > >
> > > j'ai essayer de remplacer Text1.Text = "coucou" par Text1.Text "0x01
> 0x47
> > > ... "
> > > mais cela me crache texto la meme chose sur l'hyperterminal.
> > >
> > > En fait 01 47 03 44 04 est une commande (ascci) d'un protocole
> permettant
> > > d'allumer une led sur une carte electronique( via max 232 ). et le


but
> est
> > > de pouvoir envoyer cela via le prob VB.
> > >
> > > Pour le moment j'envoyer la commande via l'yperterm avec un fichier
txt
> (
> > > que je remplissais via Ultra Edit basculer en mode HEXA voici en


fait
ce
> que
> > > j'aimerais envoyer " GD "
> > >
> >
> > Si tu veux envoyer du binaire, c'est tout simple, fais le.
> > dim tab(5) as byte
> > tab(0) = &h01
> > tab(1) = &h47
> > tab(2) = &h03
> > tab(3) = &h44
> > tab(4) = &h04
> > MSComm1.Output = tab
> >
> > > Merci pour votre aide
> > > Emka
> >
> > De rien. N'hésite pas à lire la documentation du contrôle MSComm. Si


tu
> > n'as pas les CDs avec l'aide de VB6 et la MSDN, tu peux aller sur le
> > site de microsoft:
> >
>



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcomm.asp
> >
> > Vincent Guichard
>
>




Avatar
Vincent Guichard
> Ma question est : es ce que j'envoi bien 01 47 03 44 04 ?


Tu envoyes 5 octets, de valeurs décimale { 1, 71, 3, 68, 4 }, soit { 1,
47, 3, 44, 4} en hexadécimal.

ou est que c'est
juste l'affichage des labels qui me le retourne en décimal.


Le programme ne garde pas en mémoire le format dans lequel tu as saisi
les valeurs numériques dans le source, seulement leur valeur. et par
défaut, l'expression d'une valeur numérique dans un label se fait au
format décimal. Si tu veux l'afficher en hexadécimal, tu dois utiliser
la fonction Hex$().

Sinon j'ai
chercher dans MSDN et je n'ai pas trouvé cette notation :"&H". Avez vous des
info la dessus ?


Oui, cela sert à indiquer que la valeur qui le suit est écrite en
hexadécimal. C'est comme '0x' en C ou C++.

Merci d'avance.
Emka



De rien,

Vincent Guichard
Avatar
Vincent Guichard
Celemka a écrit :
Re bonjour,

Avez une réponse pour envoyer directement un code hexa sur le port série ?



Qu'entendez vous par 'envoyer directement un code hexa'?
La proporiété Output du controle accepte en entrée une chaine (s as
String) ou un tableau d'octets (tab() as Byte). Et c'est tout.

Vincent Guichard