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 :

[C#][SerialPort]Comment gérer 2 périphériques sur même Port?


Sujet :

C#

  1. #1
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut [C#][SerialPort]Comment gérer 2 périphériques sur même Port?
    Bonjour

    J'ai un petit probleme avec la classe SerialPort : dans mon application j'ai 2 objets SerialPort ayant exactement la meme configuration. Lorsque le 2eme tente d acceder au port il a Acces Denied....

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Bonjour

    Tu ne peut en utiliser qu'un a la fois (cf la doc)
    Remarks

    Only one open connection can exist per SerialPort object.
    Donc il ne faut pas oublier de refermer le premier avant d'utiliser le second (avec .Close)

    Si tu passe de l'un a l'autre assez rapidement, il se pourrait que tu soit oblige de faire un GC.Collect juste apres la fermeture du premier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Un port série est une entré/sortie physique, il sert à communiquer avec un périphérique, un seul, qui y est connecté.
    Deux objets qui accèdent au même port en même temps, ça ne peut pas fonctionner (logique), mais l'un après l'autre, ça veut dire qu'on change de périphérique?

  4. #4
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    non j'ai 2 peripheriques branchés sur le meme port. en fait l'un est branché a l ordinateur et l'autre sur le 1er peripherique

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Je serais curieux de savoir quel protocole peut gérer ça comme deux périphériques indépendants.
    Tu peux nous en dire plus?

  6. #6
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    par defaut c'est le premier peripherique qui prend les donnees que tu lui envoies, mais tu peux lui envoyer une commande pour que qu'il transfere au second peripherique tout ce qui suit

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Ok, donc clairement, il ne faut qu'une classe pour gérer le port et la communication.
    Mon idée :
    Le port est ouvert à la création d'une instance de cette classe (avec ses paramètres) et fermé dans le Dispose().
    Elle comporte une méthode permettant de changer le périphérique cible (ou directement un paramètre dans la fonction d'envoi des commandes).
    La lecture peut être synchrone ou asynchrone (plus dur) selon le besoin.

  8. #8
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    on m'a dit de faire 2 classes pour faire plus propre, car ces deux peripheriques n ont rien a voir

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Oui, mais on ne parle pas de la même chose.
    Il faut effectivement deux classes qui représentent chacune un périphérique mais il existe un seul canal de communication, il doit donc être représenté par une autre classe.
    Chaque objet "périphérique" utilise l'objet "communication" (unique) pour dialoguer avec le périphérique réel.

  10. #10
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    ok mais je sais pas tres bien comment mettre tout ca en place. Que pensez vous de mettre le 1er peripherique en singleton et de lui ajouter une methode pour acceder a son port?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Pas besoin d'utiliser un singleton, il suffit d'instancier un seul objet!

    Comme je l'ai dit, le port doit être unique, cependant chacun des périphérique doit y avoir accès.
    Il faut donc que chaque périphérique ait une propriété Port à laquelle on affecte l'objet Port (il peut être passé en paramètre dans le constructeur).

  12. #12
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    ok merci!!!!

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

Discussions similaires

  1. Comment gérer plusieurs sites sur un même hébergement ?
    Par Gaara-Manga dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 12/11/2009, 18h36
  2. Réponses: 4
    Dernier message: 26/08/2009, 21h55
  3. [VB6] Comment gérer un Timeout sur l'api HttpSendRequest
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/06/2006, 10h15
  4. [Dates] Comment gérer les dates sur un blog ?
    Par psychoBob dans le forum Langage
    Réponses: 10
    Dernier message: 14/06/2006, 14h09
  5. comment gérer plusieurs locks sur une table?
    Par charluber dans le forum Oracle
    Réponses: 4
    Dernier message: 18/04/2006, 21h28

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