Bonjour,
Je développe une appli pour piloter un afficheur à LEDs : des EPL330
http://www.eplconcept.com/index.php/...rs-mono-lignes
Jusque la tout va bien, la doc sur le protocole est relativement bien faite et j'arrive à faire afficher mes infos sur le ruban de led en envoyant des commandes en TCP...
Le problème apparait lorsque je veux afficher des caractères spéciaux, et notamment des caractères accentués. Dans ce cas il ne m'affiche tout simplement rien !
Donc pour afficher des chiffres et des lettres en minuscules et majuscules pas de problème. Mais impossible de gérer les accents.
Je me dis que c'est peut être en rapport avec l'encodage utilisé par Qt différent de celui géré par les EPL330.
Dans la doc des EPL330 il y deux formats possibles : le CP437 (aussi appelé PLS) et le CP1252 (windows 1252 ou encore latin-9 si j'ai bien compris), à priori j'utiliserai ce dernier.
comment être sur que ce que j'envoie respecte le format Windows-cp-1252 ?
J'ai actuellement ceci :
- l'envoi de "A\r\n" affiche "A" sur la barre de LEDs.
- l'envoi de "{A}\r\n" affiche "a" sur la barre de LEDs.
- l'envoi de "é\r\n" n'affiche rien...
Pour envoyer un texte par TCP j'utilise la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 QByteArray text = "é\r\n"; ledClient->sendText(text);
Pensez vous que cela vienne d'un problème d'encodage de caractères ? si oui comment y remédier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 bool TCPClient::sendText(QByteArray command) { if (socket->state() != QAbstractSocket::ConnectedState) { qWarning() << "Couldn't send command : not connected !"; return false; } if(socket->write(command)) { if(socket->waitForBytesWritten(2000) && socket->waitForReadyRead((2000))) { socket->readAll(); } } timer->start(timeout); return true; }
Sinon avez-vous une piste ?
Merci pour votre aide
Partager