Utilisation de Chr() & ascii étendue dans VB 2005

Résolu
supergalaboy Messages postés 6 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 janvier 2010 - 13 janv. 2010 à 15:22
supergalaboy Messages postés 6 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 janvier 2010 - 13 janv. 2010 à 18:15
Bonjour,

Je suis entrain de développer une application sous VB2005. J'utilise le serialport pour communiquer avec un automate. Je dois envoyer sur le bus des trames de la forme DD 11 00 01 EE 33. Dans mon programme, j'utilise la fonction Chr() et j'envoie:

RS232.Write(Chr(&HDD) & Chr(&H11) & Chr(&H0) & Chr(&H1) & Chr(&HEE) & Chr(&H33))

La fonction Chr() me permet de voir directement sur le bus le caractère HEXA plutôt que l'ascii.

Le petit souci que je rencontre vient donc du fait que lorsque j'envoie Chr(&HDD), l'affichage HEXA que je retrouve sur le bus n'est pas DD mais 3F et idem pour le Chr(&HEE) qui me retourne 3F. Ce qui transite sur le bus est donc : 3F 11 00 01 3F 33

Après quelques tests, je me suis rendu compte que dès que j'envoyais un Chr() d'une valeur se trouvant dans la table ascii étendu, la valeur envoyée par le sérialport était de 3F.

Je suppose que la solution est toute bête mais je ne sais pas ce qu'il faut déclarer dans VB pour que le programme utilise la table étendue de l'ascii au lieu de se contenter de la normale.

Merci d'avance de votre soutien

Ciao
A voir également:

5 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
13 janv. 2010 à 15:47
Salut
Bizarre.
Es-tu sûr de ta méthode de lecture, car c'est peut-être elle qui fait cette conversion ?

As-tu essayé ce genre de méthode :
        Dim aBuffer As Byte() = {&HDD, &H11, &H0, &H1, &HEE, &H33}
        SerialPort1.Write(aBuffer, 0, aBuffer.Length)

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)
3
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
13 janv. 2010 à 17:20
RE

Non je n'avais rien déclaré en tête de mon programme. Par contre j'étais en VB.Net 2002 et avec le composant MSCOMM pas avec le serial port.

As-tu essayé la solution de Jack ? Car je crois que cela doit marcher.

Après une recherche sur google :
(idem que la solution proposé par Jack)
http://bytes.com/topic/visual-basic-net/answers/679710-help-sending-hex-data-through-serialport

@+LIM
3
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
13 janv. 2010 à 16:00
Salut,

J'ai eu le même problème

essaye d'envoyer ta trame de cette manière

serialport.write(Chr(val("&HDD&")) & Chr(val("&H11&")) & Chr(val("&H0&")) & Chr(val("&H1&")) & Chr(val("&HEE&")) & Chr(val("&H33&")))

cela devrait fonctionner

@+LIM
0
supergalaboy Messages postés 6 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 janvier 2010
13 janv. 2010 à 16:45
Salut lim,

merci pour ta réponse cependant, j'ai toujours le même problème lors de l'envoi. Avais-tu déclarer des choses en tête de ton programme?

Pour ma part, après des recherches, j'ai ajouté:

Imports System.Text.UTF8Encoding
Imports Microsoft.VisualBasic.Strings
Imports Microsoft.VisualBasic.Conversion
Imports System.Globalization.TextInfo

en pensant que ça aiderait mais je n'arrive pas à avoir de l'ascii étendue.

Si une autre idée te passe par la tête, n'hésite pas je suis preneur.

@+
0

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

Posez votre question
supergalaboy Messages postés 6 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 13 janvier 2010
13 janv. 2010 à 18:15
RE,

je n'avais pas vu la réponse de Jack. Cela fonctionne maintenant.

Merci à vous deux pour votre aide.

Ciao
0
Rejoignez-nous