Problème pgm VB6.0 et COMM1

Résolu
Tgrafik Messages postés 8 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 19 septembre 2006 - 25 juin 2006 à 22:03
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 26 juin 2006 à 08:04
J'ai un problème avec mon port série sous visual basic 6 : je viens d'écrire une application VB6.0 et
je n'ai rien du tout en sortie de mon port comm1 lorsque j'utilise MScomm (PORT SÉRIE RS232).
Je suis capable de recevoir des messages mais je ne peux en envoyer. Je voudrai donc savoir d'ou vient le problème. Est-ce une dll manquante, une composante à ajouté, version Windows XP PRO INCOMPATIBLE, etc... ???

Ghis.

6 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 juin 2006 à 22:38
Effectivement le problème vient surrement des commandes que tu envois.

Apparement ce que tu souhaite envoyer ce sont des séquences dites d'échappement et il faut bien les envoyer en hexa et non pas en caractères comme tu fait. Il ne faut pas envoyer les caractères "1" et "b" mais le caractère correspondant au code hexa "1b" (qui est le caractère correspondant à la commande ESCape d'ou le nom de séquence d'échappement)

Je te donne la première convertion, tu fera les suivantes.

MSComm1.Output = Chr$(&H1B) & Chr$(&H32) & Chr$(&H0)

&H pour dire que c'est de l'hexa,
Chr$() pour récupérer le caractère correspondant à ton code hexa.

Sevyc64  (alias Casy)

<hr /># Le partage est notre force #
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 juin 2006 à 22:11
Si tu reçois correctement des messages sur ton port, le problème ne viens pas d'une dll ou de Windows. Le composant fonctionne correctement. Il n'y a rien à rajouter. Win XP Pro est parfaitement compatible avec MsComm.

Au pire ton port est physiquement grillé en sortie suite à une mauvaise manip de ta part.

Sinon le problème vient de ton programme.

Sevyc64  (alias Casy)

<hr /># Le partage est notre force #
0
Tgrafik Messages postés 8 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 19 septembre 2006
25 juin 2006 à 22:24
Je ne crois pas que mon Port est grillé comme tu dis, mais j'ai été tester mon pgm sur un autre poste et j'ai le même problème.

Je te met un bout de code que j'utilise et tu verras peut-être des choses que j'ignore.

'*** par défaut j'assigne COMM1
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputMode = comInputModeText
MSComm1.RThreshold = 1     'permet de gérer l'événement CommEvent : réception
MSComm1.SThreshold = 1     'permet de gérer l'événement CommEvent : envoi


    '*** envoie commande au port COMMx
On Error Resume Next
MSComm1.Output = "1b 32 00"     '* clear tous les buffers
Call hb_ms_sleep(230)
On Error Resume Next
MSComm1.Output = "1b 40 00"     '*** K1b4000
Call hb_ms_sleep(55)

Le problème est peut être que les commandes que j'envoie à mon interface ne sont pas reçu est Hex, mais je ne sais pas comment l'interface recoit les commandes que je lui envoie. Je sais que la commande "1b 32 00" est en Hexa mais MSComm1.Output = "1b 32 00" est envoyé en caractère . Je ne sais plus quoi penser !.

Merci de m'éclairer.

Ghis.
0
Tgrafik Messages postés 8 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 19 septembre 2006
25 juin 2006 à 23:07
Cevic64, toi être un  GÉNIE .

Ça fonctionne. C'était ça le truc les regrouper par 2, j'avais essayer en les envoyant 1 par 1 et il ne faut pas c'est du Hexa il faut y aller par groupe de 2.

Bravo et
   Un gros merci.


Ghis.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tgrafik Messages postés 8 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 19 septembre 2006
26 juin 2006 à 00:32
J'ai un autre problème avec la commande suivante:
Si je fais cette commande :

MSComm1.Output = Chr$(&H1) & Chr$(&H10) & Chr$(&H2) & Chr$(&H3)
Ceci fonctionne parfaitement.

Mais ceci me cause un problème:
MaZoneTransmission.Caption = Chr$(&H1) & Chr$(&H10) & Chr$(&H2) & Chr$(&H3)
MSComm1.Output = MaZoneTransmission.Caption

Aussitôt  que je met ma commande dans une variable et que je veux exécuter le contenu de ma variable ça ne fonctionne plus. Comment puis faire pour exécuter les commandes en Hexa contenu dans une variable.

Merci.
Ghis.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 juin 2006 à 08:04
Tu ne les met pas dans une variable mais dans un controle. De manière générale les controles ne gerent ou très mal les caractères dit non affichable (en gros <&h20 et >&h7F).

Ce que tu peux faire c'est passer par une variable intermédiaire.

dim chnTrans as String
chnTrans = Chr$(&H1) & Chr$(&H10) & Chr$(&H2) & Chr$(&H3)
MSComm1.Output = chnTrans
' et si tu veux l'affichée quand meme
MaZoneTransmission.Caption = chnTrans

Sevyc64  (alias Casy)

<hr />
0
Rejoignez-nous