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 !

CLASSE DE CONTRÔLE DES PORTS COM


Information sur la source

Description

J'ai eu besoin de faire des mesures de RSSI sur des interfaces ZigBee branchées sur des microcontrôleurs n'ayant qu'une interface série RS232, et après pas mal de rercherche, je n'ai rien trouvé qui faisait ce que je voulais, donc je l'ai refait, et c'est beaucoup plus simple que je l'aurais immaginé.

La classe permet d'ouvrir un port COM avec les appels systèmes windows, elle configure le port, les buffers et les timeouts.
 

Source

  • /**
  • * Redirection simple d'un port COM(RS232) vers la sortie standard sous Windows.
  • *
  • * @filename redir.cpp
  • * @version 1.1
  • */
  • #include <cstdio>
  • #include <COMPort.h>
  • /**
  • * Macro de transformation du texte pour les vesrions de windows UNICODE
  • * i.e: XP, 2003, Vista
  • */
  • #ifdef UNICODE
  • #define _T(x) (L##x)
  • #else
  • #define _T(x) (x)
  • #endif
  • void usage(int argc, const char * const * argv)
  • {
  • ::printf("Usage: %s <port>\nWhere <port> is a COM port name,"
  • "from COM1 to COM15, depending on your system hardware.\n", argv[0]);
  • }
  • int main(int argc, const char * const * argv)
  • {
  • COMPort pCom;
  • CHAR lpBuff[1024];
  • if(argc < 2)
  • {
  • usage(argc, argv);
  • return 0;
  • }
  • pCom.open(argv[1]);
  • if(!(pCom.isOpened()))
  • {
  • ::printf("Opening error\n");
  • return 0;
  • }
  • pCom.setTimeOut(1, 1, 1);
  • pCom.setCommunication(CBR_19200, 8, NOPARITY, ONESTOPBIT);
  • pCom.setBufferSize(4096, 128);
  • for(;;)
  • {
  • if(pCom.read(lpBuff, sizeof(*lpBuff), 1023))
  • printf("%s", lpBuff);
  • }
  • return 0;
  • }
/**
 * Redirection simple d'un port COM(RS232) vers la sortie standard sous Windows.
 *
 * @filename redir.cpp
 * @version 1.1
 */
#include <cstdio>

#include <COMPort.h>

/**
 * Macro de transformation du texte pour les vesrions de windows UNICODE
 * i.e: XP, 2003, Vista
 */
#ifdef UNICODE
#define _T(x) (L##x)
#else
#define _T(x) (x)
#endif

void usage(int argc, const char * const * argv)
{
    ::printf("Usage: %s <port>\nWhere <port> is a COM port name,"
        "from COM1 to COM15, depending on your system hardware.\n", argv[0]);
}

int main(int argc, const char * const * argv)
{
    COMPort pCom;
    CHAR lpBuff[1024];

    if(argc < 2)
    {
        usage(argc, argv);
        return 0;
    }

    pCom.open(argv[1]);

    if(!(pCom.isOpened()))
    {
        ::printf("Opening error\n");
        return 0;
    }
    pCom.setTimeOut(1, 1, 1);
    pCom.setCommunication(CBR_19200, 8, NOPARITY, ONESTOPBIT);
    pCom.setBufferSize(4096, 128);

    for(;;)
    {
        if(pCom.read(lpBuff, sizeof(*lpBuff), 1023))
            printf("%s", lpBuff);
    }

    return 0;
}

Conclusion

Je l'ai testée avec succès sur des convertisseurs USB vers RS232 et je suis à l'écoute de toute remarque intéressante.

J'ai créé le projet avec Visual C++ 2005 Express.
 

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 !
  •   COMPort
    •   bin
      • CMD.lnkTélécharger ce fichier [Réservé aux membres club]1 293 octets
    •   docs
      • COMPort.doxyTélécharger ce fichier [Réservé aux membres club]10 016 octets
    •   examples
    •   include
    • lib
    •   src
    • tmp
    •   Win32
      • COMPort.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 774 octets
      • COMPort.vcprojTélécharger ce fichier [Réservé aux membres club]5 490 octets
      • redir.vcprojTélécharger ce fichier [Réservé aux membres club]4 559 octets
      • test.vcprojTélécharger ce fichier [Réservé aux membres club]4 458 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de zezitinho le 09/10/2007 11:53:33

hum, j'arrive pas a compiler...

ca me donne ca :
Compilation en cours...
redir.cpp
Édition des liens en cours...
LINK : fatal error LNK1104: cannot open file 'C:\Documents.obj'

signaler à un administrateur
Commentaire de gergalp le 10/10/2007 23:11:51

Places ton projet ailleurs que sur ton bureau ou Mes Documents, ca devrait fonctionner :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

communication port COM [ par nmeunier ] Bonjour à tous !Je suis actuellement en stage dans une entreprise ou personne ne peut vraiment m'aider...;-(J'ai récupéré des sources en turbo C d'un Communication hexa décimal sur un port série [ par briscard ] Bonjour à tous!j'ai un petit problème de communication avec le logiciel que je développe: je dois programmer un port série et ensuite l'utiliser pour Communication via le port série [ par michelouze ] Bonjour, j'ai vraiment besoin d'aide, ça fait 3 jours que je galère pour communiquer en RS232 avec un appareil de mesure. Ce que j'ai réussi à faire c 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 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 communication rs232 [ par sdisp ] Bonjour,J'ai fait un programme qui envoie des donn&#233;es ( trame de 12 octets ) sur un module de transmition wifi via le port com.Mon probleme est q Besoin d'un coup de main dans la rélisation d'une application Win32 en langage C [ par sim_richard286 ] &nbsp;&nbsp; Je suis actuellement &#233;tudiant en GEII 2i&#232;me ann&#233;e et je souhaiterais avoir une petite aide pour la r&#233;alisation d'une communication entre modem et port RS232 du PC [ par mustaphaham2005 ] &nbsp; <TD id=HB_Focus_Element vAlign=top width="100%" background="" height=250 UN RS232 en USB [ par sirdeneb ] Bonjour &#224; tous, J'ai un programme en cpp qui communique avec une carte d'acquisition sur le port s&#233;rie. Or &#233;tant oblig&#233; de change Conception d'un multiplexeur RS232 [ par CleFac ] Bonjour,J'ai une connexion RS232 en E/S. Les données entrantes sur ma connexion RS232 sont écrites sur une/des socket(s).Maintenant les données entran


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

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



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,34 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é.