etudeselectroniques
Messages postés9Date d'inscriptionmercredi 28 janvier 2004StatutMembreDernière intervention28 juin 2010
-
2 juin 2005 à 18:01
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
2 juin 2005 à 18:18
Hello,
je souhaite récupérer via le port série les octets rentrant. La manière classique est un truc dans ce style : Buffer = Buffer & COM1.Input avec buffer déclaré en string. Il n'y a pas de pb pour récupérer des caractère alphanumériques, mais lorsque je reçois des trucs du genre $10 ou autre, les infos sont perdues et remplacées par des trucs à la con du genre un carré. Ce qui me faudrait, c'est récupérer chaque octet rentrant et les ranger dans un tableau au fur et à mesure. Remarque: j'ai le même problème pour récupérer caractère par caractère le contenu d'une textbox, comment démonté un type Text pour le décomposer en éléments simple?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 2 juin 2005 à 18:14
Salut
Oui, normal.
Le COM1.Input récupère une chaine. Si tu veux récupérer les chiffres associés (de 0 à 255), à toi de convertir chaque caractère par son code ASCII :
For r = 1 To Len(Buffer)
Debug.Print Asc(Mid(Buffer, r, 1))
Next r
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 2 juin 2005 à 18:15
Tes caractères ne sont pas perdus, ce sont des caractères non
affichables. Par conséquent Windows ne pouvant pas les affichés les
remplace par un petit carré. Mais ces codes sont toujours présents dans
ta chaine de caractère. Si tu fais un asc(----) sur ce caratère, tu
verra que la valeur retournée est bien la valeur reçu sur le port série
(&h10 pour le saut de ligne dans l'exemple que tu donne).
A toi de traiter ta chaine et d'interpreter ces caractères selon ton besoin.
<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 2 juin 2005 à 18:18
re
Ou alors, ce que tu reçois fait partie d'une trame : Il faudrait se renseigner pour savoir si chaque chiffre (passé en chaine ou en ascii ?) est séparé l'un de l'autre par un caractère spécial, genre Chr(0) --> Dans ce cas, il faudrait les détecter et faire des coupures de données pour récupérer ce qui est à l'intérieur.
Le plus simple est d'afficher (dans la fenêtre de debug par exemple), la suite de code ascii envoyés (comme expliqué dans le précédent post) et rechercher des codes ascii qui reviennent souvent : il s'agira surement d'un séparateur
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)