cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 2011
-
20 déc. 2006 à 11:10
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 2011
-
20 déc. 2006 à 14:07
Bonjour à tous,
Voici ma config:
J'ai relié le port COM1 au port COM2 par un cable série croisé, ce qui me permet de visualiser ce que j'envoie sur le port COM1 gràce à un logiciel de récupération de donnée (docklight).
Sur le port COM1, je bascule entre plusieurs méthodes pour écrire cette la phrase "Bonjour à toi Jéjé.":
1 - J'ai installé une imprimante générique texte, et je fait imprimer depuis le bloc notes -> CA MARCHE !
2 - Je passe par l'hyperterminal -> CA MARCHE (mais dans la zone texte de l'hyperterminal, il me remplace les à par Ô et les é par ù majuscule... Pas grave).
3 - Je passe par mon application -> CA NE MARCHE PAS (il me renvoie toujours "Bonjour ? toi J?j?.").
Pourtant, je fait simplement:
...SerialPort1.WriteLine(textbox1.text)
et aussi, pour tester:
...SerialPort1.WriteLine("Bonjour à toi Jéjé.")
et carrément:
...SerialPort1.WriteLine("Bonjour à toi J" & convert.toChar(233) &"jé.")
Mais rien à faire, il me remplace toujours les caractères propres à la table Française par le code ASCII 063.
(j'ai essayé de brancher une imprimante sur le COM1, et le résultat est le même)
Qu'est ce qu'il se passe ?
A voir également:
[VB2005] Serialport->Transformation de caractères accentués
Or:
SerialPort1.WriteLine((New System.Text.UTF8Encoding).GetBytes(txtRendu.Text))
me fait une erreur: Value of type '1-dimensional array of Byte' cannot be converted to 'String'.
Pas toi ?
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 20 déc. 2006 à 13:13
Bon, j'ai réussi à envoyer ma chaine en UTF8:
SerialPort1.Write((
New System.Text.UTF8Encoding).GetBytes(txtRendu.Text & vbCrLf), 0, txtRendu.Text.Length)
Seulement, le résultat est le même que quand je faisait:
SerialPort1.Encoding = System.Text.Encoding.UTF8
Juste avant le writeline
Ca me rend: "Bonjour Â[espace] toi jÂ[copyright]jÂ[copyright]"
Code ASCII: 195 et 169 au lieu de 233.
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 20 déc. 2006 à 13:24
Non justement, je fait client serveur pour les tests, sinon, c'est une imprimante.
En Unicode, le é est bien reproduit, seulement, il met un NULL entre chaque caractère.
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 20 déc. 2006 à 13:28
Bonjour
C'est normal, il code les cars en 16 bits au lieu de 8.
Pour ton pb, soit tu parvient à trouver les correspondances (entre
caractères accentués de l'ordi et ceux de l'imprimante), et tu utilise
replace, sinon, tu vire touts les accents.
Il est plus facile de batiser quelqu'un que de la convertir. (surtout en programmation)
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 20 déc. 2006 à 13:57
Je ne peux pas virer tous les accents.
Je n'ai pas compris ton getBites avec les $$$, il ne compile pas.
J'ai ça sinon:
...SerialPort1.Encoding = System.Text.Encoding.GetEncoding(1250)
Qui me transmet bien le é, mais sinon, il enlève les accents sur é, ê et à.
Pas logique...