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 :

Ouverture(s) de port RS232


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations forums :
    Inscription : Juin 2012
    Messages : 168
    Points : 397
    Points
    397
    Par défaut Ouverture(s) de port RS232
    Bonjour,

    j'ai une petite question, j'ai reprit du code d'un autre dev. en C#.

    A ce que j'ai comprit le code fait une ouverture de port à chaque commande envoyée sur la RS232, faisant preuve de bon sens n'est-il pas mieux d'ouvrir à l'ouverture du programme et de ferme le port à sa fermeture tout en contrôlant le statut du port ?

    Merci de vos réponse.

    Cordialement.

    NahMean

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Il n'y a pas de réponse absolue à ta question.

    Lorsqu'on utilise une ressource, quelle quel soit, généralement on fait en sorte d'appliquer 2 principes fondamentaux totalement contradictoires :
    - On évite d'effectuer en permanence des ouvertures/fermetures intempestives à chaque utilisation
    - On évite de maintenir une connexion ou une monopolisation de la ressource lorsque cela ne se justifie pas.

    On est donc en permanence sur un compromis entre ces 2 principes. Si tu envoie une salve de commandes, il est évidemment plus judicieux de maintenir la réservation de la ressource (le port ouvert par exemple). Par contre, si, pendant un certain temps, tu ne vas pas utiliser la ressource, il est pas forcément utile de la conserver réservée. Par un certain temps, ça peut être de quelques ms à des temps plus longs.
    Par exemple, tu as terminé ta salve d'utilisations (ici par exemple envoi de commandes sur le port rs232), tu passe à un autre process dans ton code, qui n'a aucun lien avec ta ressource, comme par exemple, lecture ou écriture dans une base de données, écriture d'un fichier log, ou autre, il n'y a aucune utilité à ce que tu conserve la ressource (ici le port ouvert), et ce même si cet autre process ne dure que quelques ms.

    POUR conserver le port ouvert (liste non exaustive) :
    - Limite les commandes systèmes d'allocation/désallocation de ressource
    - Limite donc les pertes de temps liées à ces allocations/désallocations
    - Permettre à cette ressource (dans le cas d'une ressource bidirectionnelle comme un port rs232) de communiquer avec le process de sa propre initiative
    - Conservation de la réservation pour ne pas qu'un autre process s'empare de cette ressource.
    - .....

    CONTRE (liste non exhaustive) :
    - Réservation inutile et bloquante de la ressource, elle ne peut pas être utilisée par un autre process
    - En cas du plantage du logiciel, la ressource reste bloquée et est donc inutilisable, y compris par ce process après relance de celui-ci
    - Les logiciels étant organisés en fonctions et méthodes, nécessité de conserver la ressource dans une variable qui aura une portée externe à la fonction qui l'aura allouée, donc en gros une variable globale
    - ....

    Ensuite concernant spécifiquement ton code, il faudrait voir pourquoi ça a été fait comme ça.
    Peut-être que le développeur ne savait pas faire autrement, ne savait pas conserver le port ouvert entre 2 utilisation.
    Peut-être qu'il a bien analyser au contraire qu'il n'y avait aucune utilité à le faire.
    Peut-être même qu'il existe une contrainte qui nécessite qu'il soit fermé après utilisation (port partagé, par exemple).
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations forums :
    Inscription : Juin 2012
    Messages : 168
    Points : 397
    Points
    397
    Par défaut
    Merci pour votre réponse, oui je pense bien que ma question n'as pas de réponse tranchée à en tirer, mais bon creusons le problème.

    La seule utilisation de l'ouverture/fermeture intempestive dans ce code, pour moi, concerne la destination des commandes RS232 :

    -Plusieurs cartes en série

    -Chaque commande cible une adresse d'une carte uniquement

    Alors c'est peu être pour éviter de recevoir des parasites, on ferme la connexion, ou autres je ne sais pas.

    Sinon pour ce qui est du "POUR conserver le port ouvert", le soft s'occupe uniquement de l'envoi/réception sur la RS, il discute (pipe) juste avec un autre soft qui s'occupe de redonner des infos à l'écran et de gérer la BDD.

    Donc pour moi il doit rester ouvert, dans mon cas, qu'en pensez-vous ?

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Oui !
    Même si avec le peu d'info, il est difficile de trancher définitivement, mais à priori, d'après ce que tu en dis, le port pourrait rester ouvert.

    Note que j'utilise "pouvoir" et non "devoir" comme toi, car, sauf spécificité particulière propre à ton programme, il n'y a pas obligation.

    Ensuite, encore une fois, faut voir pour ton programme propre, s'il n'y a pas une spécificité cachée soit au niveau code lui-même, soit au niveau fonctionnement qui fait qu'il faut fermé le port régulièrement. Mais ça, il n'y a que toi pour seul juge.


    Ensuite, juste un conseil si tu envisage de refaire le code :
    Il est parfois risquer de modifier quelque chose qui marche s'il n'y a aucune raison en terme de fonctionnement de le faire.
    Il est parfois plus judicieux de garder un code pourri, mais qui marche et qui est validé, que de vouloir le remplacer par un code "plus propre" et d'y introduire (involontairement évidemment) des bugs qui peuvent se révéler handicapants.
    Mais là encore, c'est toi qui a les choses entre les mains, c'est à toi (et les personnes concernées autour de toi) de juger.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations forums :
    Inscription : Juin 2012
    Messages : 168
    Points : 397
    Points
    397
    Par défaut
    Note que j'utilise "pouvoir" et non "devoir" comme toi
    Oui je ne mesure pas mes paroles excusez-moi donc

    C'est vrai que je prend un risque de faire cette modification (bugs ...) mais pour des gros soucis de performance visuel, je vais le faire.

    C'est parti pour debugger, merci des conseils, a plus tard peu être.

    Cordialement

    NahMean

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

Discussions similaires

  1. lecture/ecriture des broches RTS/CTS du port RS232
    Par .:: sly51 ::. dans le forum C
    Réponses: 3
    Dernier message: 24/10/2006, 15h28
  2. [C++, COM] Ouverture d'un port RS232 > 9
    Par fred777888999 dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/06/2006, 14h26
  3. Port RS232
    Par jcharles dans le forum Composants VCL
    Réponses: 25
    Dernier message: 14/06/2005, 23h04
  4. Port RS232 et chargement d'un soft
    Par chrisis dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 20/05/2005, 13h22
  5. est il possible de forcer l'ouverture d'un port
    Par voyageur dans le forum Développement
    Réponses: 86
    Dernier message: 23/10/2004, 20h26

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