Tgrafik
Messages postés8Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention19 septembre 2006
-
25 juin 2006 à 22:03
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 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... ???
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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.
'*** 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 !.
Tgrafik
Messages postés8Date d'inscriptionvendredi 3 mars 2006StatutMembreDernière intervention19 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
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.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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