Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Bibliothèque de communication RS232 pour Visual C++



  1. #1
    Chaouki22

    Bibliothèque de communication RS232 pour Visual C++


    ------

    bonsoir à tous,

    svp il y a quelqu'un peut me fournir un lien de telechargement ou le nom d'une bibliothèque pour la communication RS232 qui fonctionne sur Microsoft Visual c++ ?

    merci pour toute aide

    -----

  2. Publicité
  3. #2
    Jack
    Modérateur

    Re : Bibliothèque de communication RS232 pour Visual C++

    Tu programmes en .net ou pas?

    A+

  4. #3
    padboy

    Re : Bibliothèque de communication RS232 pour Visual C++

    de MSDN, tu peux adapter pour rs-232

    http://msdn.microsoft.com/en-us/library/ms810467.aspx

    j'avais un professeur à l'université qui avait adapté le code en fonction justement du protocole et ca fonctionnait nickel.

  5. #4
    Chaouki22

    Re : Bibliothèque de communication RS232 pour Visual C++

    Merci Padboy, mais tu vois pas que c'est un peut compliquer l'histoire d'adaptation.

    Citation Envoyé par Jack Voir le message
    Tu programmes en .net ou pas?

    A+

    Non je programme avec des objets non managés, j'utilise le new classique.
    je veux expliquer mieux ce que je cherche. Alors, j'ai programmé un logiciel sur Visual C++ qui me permet de tester des afficheur LCD. bref, il me manque l'adaptation de la communication Rs232 pour la commande de la carte de test.
    l'idée est d'envoyer une commande (caractère ou chiffre) via RS232 est attendre une réponse (sous forme d'un caractère aussi)
    donc une simple bibliothèque de communication me suffira.

    merciiii pour l'aide.

  6. A voir en vidéo sur Futura
  7. #5
    padboy

    Re : Bibliothèque de communication RS232 pour Visual C++

    Ce n'est pas tellement compliqué... On s'en servait en C par exemple

    util_rs232.cpp:
    Code:
    // Fonctions utiles à la transmission de donnée par communication sérielle
    // Source: Allen Denver, Microsoft Windows Developer Support
    // adapté par David Marche
    
    
    // librairies
    #include <wtypes.h>	
     
    
    // prototypes et  définitions utiles pour transformation
    #include "util_rs232.h"
    
    
    //-----------------------------
    // nom: OpenPortCom
    // description:Ouverture de port de communication serie 
    // exemple d'appel: déclatation de structure DCB et ouverture du port COM1
    //			à 9600 baud, 8 bits par caractère pas de parité, et 1 bit d'arrêt.
    //	 HANDLE mon_hCom;
    //   DCB mon_dcb;
    //	 mon_hCom=OpenPortCom("COM1",GENERIC_READ,&mon_dcb,9600,8,0,1);
    // paramètres: 
    //	 nomPort:  chaîne de caractères contenant le nom du port (ex:"COM1")
    //	 mode: mode d'ouverture (GENERIC_READ, GENERIC_WRITE, ou GENERIC_READ|GENERIC_WRITE)
    //	 dcb:	pointeur à une structure de param. de com DCB
    // 	 baudrate: vitesse de com (ex: 9600)
    //	 ByteSize;             number of bits/byte, 4-8 
    //   Parity;               0-4=no,odd,even,mark,space 
    //	 StopBits;             0,1,2 = 1, 1.5, 2 
    // retour: (HANDLE) variable designant le port ouvert. Si l'ouverture du 
    //		port échoue, la valeur INVALID_HANDLE_VALUE est renvoyée
    // Source:Allen Denver, Microsoft Windows Developer Support
    // (Adapté par David Marche)
    //-----------------------------
    
    HANDLE OpenPortCom(char nomPort[], DWORD mode,	DCB *dcb, DWORD baudRate, BYTE byteSize, BYTE parite, BYTE stopbit)
    {
    
    	HANDLE	hCom;	// variable de reference au port de communication sériel 
    	BOOL	bRes;
    
    	// ouverture du port de communication sériel
    	hCom = CreateFile(	nomPort,
    						mode,			// lecture, écriture ou les deux
    						0,				// comm devices must be opened w/exclusive-access 
    						NULL,			// no security attributes 
    						OPEN_EXISTING,	// comm devices must use OPEN_EXISTING 
    						0,				// not overlapped I/O 
    						NULL );			// hTemplate must be NULL for comm devices 
    					
    	// si le port a pu être ouvert, définir les paramètres de communication
    	if (hCom != INVALID_HANDLE_VALUE)
    	{
    		bRes=FALSE;
    		if (bRes=GetCommState(hCom, dcb)){
    			// remplir la structure avec les paramètres de communication
    			dcb->BaudRate = 9600; //baudRate;
    			dcb->ByteSize = 8; //byteSize;
    			dcb->Parity = NOPARITY; //parite;
    			dcb->StopBits = ONESTOPBIT; //stopbit;
    			bRes=SetCommState(hCom, dcb);
    		}
    		// si les paramètres ne peuvent être fixées,
    		// fermer le port et échouer l'ouverture du port
    		if (!bRes){
    			CloseHandle(hCom);
    			hCom=INVALID_HANDLE_VALUE;
    		}
    	}
    	// renvoyer la reference au port ou INVALID_HANDLE_VALUE en cas d'échec
    	return hCom;
    }
    
    
    //-----------------------------
    // nom: WriteABuffer
    // description:transmettre un caractere par communication série  
    // exemple d'appel: 
    //   WriteABuffer(mon_hCom,'A'); //envoyer le caractere A par transmission série.
    //	 WriteABuffer(mon_hCom,18); //envoyer la valeur 18 par transmission série.
    // paramètres: 
    //	 hComm:  variable designant le port de communication série
    //			et obtenue par la fonction OpenPortCom lors de l'ouverture
    //			du port de communication.
    //	 car: chaîne de caractères à transmettre
    // retour: booléen (vrai/faux) indiquant la réussite ou l'échec de l'envoie
    // Source:Allen Denver, Microsoft Windows Developer Support
    // (Adapté par David Marche)
    //-----------------------------
    
    BOOL WriteABuffer(HANDLE hComm, char car)
    {
       OVERLAPPED osWrite = {0};
       DWORD dwWritten;
       DWORD dwRes;
       BOOL fRes;
    
       // Create this write operation's OVERLAPPED structure's hEvent.
       osWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
       if (osWrite.hEvent == NULL)
          // error creating overlapped event handle
          return FALSE;
    
       // Issue write.
       if (!WriteFile(hComm, &car, 1, &dwWritten, &osWrite)) {
          if (GetLastError() != ERROR_IO_PENDING) { 
             // WriteFile failed, but isn't delayed. Report error and abort.
             fRes = FALSE;
          }
          else{
             // Write is pending.
             dwRes = WaitForSingleObject(osWrite.hEvent, INFINITE);
             switch(dwRes)
             {
                // OVERLAPPED structure's event has been signaled. 
                case WAIT_OBJECT_0:
                     if (!GetOverlappedResult(hComm, &osWrite, &dwWritten, FALSE))
                           fRes = FALSE;
                     else
                      // Write operation completed successfully.
                      fRes = TRUE;
                     break;
                
                default:
                     // An error has occurred in WaitForSingleObject.
                     // This usually indicates a problem with the
                    // OVERLAPPED structure's event handle.
                     fRes = FALSE;
                     break;
             }
          }
       }
    	else{
    		  // WriteFile completed immediately.
    		  fRes = TRUE;
    	}
       CloseHandle(osWrite.hEvent);
       return fRes;
    }
    util_rs232.h
    Code:
    // librairie de fonctions utiles aux transformations matricielles 3D 
    // et affichage graphique 
    // Auteur: David Marche  
    
    #ifndef _UTIL_RS232_   // pour éviter d'inclure plusieurs fois cette librairie
    #define _UTIL_RS232_
    
    // librairies
    #include <wtypes.h>	
    
    // constantes
    
    
    // -------------------------------------------
    // -- Prototypes							--
    // -- (plus de détails sur ces fonctions	--
    // -- dans les commentaires du  fichier		--
    // -- util_rs232.cpp)						--
    // -------------------------------------------
    
    BOOL WriteABuffer(HANDLE hComm, char car);
    HANDLE OpenPortCom(char nomPort[],DWORD mode,DCB* dcb,DWORD baudRate, BYTE byteSize, BYTE parite, BYTE stopbit);
    
    
    #endif
    Cite bien ta source..

  8. #6
    Jack
    Modérateur

    Re : Bibliothèque de communication RS232 pour Visual C++

    Sinon tu peux utiliser cette DLL:
    http://automatepc.fr/?page=IntroPortSerie

    A+

  9. Publicité

Discussions similaires

  1. Communication ASP.NET et Application Visual C++
    Par capit030 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 11/12/2009, 09h25
  2. bibliothèque SystemC pour visual C++
    Par wafa1984 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 23/10/2009, 12h23
  3. communication rs232 avec pic 16f877 pour la commande de relais
    Par amigost dans le forum Électronique
    Réponses: 0
    Dernier message: 19/07/2008, 09h54
  4. bibliothèque wxWidgets sur visual C++ express
    Par simon50 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 06/07/2007, 16h12
  5. RS232 visual C++
    Par peynag dans le forum Électronique
    Réponses: 1
    Dernier message: 24/04/2003, 12h35
Découvrez nos comparatifs produits sur l'informatique et les technologies.