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

Windows Forms Discussion :

Sytem.IO.SerialPort Probleme de lecture!


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Par défaut Sytem.IO.SerialPort Probleme de lecture!
    Bonjour,

    Je suis nouveau sur developpez.com et nouveau egalement dans le monde de la programmation. Je suis actuellement en Stage et mon sujet porte sur la lecture de codes bar matriciels, le tout doit etre lu par un port serie de type rs232.

    J'ai choisi le langage c# avec visual c# express.

    Voici mon probleme:

    Je fais une lecture simple du buffer en rs232. Pour cela j'utilise un cable usb vers rs232, donc je peux ouvrir un terminal sur un des ports de ceux-ci et lire/ecrire.
    Mon probleme est que quand je fais une lecture, je perds a chaque fois, le premier caractere.
    Exemple: qwerty --> werty

    Je ne pense pas qu'il s'agisse d'un probleme materiel car tout se passe bien sur terminal et sur un programme en C.

    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
     
     
                   public static SerialPort sp = new SerialPort(); //le tout initialise
                   ....................
     
     
                    sp.ReadTimeout = 1000;
                    sp.WriteTimeout = 1000;
     
                    if (sp.IsOpen) sp.Close();
     
                    sp.Open();
     
                    richTextBox1.Text = sp.ReadExisting();
     
                    sp.Close();
    Voila j'espere que quelqu'un a deja rencontre ce probleme. Et sinon on m'a dit de regarder la classe system.Thread mais je ne sais pas vraiment ce qu'elle fait etant donne que j'ai commence il y a une semaine le c#. Si Quelqu'un pouvait m'orienter vers une methode plus appropriee ou bien corriger mes fautes eventuelles, j'en serais tres reconnaissant.

    Merci beaucoup

    Josco
    ______________________________________

    PS: Desole pour les accents, je travailles sur un clavier QWERTY

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Par défaut
    Personne pour un petit probleme comme celui la?

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    as tu essayé de regarder les différentes propriétés de SerialPort ?

    Genre : BytesToRead

    et une méthode genre : Read(byte[],int32,int32) ?

    The Monz, Toulouse

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Par défaut
    Salut theMonz31,

    Merci de me repondre.

    Oui j'ai deja essaye cette methode. Je voulais aussi si une information se trouve dans le buffer d'entree du port serie, apres ouverture du port, ce peut-il que la perte intervienne a ce moment la?

    Merci

    Josco

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Par défaut
    Bonjour a tous,

    j'ai resolu mon probleme, je vous explique, cela pourra toujours servire a quelqu'un d'autre.

    C'est simple, il faut prealablement ouvrir le port serie avant d'envoyer la donnee. Si la donnee se trouve sur le buffer d'entree du port serie selectionnee, on aura donc la perte du premier caractere.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //ENVOIE DES DONNEES
    sp.Open();
    textBox1 = sp.Existing();
    sp.Close()
    Ce code est mauvais ca ici on pert le premier caractere, je ne sais pas pourquoi, et je ne trouve pas ca tres evident.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sp.Open();
    //ENVOIE DES DONNEES
    textBox1 = sp.Existing();
    sp.Close()
    Ce code est bon, la reception est garantie.

    Merci beaucoup, Probleme resolu!

    Josco

  6. #6
    Membre averti
    Profil pro
    Développeur .NET
    Inscrit en
    Mai 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 50
    Par défaut
    Y a pas de différence entre les deux codes que tu donnes, ou mes yeux me font défaut.

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Par défaut
    Si il y a une grande difference car je marque en commentaire l'endroit ou j'ecris sur le buffer d'entree du port serie. donc si j'ecris sur le buffer d'entree et que j'ouvre par la suite, je perds le premier caractere.
    Ce n'est pas la meme chose dans le deuxieme code ou on a deja ouvert le port avant d'ecrire sur le buffer d'entree.

  8. #8
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Salut

    perso, dans ce genre de situation, avant d'envoyer des données, l'emetteur
    "ouvre" une session.. ce qui permet d'éviter ce genre d'asynchronisme

    The Monz, Toulouse

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Par défaut
    Citation Envoyé par theMonz31
    Salut

    perso, dans ce genre de situation, avant d'envoyer des données, l'emetteur
    "ouvre" une session.. ce qui permet d'éviter ce genre d'asynchronisme

    The Monz, Toulouse
    Que veut tu dire par l'emetteur ouvre une session exactement?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Probleme de lecture de valeur nulle
    Par kenzo080 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 25/10/2010, 17h58
  2. Probleme de lecture d'image
    Par NicolasR dans le forum Java ME
    Réponses: 13
    Dernier message: 28/07/2005, 15h47
  3. [xml]probleme de lecture
    Par mavina dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 22/07/2005, 09h34
  4. Probleme de lecture de classe
    Par wkd dans le forum Composants
    Réponses: 5
    Dernier message: 21/05/2004, 16h20
  5. [LG]probleme de lecture de base de données
    Par jf dans le forum Langage
    Réponses: 14
    Dernier message: 26/06/2003, 16h57

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