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++

  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.

  7. #7
    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
    qu est ce que tu entends par 'je lis'

    et as tu utilisé l'hyperterminal windows ?



    et si j ai bien compris, tu es connecté par liaison série sur le pc1 et par usb sur le pc2 ? consideres que tu as que de la liaison série, pour ton ordi c est transparent d'ou le port com virtuel créé (usb = série )

  8. #8
    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
    oui c ça t'a bien comprit sauf que j'ai déjà essayer de lire le port série virtuelle mais il ne reçois aucune valeur parcontre quand j'envoie des valeur sur le port série virtuelle il reçois les valeur qu'il vient d'écrire . Pour se qui est de l'hyperterminal je suis entrain de faire des test pour comprendre comment ça marche.

  9. #9
    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
    tu donnes un nom bidon, tu ouvres ton port virtuel com3 ou 4 puis tu fixes les paramètres de la connection

    bits par seconde : 9600 dhabitude mais là c est a toi de voir avec le pc1
    ensuite : 8
    aucun
    1
    aucun

  10. #10
    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
    ok ben je rçois rien sur l'hyperterminal :-(
    par contre si je fait directement de RS232 vers RS232 ça marche bien donc merci pour l'info ça poura peut etre me reservir

  11. #11
    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
    si l hyperterminal ne reçoit rien c est que rien n est envoyé lol, c est un logiciel qui marche tu peux en être sur

  12. #12
    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
    oui ou que le port virtuelle qui est créer ne marche pas bien

  13. #13
    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
    non plus, soit plus précis sur ta maniere d envoyer des caracteres via RS232

  14. #14
    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
    Ben j'envoi un code ASCII a partir d'un programme de lecture et d'écriture sur les port COM ou tu peut changer la vitesse la pariter .le nombre de bit de donné et le bits d'aréts mais se programme marche car quand je relie les deux pc entre eux par un cable RS232 et je lance le programme sur les deux machine ça marche on voit les valeur envoyer apparaitre dans la fenetre de lecture du deuxiéme pc

  15. #15
    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
    c est surprenant, s il créé bien le port com c est qu il le reconnait et puis il se comporte comme un port série ensuite

  16. #16
    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
    Ben oui c'est trés bizare c pour ça j'esaille de lire le port usb mais j'ai toujour soit 126"~" soit 127" " du coup je comprend pas trop j'ai lue sur un post que quelqu'un passai par un fichier .ini mais je voit pas coment ça marche n'y l'intéret. Quelqu'un a des information sur le sujet

  17. #17
    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
    pour ce qui est de l usb c est un petit peu compliqué

  18. #18
    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
    oui j'ai vue ça que c'étai compliquer mais si j'y arive je mettrai un .exe et le code en ligne. Par que vue le nonbre de gens j'ai rencontrer sur les forum et qui on du mal avec. Si quelqu'un a une idée pour me débloquer qu'il n'ésite pas.

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