Envoi de caractere > 127 par serialport

survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 - 12 janv. 2007 à 14:44
survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 - 14 janv. 2007 à 14:08
Salut j'essaie d'envoyer des char par serialport et lorsque j'essaie d'envoyer  '\xA5' il m'envoie un joil yen ( 157)
Quelqu'un aurait-il une idée ?

www.survey-copter.com

4 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
12 janv. 2007 à 14:58
La cause la plus probable est que la fréquence utilisée est différente entre l'émission et la réception (donc forcément ca déforme l'intéprétation du signal recu).

imagine (en gros) que tu envoie a 9600 et que le périphérique recoit a 4800. Le périphérique interpret seulement la moitié du signal éléctrique (en gros hein).
0
survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 3
12 janv. 2007 à 15:06
Non en fait le truc est plus raide que ça . Le probleme vient du codage des données
Cette fonction envoie un byte si j'envoie 165 le caractere recue à hyperterminal ressemble à un  'n' avec un accent => c'est le bon code ascii
private
void Transmit(
byte octet)
{
//envoi d'un octet
byte[] cbuf =
new
byte[1];
cbuf[0] = octet;
serialPort1.Write(cbuf,0,1) ;
}

Si j'utilise
private void Transmit(char octet)
{ //envoi d'un octet
char[] cbuf = new char[1];
string ChaineSortie;
cbuf[0] = octet;
ChaineSortie = new string(cbuf);
serialPort1.Write(ChaineSortie);
}
En l'appellant avec
Transmit(Convert.ToChar(165) );
Je recois un '? ' => mauvais code ascii

Je cherche donc une methode pour faire la conversion byte to char avec le code ascii etendu (0 à 255)
www.survey-copter.com
0
LUDINSKI Messages postés 441 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 22 mai 2012 8
12 janv. 2007 à 18:32
Salut Survcopt,

As-tu essayé de "caster" tout simplement ton byte :
char character = (char)165;

Si je me rappel bien, ça devrait faire l'affaire...
0
survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 3
14 janv. 2007 à 14:08
Ouais en fait j'avais deja essayè mais comme on depasse les 127 et on est dans les caractères entendus , il me sort le caractere ASCI correspondant au 157 au lieu du 165.
J'ai trouvé une autre solution en utilisant que des bytes avec des tableaux de bytes pour ne pas avoir de probleme.

www.survey-copter.com
0
Rejoignez-nous