ecriture sur port serie

ecriture sur port serie - C++ - Programmation

Marsh Posté le 11-04-2008 à 12:11:44    

salut tlm,
 
j'ai ecrit un programme qui me permet de commander un port serie pour pouvoir zapper sur le télé.
mais quand je lance le programme rien ne se passe est ce que ça a une relation avec lirc.
en fait je travaille sous linux et je programme en c++
merci d'avance

Reply

Marsh Posté le 11-04-2008 à 12:11:44   

Reply

Marsh Posté le 11-04-2008 à 14:20:08    

poste ton code


---------------
Töp of the plöp
Reply

Marsh Posté le 11-04-2008 à 16:27:51    

salut,
le code est tres compliqué mais voici quelques lignes:
QString mot; // avec mot est de la forme "0001111000......"
pour l'envoyer sur le port serie j'ai fait:
port->write(mot.toStdString().c_str()); // c'est à dire j'ai la converti en const char*
mais rien ne se passe malgré que le code ne contient pas d'erreur. je pense que le probleme vient de write.
 

Reply

Marsh Posté le 12-04-2008 à 08:36:04    

Vérifie le code de retour de write, vérifie que ton protocole est ok, passe le debugger, utilises un espion de port série pour voir si quelque chose passe vraiment par là ...
 
Comment veux tu de l'aide si tu penses savoir où est l'erreur mais sans rien montrer ?


---------------
Töp of the plöp
Reply

Marsh Posté le 12-04-2008 à 09:31:13    

Ok darkalt3, mais j'ai une question à poser je vais envoyer sur le port serie une chaine de caractere qui va etre par la suite traitée par celui-ci.
alors je veux envoyer à chaque fois le caractere correspondant à 0x12 (18 en decimal) alors j'ai ecrit ça  :      QString s1="\x12"; en travaillant sur visual c++(windows) il m'affiche un caractere mais sur linux il ne m'affiche rien.
alors la question comment obtenir le caractere correspondant à 0x12.
sachat que je suis debutante en programmation
 

Reply

Marsh Posté le 12-04-2008 à 12:10:41    

QString est une suite de caractères, peut etre unicode si tu as l'option activée par défaut ou que tu l'as explicitement choisi, ce qui signifie que tes caractères ne sont peut pas nécessairement codés sur 8 bits comme ton objet de port série s'y attend sans doute.

 

Choisi de balancer uniquement des char sur ton port série.

 

Tu peux tenter très basiquement avec quelque chose du genre:

Code :
  1. char mystring[2];
  2. memset(mystring, '\0', 2);
  3. mystring[0] = 0x12;
  4. port->write(mystring);


Message édité par _darkalt3_ le 12-04-2008 à 12:11:41

---------------
Töp of the plöp
Reply

Marsh Posté le 13-04-2008 à 21:13:09    

Est ce que tu as bien ouvert ton port série avec les bons paramètres (vitesse, parité, etc...) ?
 
Est ce que le module lirc est bien activé ? (as tu une application utilisant lirc et qui fonctionne)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed