Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASS DE DIALOGUE RS485 / RS232 SOUS LINUX


Information sur la source

Catégorie :Réseaux & Internet Classé sous : rs485, rs232, port, rts Niveau : Débutant Date de création : 02/06/2007 Vu / téléchargé: 8 444 / 530

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Voila les deux classes permettent de dialoguer en RS232 ou RS485 sous linux.
- Gestion du RTS
- Sytème bloquant pour atttente de la fin de l'émission de la trame
 

Source

  • class tRs485 : public tRs232
  • {
  • public:
  • tRs485(char* pPort, int Vitesse, int NbBits, int Parite, int NbStop);
  • tRs485(void);
  • int Envoyer(char* pChaine);
  • void setRTS(bool S);
  • };
  • class tRs232
  • {
  • private:
  • termios Config;
  • char MessageConfigurer[30];
  • int Configurer(char* pPort,int Vitesse,int NbBits,int Parite,int NbStop);
  • protected:
  • int fd; //Descripteur de fichier
  • //------------------------------
  • public:
  • tRs232(void);
  • tRs232(char* pPort,int Vitesse,int NbBits,int Parite,int NbStop);
  • ~tRs232();
  • void AfficherMessageConfigurer();
  • int Envoyer(char* pChaine);
  • int Recevoir(int Nb,char* pChaine);
  • int Recevoir(char Fin, char* pChaine, int Mode);
  • int Recevoir(char Fin, char* pChaine,int Mode, int Attente);
  • int RecevoirCaractere(char* Caractere, int Attente);
  • int RecevoirFichier(char *NomFichier, int AttenteDebut);
  • } ;
class tRs485 : public tRs232
{
public:
tRs485(char* pPort, int Vitesse, int NbBits, int Parite, int NbStop);
tRs485(void);
int Envoyer(char* pChaine);
void setRTS(bool S);
};

class tRs232
	{
	private:
		termios Config;
		char MessageConfigurer[30];
		
		int Configurer(char* pPort,int Vitesse,int NbBits,int Parite,int NbStop);
	protected:
		int fd;	//Descripteur de fichier
   //------------------------------
	public:
		tRs232(void);
		tRs232(char* pPort,int Vitesse,int NbBits,int Parite,int NbStop);
		~tRs232();
		void AfficherMessageConfigurer();
		int Envoyer(char* pChaine);
		int Recevoir(int Nb,char* pChaine);
		int Recevoir(char Fin, char* pChaine, int Mode);
		int Recevoir(char Fin, char* pChaine,int Mode, int Attente);
		int RecevoirCaractere(char* Caractere, int Attente);
		int RecevoirFichier(char *NomFichier, int AttenteDebut);
   } ;

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de yovotsa le 29/05/2008 17:34:29

C'est du bon boulot, j'apprécie ...

signaler à un administrateur
Commentaire de Rou25 le 22/06/2009 11:00:41

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!

signaler à un administrateur
Commentaire de Astalavista le 22/06/2009 14:12:08

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 ?

signaler à un administrateur
Commentaire de Rou25 le 22/06/2009 14:29:28

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.

signaler à un administrateur
Commentaire de Astalavista le 22/06/2009 16:12:47

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);
}

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

modification du RTS du port RS232 [ par yafisab ] Bonjour, quelqu'un a t'il une idée sur la façon de modifier le RTS du port RS232 (Ready To Send) en C++ lorsqu'on est sous li Besoin d'un coup de main dans la rélisation d'une application Win32 en langage C [ par sim_richard286 ]    Je suis actuellement étudiant en GEII 2ième année et je souhaiterais avoir une petite aide pour la réalisation d'une communication rs232 [ par sdisp ] Bonjour,J'ai fait un programme qui envoie des données ( trame de 12 octets ) sur un module de transmition wifi via le port com.Mon probleme est q RS232 [ par th62d ] Bonjour,J'essaie de faire communiquer mon pc via le port serie RS232.....Quand je lance le programme TestCOM.c j'ai l'erreur suivante à la compilation Simulateur de communication RS232 [ par gordon13 ] Bonjour,Je dois réaliser un composant de communication avec un appareil connecté au PC via le port série. Comme j'ai pas l'appareil, je voudrais simul port COM, RS232 ou UART! [ par zenetcalme ] bonjour a tous,je developpe un logiciel qui communique avec le port RS232, et qui est diffusé sur un grand nombre de machine. j'arrive tres bien a com Communication Port serie RS232 [ par freddy766 ] Bonjour, J'ai un petit probleme concernant la communication RS232 (port serie) en c++. Afin de tester mon programme sur des appareils et etablir des c demande d'aide Cherche interception sur RS232 port serie [ par chemins_hermes ] Bonjour tout le monde.je cherche a pouvoir intercepter tout ce qui sort ou rentre par le port RS232 (port serie). et a le mettre dans un fichier log.c USB et RS485 [ par angsthase ] Bonjour à tous! J'espere que je ne vais pas vous effrayer avec mon sujet!!! J'ai chercher sur le site pour savoir comment on communique avec un application en visual c++ pour la communication avec un port RS232 connécté avc un modem [ par ibrahi ] salut tout le monde,j'ai besoin des diffirents fonctions en vc++ pour établir la liaison avec un modem via le port RS232,j'espére avoir la r


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.