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

C# Discussion :

probleme avec SerialPort


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Par défaut probleme avec SerialPort
    Bonjour,
    Je veux écrire des bytes sur le port COM1.
    Pour cela j'utilise l'objet SerialPort.
    Voici un exemple très simple:

    SerialPort Port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
    byte[] buf = new byte[4];
    buf[0] = 1;
    buf[1] = 2;
    buf[2] = 3 ;
    Port.Open();
    Port.Write(buf, 0, 3);
    Port.ReadByte();
    Port.Close();

    Tout se passe bien si la dernière valeur de mon tableau n'est pas 0:le champ BytesToRead contient une valeur > 0 et je peut utiliser la méthode ReadByte().
    Par contre si la dernière valeur de mon tableau est 0 (buf(2) = 0), alors BytesToRead = 0 et la méthode ReadByte ne marche pas.
    J'ai essayé de jouer sur tous les attributs de l'objet SerialPort mais sans succès.
    Comment faire pour que ca marche avec un 0 dans le dernier élément du tableau?

  2. #2
    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

    excuses, mais tu confonds tout !

    Quand tu fais ReadByte, tu lis les données reçus et disponible sur le port série.

    Donc, le contenu dépend de l'appareil qui se trouve en bout de ligne... et qui réagit peut-être différemment quand on lui émet des 0 ?

    The Monz, Toulouse

  3. #3
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Par défaut
    En fait j'ai migré un ancien code fait sur framework 1.1, époque ou l'objet SerialPort n'existait pas.
    J'utilisais alors l'API windows (CreateFile, PurgeComm, SetCommState, ...)
    Mon appareil en bout de ligne gère très bien les 0 avec l'ancien code.
    Par contre ca se passe mal avec l'objet SerialPort, sachant que j'envoie les memes bytes sur le port COM qu'avec mon ancien code.
    Je rappelle, que mon problème survient uniquement si le dernier byte de mon tableau est 0. S'il y a des 0 ailleurs dans le tableau, ca ne pose pas de problème.
    Si je met le champ databits=7 au lieu de databits=8, ca marche mais ca ne me satisfait pas.
    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 12
    Par défaut
    Il est possible que ce soit à cause du "StopBits.One" (cf instanciation de l'objet SerialPort).
    En effet, le bit d'arrêt étant "0" et comme tu mets un "0" en fin de message, il est possible que le contrôleur de port le détecte en tant que bit d'arrêt.

    Essaye avec "StopBits.None".

  5. #5
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 7
    Par défaut
    StopBits.None n'est pas supporté (indiqué dans la doc), une exception est levée.

Discussions similaires

  1. [C#] Probleme avec SerialPort
    Par duky02 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 25/07/2006, 08h54
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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