Lecture d'un octet avec MSCOMM

Résolu
buzzo182 Messages postés 3 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 2 juin 2008 - 30 mai 2008 à 20:55
buzzo182 Messages postés 3 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 2 juin 2008 - 2 juin 2008 à 09:22
Bonjour,

J'ai établi une communication série RS232 entre une application VB et un hyperterminal. Les transmissions se passent correctement.
Dans mon application VB je n'arrive pas à lire les valeurs codés entre 0x00 et 0x1F (en gros tous les codes ascii qui ne correspondants pas à des charactères ex:"ETX", "EOT","US"...).

mscomm.Input me retourne donc un charactère mais semble passer à la trappe les codes de 0x00 à 0x1F (la lecture me retourne une chaine de charactère vide).
J'ai essayé de configurer ma liaison en binary mode (mscomm.InputMode = comInputModeBinary) mais je ne vois aucun changement.
J'ai également essayé de convertir le charactère (code) dès sa réception en entier mais je lève l'erreur "type incompatible".

Auriez-vous une idée de configuration me permattant de lire l'intégralité des codes que je reçois sur ma liaison série ?

Merci d'avance,
Matthieu.

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
30 mai 2008 à 22:40
Et oui, tu l'as dit : "...en gros tous les codes ascii qui ne correspondants pas à des charactères...", donc des caractères non affichables qui ne sont donc pas affichés par le popup

Pour les afficher comme d'ailleurs pour répondre à ta question, regarde du coté de la fonction Asc qui va te renvoyer la valeur ascii du caractère reçu

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
31 mai 2008 à 00:49
Salut
Ce qui arrive sur un port Com est toujours une valeur numérique (Byte).
C'est le mode de lecture que tu utilises qui fait que tu le verras sous forme de caractères si tu lis une String, ou sous forme d'un tableau de Byte si tu lis un tableau de Bytes.
Puisque certains caractères n'ont pas de représentation graphique, c'est à toi de ressortir et d'analyser chacun des caractères récupérés si tu lis sous forme String.

Un caractère est un Byte (octet).
Le code d'un des octets est le code ASCII d'un caractère.
Il faut isoler chaque caractère de la String --> Mid
Utiliser la fonction ASC pour avoir la représentation numérique
Eventuellement Hex pour avoir la valeur en hexa

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 41
30 mai 2008 à 21:01
Etrange, je ne me souviens pas d'avoir rencontré ce problème.

Comment fais-tu pour voir tes caractères reçus ?

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
buzzo182 Messages postés 3 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 2 juin 2008
30 mai 2008 à 22:33
J'observe ma donnée par le pop up qui s'affiche lorsque l'on s'arrête sur une variable un mode pas à pas. A y réfléchir c'est pas des plus malin...C'est certainement pour cette raison que je ne vois pas l'ensemble des charactères...
J'ai fait le test suivant :
mscomm.Output = mscomm.Input

Et ça marche! je retourne bien l'integralité des charactères que j'envoi.
J'avais donc mal cerné mon problème. Merci casy.

Mon objectif est de reconstruire un nombre de 4 octets. Ce nombre à été décomposé octets par octets pour permettre sont envoi par liaison série.

Mon problème est donc désormais de savoir comment convertir chaque octet reçu en sa valeur décimale (ou hexa).
 
Auriez vous une idée ?

Matthieu.
0

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

Posez votre question
buzzo182 Messages postés 3 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 2 juin 2008
2 juin 2008 à 09:22
Bonjour,

Un grand merci pour tous vos conseils. L'utilisation de la fonction ASC résoud mon problème !

Matthieu.
0