begin process at 2012 05 30 11:13:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

ReadFile et port USB


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ReadFile et port USB

mardi 27 juin 2006 à 15:06:13 | ReadFile et port USB

je_ne_viens_qu1_fois

Bonjour à tous

J'aurai besoin d'une aide en toute urgence concernant le dialogue avec un microcontroller via le port USB.
J'ai résussi à faire le "CreateFile" me permettant de créer le Handle avec mon appareil.
J'ai une fonction WriteFile qui, je pense, marche.
Le problème est la fonction ReadFile. Lecture et ecriture doivent se faire de façon asynchrone, ce qui nécessite l'utilisation d'une structure overlapped.
Je programme sous dev-cpp. Peut être le ReadFile est-il différent sous ce logiciel de programmation?

voici mon code pour le WriteFile, qui apparemment marche (je n'ai en fait pas de moyen de vérifier actuellement):

            nBytesWritten=strlen(buffer2);
 
            OVERLAPPED osWrite = {0};
           
            DWORD dwWritten; 
            DWORD dwRes;
            osWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);

            if (osWrite.hEvent == NULL)
            printf("Erreur 1\n");

            if (!WriteFile(g_hCOM, buffer2, nBytesWritten, &dwWritten, &osWrite)) {
            if (GetLastError() != ERROR_IO_PENDING) {
            printf("Erreur 2\n");
            }
            else
            dwRes = WaitForSingleObject(osWrite.hEvent, INFINITE);
            switch(dwRes)
            {
            case WAIT_OBJECT_0:
            if (!GetOverlappedResult(g_hCOM, &osWrite, &dwWritten, FALSE))
            printf("Erreur 3\n");
            else {
            if (dwWritten != nBytesWritten) {
            printf("Erreur 4\n");
            }
            else
            {
            printf("Envoi en cours...\n");
            }
            break;
            default:
            printf("Erreur 5\n");
            break;
            }
            }
            }
            else {
            if (dwWritten != nBytesWritten) {
            printf("Erreur 6\n");
            }
            else
            printf("Envoi en cours...\n");
            }
            CloseHandle(osWrite.hEvent);

et voici mon code pour le ReadFile qui, lui, me renvoie comme erreur lorsque je fais GetLastError: erreur n°1, c'est à dire que je n'utiliserai pas la bonne fonction (id es ReadFile):

            nBytesRead=255;
            OVERLAPPED osRead = {0};
            DWORD dwRead;
            DWORD dwResR;
            int* pBytesRead=0;
            osRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
            if (osRead.hEvent == NULL)
            {printf("Erreur 7\n");}
            
            if (!ReadFile(g_hCOM, buffer, nBytesRead, (DWORD*)pBytesRead, &osRead)) {
            printf("Erreur %d\n",GetLastError());  //c'est cette ligne qui me renvoie erreur 1, c'est à dire que ReadFile n'est pas appropriée
            if (GetLastError() == ERROR_IO_PENDING) { WaitForSingleObject(g_hCOM,   INFINITE);
            if (GetOverlappedResult(g_hCOM, &osRead, (DWORD*)pBytesRead, FALSE)) {
                    printf("je suis dans l'overlapped..\n");
                }
            } else {
                printf("Reception\n");
                CloseHandle(osRead.hEvent);
            }
            }

Comment puis je faire marcher mon ReadFile?

Merci d'avance
Olivier



Cette discussion est classée dans : erreur, printf, readfile, hevent, oswrite


Répondre à ce message

Sujets en rapport avec ce message

Reprendre la main sur une erreur de SCANF [ par gollum ] voila : mon monceau de codec='n';printf("Entrer le coeff %d du terme %d \n",i,i);result = scanf("%f",&coef); while (result==0 && c=='n'){ printf("f port série thread [:)] [ par cheMoor ] <img src=/imgs2/smile.gif border=0 align="a Erreur de lecture d'un fichier .txt en C sous Linux [ par Trinity_vv ] <TD id=HB_Focus_Element vAlign=top width="100%" background="" height=250 UNSELECTAB Message d'erreur : violation d'accés... [ par Also know as ] Bonjour, J'apprend en ce moment le langage C et j'ai donc pour se faire acheté un livre qui pour le moment me satisfait grandement.Je me suis donc pro erreur 10038 [ par made_in_france ] Hello ! j'ai un probleme avec la fonction bind de mon programme. En effet cette fonction me renvois l'erreur 10038 « attempted ». Est ce que quelqu'un protocole TCP HELP me [ par lolobardon ] Bonjour à tous,je suis actuellement à Pékin pour effectuer un semestre d'études. Je suis élève ingénieur en électronique mais l'embêtant c'est qu'ici api CreateFile() et ReadFile() [ par shadow1779 ] Bonsoir, j'ai presque terminé mon logiciel afin de decouper un fichier en parts... cependant j'ai une erreur et j'arrive vraiment pas a comprendre, e UpdateResource() ICON [ par maladedede ] BonjourJ'ai deja utiliser plusoeur fois Update resource pour changer des resources du type RCDATA d'un ".exe"Et la c'est la resourc ICON du ".exe" que Envois et reception de commande [ par t0Xic_h ] SalutVoici mon code source .La connection entre le client et le serveur se passe bien, mais je n'ai pas su ecrirele code qui me permettera d'envoyer l Erreur que j'ai pas compri [ par belgacemm ] Salut,Ceci est un extrait de mon programme de gérance de contacts.J'ai un fichier dans lequel j'ai entré 4 contatcs .Lorsque j'essaye de l'ouvrir il y


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales