Usb

menoran Messages postés 6 Statut Membre -  
 hu -
salut voila , je fais la programmation en c++ builder ,je voudrais le programme source pour que je puisse utilser l'usb

lire et écrire sur le port usb , merci d'avance
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. floorfilla Messages postés 35 Statut Membre 23
     
    /*------------------------------------------------------------------------*/
    /* Fonction d’initialisation d’un port RS232 */
    /* */
    /* Paramètres */
    /* char *Port : "COM1" pour Port1, "COM2" pour port2 */
    /* char *Parite : "Paire", "Impaire", "Aucune" */
    /* char *Vitesse : la vitesse en bauds */
    /* char *Data : le nombre de bit de donnée */
    /* char *StopBit : Le nombre de stop Bit */
    /* */
    /* Retour : un entier égal à 0 si erreur. */
    /*------------------------------------------------------------------------*/
    int InitCOM(char *Port,char *Parite,char *Vitesse,char *Data,char *StopBit)
    {
    DCB dcb; // déclarer une variable contenant la configuration du port
    HANDLE hCom; // déclarer un handle
    DWORD dwError; // n° de l’erreur
    BOOL fSuccess; // tout c’est bien passé
    /*--------------------------------------------------------*/
    /* Ouverture du port de Com */
    /*--------------------------------------------------------*/
    hCom = CreateFile(
    Port, // Choix du port « COMx »
    GENERIC_READ | GENERIC_WRITE, // accès pour lire et écrire sur le port
    0, // accès exclusif au port de COM
    NULL, // sécurité par défaut
    OPEN_EXISTING, //Doit être à cette valeur car se n’est pas un fichier
    0,
    NULL // mode synchrone
    );
    /*-----------------------------------------------------------*/
    /* Vérifier si handle ouvert correctement */
    /*-----------------------------------------------------------*/
    if (hCom == INVALID_HANDLE_VALUE)
    {
    dwError = GetLastError();
    /* Fichier non créer Gérer l'erreur */
    }
    /*-----------------------------------------------------------*/
    /* Lecture Configuration initiale */
    /*-----------------------------------------------------------*/
    fSuccess = GetCommState(hCom, &dcb);
    if (!fSuccess)
    {
    /* Gérer l'erreur*/
    }
    /*-------------------------------------------------------------------*/
    /* Configuration du port */
    /*-------------------------------------------------------------------*/
    /* Gestion de la vitesse */
    dcb.BaudRate = StrToInt(Vitesse);
    /* Gestion du nombre de bits */
    dcb.ByteSize = StrToInt(Data);
    /* Gestion de la parité */
    if (strcmp(Parite,"Aucune")==0)
    dcb.Parity = NOPARITY;
    if (strcmp(Parite,"Paire")==0)
    dcb.Parity = EVENPARITY;
    if (strcmp(Parite,"Impaire")==0)
    dcb.Parity = ODDPARITY;
    /* Gestion du Stop Bit */
    if (strcmp(StopBit,"1")==0)
    dcb.StopBits = ONESTOPBIT;
    if (strcmp(StopBit,"1.5")==0)
    dcb.StopBits = ONE5STOPBITS;
    if (strcmp(StopBit,"2")==0)
    dcb.StopBits = TWOSTOPBITS;
    dcb.DCBlength;
    dcb.BaudRate;
    dcb.fBinary=1;
    dcb.fParity=0;
    dcb.fOutxCtsFlow=0;
    dcb.fOutxDsrFlow=0;
    dcb.fDtrControl=0;
    dcb.fDsrSensitivity=0;
    dcb.fTXContinueOnXoff=0;
    dcb.fRtsControl=0;
    /*-----------------------------------------------*/
    /* Configurer le port */
    /*-----------------------------------------------*/
    fSuccess = SetCommState(hCom, &dcb);
    if (!fSuccess)
    {
    /* Gérer l'erreur*/
    }
    /*------------------------------------------*/
    /* fermer le port de com */
    /*------------------------------------------*/
    CloseHandle(hCom);
    return(fSuccess);
    }

    Ecriture sur un port série : Exemple de fonction d’envoie de donnée

    /*-----------------------------------------------------------------------------*/
    /* Envoyer une chaine de caractére sur la RS232 */
    /* */
    /* Paramètres : */
    /* char *Chaine La chaine à Envoyer */
    /* char *Port, le port de COM : "COM1" ou "COM2" */
    /* char *EolChar, le caractère fin de ligne */
    /* */
    /* Retour : 0 si erreur */
    /*-----------------------------------------------------------------------------*/
    int EnvoiChaineRS232(char *Chaine,char *Port,char *EolChar)
    {
    HANDLE hCom;
    DWORD dwError;
    BOOL fSuccess;
    DWORD dwEvtMask;
    int i;
    int NbOctet;
    char *Message;
    unsigned long nBytesWrite;
    Message = new char[200];
    /*-----------------------------------------------*/
    /* Ouverture du port de communiucation */
    /*-----------------------------------------------*/
    hCom = CreateFile(Port,
    GENERIC_READ | GENERIC_WRITE,
    0,
    NULL,
    OPEN_EXISTING,
    0,
    NULL
    );
    /*--------------------------------------------------*/
    /* Envoi de la chaine + Eol caractére */
    /*--------------------------------------------------*/
    if(strcmp(EolChar,"CR")==0)
    sprintf(Message,"%s%c",Chaine,0x0D);
    if(strcmp(EolChar,"LF")==0)
    sprintf(Message,"%s%c",Chaine,0x0A);
    if(strcmp(EolChar,"LF/CR")==0)
    sprintf(Message,"%s%c%c",Chaine,0x0A,0x0D);
    if(strcmp(EolChar,"CR/LF")==0)
    sprintf(Message,"%s%c%c",Chaine,0x0D,0x0A);
    // compter le nombre d’octet à envoyer
    NbOctet = StrLen(Message);
    // écrire dans le fichier
    WriteFile(hCom,Message,NbOctet,&nBytesWrite,NULL);
    // Fermer le handle de com
    CloseHandle(hCom);
    // Libération mémoire
    delete[] Message;
    return(fSuccess);
    }

    Lecture sur un port série : Exemple de fonction de réception de données

    /*------------------------------------------------------------------------------*/
    /* Recevoir une chaîne de caractère sur la RS232 */
    /* */
    /* Paramètres : */
    /* char *ChaineRecue , buffer de réception */
    /* char *Port, le port de COM : "COM1" ou "COM2" */
    /*------------------------------------------------------------------------------*/
    int RecevoirRS232(char *Chaine Recue,char *Port)
    {
    DCB dcb;
    HANDLE hCom;
    DWORD dwError;
    BOOL fSuccess;
    BOOL bResult;
    DWORD dwEvtMask;
    COMMTIMEOUTS tTimeout;
    unsigned long nBytesRead;
    char *inBuffer;
    int TimeoutRead;
    int i;
    int NbOctet;
    char c;
    /*-------------------------------------*/
    /* Initialisation des variables */
    /*-------------------------------------*/
    inBuffer = new char[200]; // réservation mémoire pour le buffer de récéption
    sprintf(inBuffer,"%s","");
    nBytesRead=0;
    /*-----------------------------------------------*/
    /* Ouverture du port de communication */
    /*-----------------------------------------------*/
    hCom = CreateFile(Port,
    GENERIC_READ | GENERIC_WRITE,

    0,
    NULL,
    OPEN_EXISTING,
    0,
    NULL
    );
    /*----------------------------------*/
    /* Définition des timeouts */
    /*----------------------------------*/
    TimeoutRead = 500; // timeout de 500ms
    tTimeout.ReadIntervalTimeout = MAXWORD;
    tTimeout.ReadTotalTimeoutMultiplier = 0;
    tTimeout.ReadTotalTimeoutConstant = TimeoutRead; // pas de time out = 0
    tTimeout.WriteTotalTimeoutMultiplier = 0;
    tTimeout.WriteTotalTimeoutConstant = 0;
    // configurer le timeout
    SetCommTimeouts(hCom,&tTimeout);
    /*-------------------------------------------------------------*/
    /* boucle d'attente de lecture des octets */
    /* Sortie de la boucle par timeout par exemple, si */
    /* l’on suppose le format de la trame reçu n’est */
    /* variable. */
    /*-------------------------------------------------------------*/
    bResult = ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
    if (nBytesRead!=0) // Il existe des octets lus
    {
    // Mettre en forme la trame : recherche de CR
    }
    else
    sprintf(inBuffer,, »%s », “Pas de donnée reçue”) ;
    sprintf(ChaineRecue,"%s",inBuffer); // Retourner la chaîne reçue
    // fermer le port
    CloseHandle(hCom);
    // Libérer la mémoire
    delete[] inBuffer;
    return(fSuccess);
    }

    void main(void)
    {
    int Erreur ;
    char *TrameRecue ;
    TrameRecue = new char[200] ;
    Erreur=InitCOM(« COM1 », « Aucune », « 9600 », « 8 », « 1 ») ;
    if (Erreur !=0) // périphérique initialisé correctement
    {
    // envoi de la commande d’identification
    EnvoiChaineRS232(« ID ? », « COM1 », « CR ») ;
    // recevoir la réponse
    RecevoirRS232(TrameRecue, « COM1 ») ;
    // Traiter la trame reçue
    }
    else
    {
    // afficher une erreur
    }
    // Libération mémoire
    delete[] TrameRecue ;
    }
    2
  2. menoran Messages postés 6 Statut Membre 2
     
    merci sa c pour le com , mais et pour l'usb ?
    2
  3. floorfilla Messages postés 35 Statut Membre 23
     
    Replace COM par USB.
    0
  4. menoran Messages postés 6 Statut Membre 2
     
    ok daccord je vais essayé, je doute fort parce que c pas la meme @ :
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. hu
     
    vous pouvez voir ce lien http://www.lvr.com/hidpage.htm ca peut vous aider
    0