none
Retrouver un Object de type SerialPort dans un Form RRS feed

  • Question

  • Bonjour en winforms avec C++/cli j'utilise la méthode

    this->Controls->Find("comboBox"+ (e),true);

    pour acceder rapidement à un control de type combobox avec son nom sur un form ou il en y a une 15

    cela me permet de les initialiser plus rapidement.et de faire certains traitements en boucle

    pour les mêmes raison j'aimerai trouver la méthode pour appeler des object de type Serialport dans un Form par leur noms.

    il y a 8 serialport deja crée sur le form qui s'appellent :serialPort1,seriaPort2...etc

    et je veux y acceder par une methode du type serialPort(x) mais comme apparement les serialport ne sont pas des controls du forms mais plutot des objects ca ne marche pas

    comment faire

    merci

    lundi 21 janvier 2013 15:40

Réponses

  • bon j'ai trouvé ce que je cherchait

        System::Collections::IEnumerator^ malist;
                Object^ monObject;
                SerialPort^ PortSerie;
                malist=this->components->Components->GetEnumerator();
                while (malist->MoveNext())
                {
                     monObject = malist->Current;
                     if (monObject->GetType()==System::IO::Ports::SerialPort::typeid)
                    {
                        PortSerie=safe_cast<SerialPort^>(monObject);
                        PortSerie->BaudRate=19200;
                        //etc...
                    }
            
                }

    et là j'ai acces à mes object serialport  sans passer par un nom en dur.

    faut être détective pour trouver une fonction sur microsoft...


    • Marqué comme réponse musecyan vendredi 25 janvier 2013 07:41
    • Modifié musecyan vendredi 25 janvier 2013 07:50
    vendredi 25 janvier 2013 07:41

Toutes les réponses

  • apres recherche SerialPort est du type component (pas objet) mais je ne sais toujours par comment faire pour faire une itération sur tous les componenet lié à un form en les recherchant par nom.

    trouve dans ce form un component du type serialport qui s'appelle "serialPort1"

    traitement

    trouve dans ce form un component du type serialport qui s'appelle "serialPort2"

    traitement

    trouve dans ce form un component du type serialport qui s'appelle "serialPort3"

    traitement

    ...etc...

    mardi 22 janvier 2013 07:56
  • Bonjour,

    Je ne comprends pas pourqoui vous n'utilisez pas directement l'object.

    Quand vous creez un Form et ajouter des serialPort, les objets sont crees dans la classe.

    ex:

    private: System::IO::Ports::SerialPort^ serialPort1;

    Il Suffit alors d'utlilser l'object:

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {   serialPort1->BaudRate=9600;  }

    Cordialement


    • Modifié JoelG_ mercredi 23 janvier 2013 08:10
    mercredi 23 janvier 2013 08:09
  • Je l'ai précisé dans la question du début je peux avoir jusqu'a 8 com en meme temps sur le pc

    et je veux pouvoir avoir des fonction communes pour des traitements,initialisation avec un indice plutot qu'un nom en dur

    pour l'instant j'ai fait dans un classe global un tableau de type array SerialPort^

    que j'initialise au debut TabSerialPort[0]=serialPort1; TabSerialPort[1]=serialPort2;etc..

    et ca marche mais j'aurais aimé un solution plus élégante

    • Modifié musecyan mercredi 23 janvier 2013 08:49
    mercredi 23 janvier 2013 08:47
  • Bonjour,

    OK, je comprends mieux maintenant.

    A mon avis les ojects serials Port ne font pas partient de la Form.

    Donc je pense que la meilleur solution c'est d'utiliser un tableau.

    Cordialement

    jeudi 24 janvier 2013 06:42
  • bon j'ai trouvé ce que je cherchait

        System::Collections::IEnumerator^ malist;
                Object^ monObject;
                SerialPort^ PortSerie;
                malist=this->components->Components->GetEnumerator();
                while (malist->MoveNext())
                {
                     monObject = malist->Current;
                     if (monObject->GetType()==System::IO::Ports::SerialPort::typeid)
                    {
                        PortSerie=safe_cast<SerialPort^>(monObject);
                        PortSerie->BaudRate=19200;
                        //etc...
                    }
            
                }

    et là j'ai acces à mes object serialport  sans passer par un nom en dur.

    faut être détective pour trouver une fonction sur microsoft...


    • Marqué comme réponse musecyan vendredi 25 janvier 2013 07:41
    • Modifié musecyan vendredi 25 janvier 2013 07:50
    vendredi 25 janvier 2013 07:41