Utilisation de Chr() & ascii étendue dans VB 2005 [Résolu]

supergalaboy 6 Messages postés mardi 30 mai 2006Date d'inscription 13 janvier 2010 Dernière intervention - 13 janv. 2010 à 15:22 - Dernière réponse : supergalaboy 6 Messages postés mardi 30 mai 2006Date d'inscription 13 janvier 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 13 janv. 2010 à 15:47
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
cs_lim 329 Messages postés jeudi 20 novembre 2003Date d'inscription 10 mai 2014 Dernière intervention - 13 janv. 2010 à 17:20
3
Merci
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

Merci cs_lim 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_lim
cs_lim 329 Messages postés jeudi 20 novembre 2003Date d'inscription 10 mai 2014 Dernière intervention - 13 janv. 2010 à 16:00
0
Merci
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
Commenter la réponse de cs_lim
supergalaboy 6 Messages postés mardi 30 mai 2006Date d'inscription 13 janvier 2010 Dernière intervention - 13 janv. 2010 à 16:45
0
Merci
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.

@+
Commenter la réponse de supergalaboy
supergalaboy 6 Messages postés mardi 30 mai 2006Date d'inscription 13 janvier 2010 Dernière intervention - 13 janv. 2010 à 18:15
0
Merci
RE,

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

Merci à vous deux pour votre aide.

Ciao
Commenter la réponse de supergalaboy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.