CLASS DE DIALOGUE RS485 / RS232 SOUS LINUX

yovotsa Messages postés 7 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 10 mars 2010 - 29 mai 2008 à 17:34
LiaGalanodel Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 29 juillet 2010 - 29 avril 2010 à 09:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42958-class-de-dialogue-rs485-rs232-sous-linux

LiaGalanodel Messages postés 19 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 29 juillet 2010 1
29 avril 2010 à 09:12
Super code!
Merci beaucoup.
pem1664 Messages postés 4 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 28 février 2011
3 sept. 2009 à 09:51
Bonjour,
merci Astalavista pour cette classe, ca faisait un bail que je cherchait comment utiliser le port série sous linux autrement qu'avec gtkterm..
J'aurais besoin d'envoyer une chaine de caractere comportant SM et le code ascii correspondant a un nombre compris entre 0 et 200.
Quelqu'un pourrait il me donner un coup de main pour m'expliquer comment modifier la classe :
int tRs232::Envoyer(char* pChaine, unsigned int chaineLen)
{
int Res = write (fd, pChaine, chaineLen);
return (Res);
}
pour encapsuler dans pChaine la valeur ascii d'un nombre compris entre 0 et 200?
merci :)
cs_Astalavista Messages postés 192 Date d'inscription lundi 24 décembre 2001 Statut Membre Dernière intervention 3 février 2010
22 juin 2009 à 16:12
Tu devrais déjà apprendre les bases du C++ :)
Si tu les as :
Tu initialise une instance de la classe tRS232 (ou tRS485 suivant ce que tu utilise) dans ton main
et dans l'action du bouton tu envoi ta chaine,
Mais le caractère null va te poser des problèmes avec le miens, vu qu'il est fait pour envoyer une chaine, et le caractère null est définit comme une fin de chaine ...
Je te conseil d'héritier de la classe et de surcharger la méthode (ou de la modifier directement ou d'en ajouter une autre, c'est encore mieux, comme ca tu peut utiliser les deux types):
int tRs232::Envoyer(char* pChaine, unsigned int chaineLen)
{
int Res = write (fd, pChaine, chaineLen);
return (Res);
}
Rou25 Messages postés 16 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 10 juin 2009
22 juin 2009 à 14:29
Oui, en fait, je dois envoyer un code ASCII representant un NULL ou une donnée 0 directement sur le TX de mon port série. ensuite le module le recevra sur le RX. T'as raison, je me mal exprimé. Mais l'ennui c'est que je ne sais pas comment le faire par C++. Par exemple, quand je clique sur un bouton, il envoi un 0 sur le TX et tant que je ne reclique pas, il fait un loop.

Bon voila, je qqun peut maider, ce serai trop gentil!

Merci.
cs_Astalavista Messages postés 192 Date d'inscription lundi 24 décembre 2001 Statut Membre Dernière intervention 3 février 2010
22 juin 2009 à 14:12
Tu ne peut pas envoyer sur le RX, c'est la réception, mais tu peut sur le TX (donc le RX au module :) )
Mais pour ton souci, je ne voit pas vraiment là ...
Tu ne doit pas envoyer la donnée 0 plutôt ?
Rou25 Messages postés 16 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 10 juin 2009
22 juin 2009 à 11:00
salut, j'avais une question. Comment dois-je faire pour envoyer un 1 ou 0 sur un TX ou RX avec C++ ou un autre langage? En fait, je dois faire un reset sur un module en envoyant un 0 sur le RX pendant un temps assez long pour faire le reset. Mais j'arrive pas.

Peut tu maider stp.

Merci a bientot!
yovotsa Messages postés 7 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 10 mars 2010
29 mai 2008 à 17:34
C'est du bon boulot, j'apprécie ...
Rejoignez-nous