Récupération d'octets sur port série

etudeselectroniques Messages postés 9 Date d'inscription mercredi 28 janvier 2004 Statut Membre Dernière intervention 28 juin 2010 - 2 juin 2005 à 18:01
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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?

Merci

Tong Raider

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Rejoignez-nous