IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

readfile re�ois valeur dif�rente de celle envoyer


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Par d�faut readfile re�ois valeur dif�rente de celle envoyer
    Bonjour j'ai un probl�me mon readfile revoit une valeur dif�rente de celle envoyer. j'envoi les valeur grace a un autre ordinateur a l'aide d'un cable qui traduit du RS232 en USB. Et je lit l'usb comme cela:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    int  buf[16];
    hCom = CreateFile(detail->DevicePath,GENERIC_READ | GENERIC_WRITE , FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING,NULL, NULL);
    bResult=ReadFile(hCom, buf,1, &Read, NULL );
    DWORD test2 = GetLastError();//lecture du port usb
    buf recois la valeur 127 ou 126 si je le d�clare en byte ou DWORD sinon il re�ois un chifre souvent identique et ne corespondant a rien.
    Read re�ois 1 donc on lit bien un octet
    et test2 est �gal a 259

  2. #2
    Membre chevronn�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par d�faut
    j'envoi les valeur grace a un autre ordinateur a l'aide d'un cable qui traduit du RS232 en USB
    et ton ordi traduit l usb en RS232


    hCom = CreateFile(detail->DevicePath,GENERIC_READ | GENERIC_WRITE , FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, OPEN_EXISTING,NULL, NULL);
    essaie plutot :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    OVERLAPPED osReader = {0};
     
    hCom = CreateFile("COMx:",GENERIC_READ | GENERIC_WRITE , NULL,NULL, OPEN_EXISTING,FILE_FLAG_OVERLAPPED, NULL);
    osReader.hEvent = CreateEvent(NULL, true, false, NULL);
    ReadFile(hCom, buf,1, &Read, &osReader);
    et buf c est un char tab pas un int tab


    ce que tu peux faire aussi c est de tester avec l'hyperterminal, tu verras bien ce qu il te donnera

  3. #3
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    dans la faq il y a un post complet sur la gestion du port s�rie ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Par d�faut
    c'est quoi l'hyperterminal et on le trouve ou sinon lire avec le port com ne marche pas il lit tout temps 0 j'avais d�j� essayer

  5. #5
    Membre chevronn�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par d�faut
    ce n est pas parce qu il lit o que �a ne marche pas, et je doute que tu puisses lire de l'usb ainsi . Quand tu branches un cable usb (connection avec un device), un nouveau port com apparait sur ton PC (souvent COM4).

    donc pour ouvrir une connection tu peux t y prendre de la maniere suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    hComm = CreateFile("COM4:",GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
     
    if (hComm == INVALID_HANDLE_VALUE) 
    {
         return false;
    }
    FillMemory(&dcb, sizeof(dcb), 0);
    dcb.DCBlength = sizeof(dcb);
     
    GetCommState (hComm, &dcb);
     
     
    dcb.BaudRate = baudrate;
    dcb.fBinary = true;
    dcb.fParity = true;
    dcb.fOutxCtsFlow = false;
    dcb.fOutxDsrFlow = false;
    dcb.fDtrControl = DTR_CONTROL_DISABLE;
    dcb.fDsrSensitivity = false;
    dcb.fTXContinueOnXoff = false;
    dcb.fOutX = false;
    dcb.fInX = false;
    dcb.fErrorChar = false;
    dcb.fNull = false;
    dcb.fRtsControl = RTS_CONTROL_DISABLE;
    dcb.fAbortOnError = false;
    dcb.ByteSize = datanumber;
    dcb.Parity = parity;
    dcb.StopBits = stopbits;
    dcb.XonLim = 0;
    dcb.XoffLim = 0;
    dcb.XonChar = 0;
    dcb.XoffChar = 0;
     
     
    if (!SetCommState(hComm, &dcb))
    {
    	DWORD dwError = GetLastError ();
    	return false;
    }
    else return true;
    ceci est bien sur un exemple, a toi de faire celui qui te correspond le mieux, mais reste ne asynchrone quand m�me




    puis la r�ception (juste les �lements importants)
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    osReader.hEvent = CreateEvent(NULL, true, false, NULL);
     
    if (osReader.hEvent == NULL)
    return false;
     
    if (!ReadFile(hComm, bof, READ_BUF_SIZE,&dwRead,&osReader)) 
    {
    	if (GetLastError() != ERROR_IO_PENDING) return false;
    }
    mon appli marche et le device est raccord� par liaison usb





    mais comme l a dit farscape :

    http://c.developpez.com/faq/vc/?page...WithSerialPort


    ps : l hyperterminal windows permet de faire tout ce que tu veux faire sans que tu l ai a faire

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Par d�faut
    Alors j'ai bien comprit vos proposition pour lire un port RS232. Afin d'etre plus clair je vais vous dire l'ensemble des test que j'avais d�j� fait. Alors j'ai deux ordinateur un qui envoit des information par le port RS232 l'autre qui re�ois les information. Si je lit le port RS232 COM 1 du pc2 �a marche si je lit le port usb �a lit toujours la meme chosse et si je lit le lit le port COM3 qui est le port virtuelle qui est cr�er quand j'envoi avec le pc1 je lit rien par contre si j'envoie une information par le com3 alors le com3 relis l'information qu'il a lui meme enfvoyer il boucle sur lui meme en gros.

Discussions similaires

  1. Probl�me pour lire une valeur dans une cell
    Par heiriquent dans le forum MATLAB
    R�ponses: 4
    Dernier message: 28/07/2013, 23h26
  2. Afficher la valeur d'une CELL avec SPRINTF
    Par TopCao dans le forum MATLAB
    R�ponses: 3
    Dernier message: 07/03/2010, 09h08
  3. R�ponses: 0
    Dernier message: 06/12/2009, 20h58
  4. R�ponses: 8
    Dernier message: 11/05/2007, 11h47
  5. R�ponses: 9
    Dernier message: 28/06/2006, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo