buzzo182
Messages postés3Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention 2 juin 2008
-
30 mai 2008 à 20:55
buzzo182
Messages postés3Date d'inscriptionjeudi 24 mai 2007StatutMembreDerniè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 ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
buzzo182
Messages postés3Date d'inscriptionjeudi 24 mai 2007StatutMembreDerniè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.
Vous n’avez pas trouvé la réponse que vous recherchez ?