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....
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....
Bonjour
Tu ne peut en utiliser qu'un a la fois (cf la doc)
Donc il ne faut pas oublier de refermer le premier avant d'utiliser le second (avec .Close)Remarks
Only one open connection can exist per SerialPort object.
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
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?
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
Je serais curieux de savoir quel protocole peut gérer ça comme deux périphériques indépendants.
Tu peux nous en dire plus?
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
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.
on m'a dit de faire 2 classes pour faire plus propre, car ces deux peripheriques n ont rien a voir
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.
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?
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).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager