OVH Cloud OVH Cloud

Code ASCII

3 réponses
Avatar
Nicolas TURPIN
Bonjour.

J'ai un soucis pour lequel je ne trouve pas de solution :
J'ai une liaison série avec un périphérique (caméra). Je communique donc via
une RS232 en envoyant des caractères vers mon périphérique.
Mais certain caractères ne correspondent pas au résultat attendu !!

le genre :
char Car = '\0x88';
ou
char Car = '\u0088';
ou
string Chaine = "\x88";

ne correpondent en rien au caractère dont le code ASCII est 0x88 (ou 136 en
décimal).

Certains code passe très bien ( char Car = '\0xFF'; donne bien 'ÿ').

Qqun a t il une idée ?

3 réponses

Avatar
Ambassadeur Kosh
peut être l'encodage ?
le basic ne change rien à l'affaire
regarde dans les methodes static de char, il y'a peut être des réponses.

sinon, à froid, comme ça, pas d'idées precises.
Avatar
Nicolas TURPIN
Pour info, si j'utilise

System.Convert.ToString(Microsoft.VisualBasic.Strings.Chr((int)0x88));

le bon vieux Chr du basic, j'ai bien le résultat attendu !!
Avatar
Zazar
Bonsoir,

J'ai un soucis pour lequel je ne trouve pas de solution :
J'ai une liaison série avec un périphérique (caméra). Je communique donc


via
une RS232 en envoyant des caractères vers mon périphérique.
Mais certain caractères ne correspondent pas au résultat attendu !!

le genre :
char Car = 'x88';
ou
char Car = 'u0088';
ou
string Chaine = "x88";

ne correpondent en rien au caractère dont le code ASCII est 0x88 (ou 136


en
décimal).

Certains code passe très bien ( char Car = 'xFF'; donne bien 'ÿ').

Qqun a t il une idée ?



Comme l'a dit ambassadeur kosh, c'est une histoire d'encodage.
Quand vous faîtes 'x88', vous obtenez le caractère 0x88 de la table
unicode et non pas de la table ascii. Au passage, au delà du caractère 127,
on ne parle plus d'ascii mais d'ascii étendu, et il en existe plusieurs
versions : à priori vous parlez de la version Ansi (caractère 255 = ÿ).
Les tables unicode et ansi ont des caractères en commun, mais pas tous. Dans
l'espace de nom System.Text, vous avez des classes vous permettant de
convertir les chaînes de caractères en tableaux de byte et vice-versa en
fonction de l'encodage choisi. (L'encodage Ansi correspondant à
Encoding.Default sous un windows européen).
Si la fonction chr de VB vous donne le bon résultat, c'est qu'elle renvoie
non pas le caractère unicode, mais le caractère dans l'encodage par défaut
du système, en ANSI donc.

--
Zazar