Aide port com

Signaler
Messages postés
4
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
17 juin 2008
-
Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008
-
    bonjour à tous,

    Je développe actuellement un logiciel qui dialogue via le port série avec un produit à base de pic. C'est un projet qui a été développé par une autre personne, je continue le développement dans le cadre de mon stage.Il y a un fichier de config qui permet de définir le port COM (COM1,COM2....) présent sur la machine.
    Ce logiciel va être distribué à des personnes ne connaissant pas grand chose en info, lors de l'installation il leur sera nécessaire de définir le port COM de leur machine. Pour cela j'ai donc créé un petit utilitaire qui détecte les ports, les affiche dans une combobox et l'utilisateur tente d'établir une connexion avec le pic. Si ça marche il clic sur un bouton qui permet d'écrir dans le fichier config. Mais si il sélectionne le mauvais port COM il ya un plantage lors de la tentative d'ouverture du port défini.Comment résoudre ce pb?
voici le code:

 comboBox1.DataSource = SerialPort.GetPortNames();

private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem != null)
            {
                if (textBox2.Text != "")
                {
                    if (textBox3.Text != "")
                    {
                        IniFile File = new IniFile(CPt.FIC_CONFIG);
                        textBox1.Text = CPt.FIC_CONFIG;
                        string port = comboBox1.SelectedItem.ToString();
                        File.SetValue("COM", "port", port);
                        File.AddSection("CTC");
                        File.SetValue("CTC", "stock", textBox2.Text);
                        File.SetValue("CTC", "renvoie", textBox3.Text);
                        File.Save();
                    }
                }
            }

//test du port sélectionné dans la combobox
private void button2_Click(object sender, EventArgs e)
        {
            timer1.Start();
            IniFile File = new IniFile(CPt.FIC_CONFIG);
            textBox1.Text = CPt.FIC_CONFIG;
            string port = File.GetValue("COM", "port");
            serialPort1 = new System.IO.Ports.SerialPort(port,
                                                         19200,
                                                         System.IO.Ports.Parity.None,
                                                         8,
                                                         System.IO.Ports.StopBits.One);
            serialPort1.ReceivedBytesThreshold = 1;
            serialPort1.ReadBufferSize = 256;
            serialPort1.ReadTimeout = 1000;
           
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }
           
            serialPort1.Open(); //plantage ici si mauvais port sélectionné

            try //la suite va être une tentative de connexion avec le pic

3 réponses

Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008

Bonjour,
et si tu encadrais ton "serialPort1.Open();" dans un try catch ?
et dans ton catch tu pourrais afficher une messagebox avertissant que le port choisi n'est pas relié.

On peut écrire francais sur un clavier allemand , c'est juste plus long !!!
Messages postés
4
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
17 juin 2008

j'ai essayé de faire un try catch mais le pb c'est que l'application ne passe pas dans le catch, elle bug toujours au niveau du serialport.open();
Messages postés
296
Date d'inscription
mardi 22 avril 2008
Statut
Membre
Dernière intervention
18 août 2008

Ce que je disais c'est :

            serialPort1.ReceivedBytesThreshold = 1;
            serialPort1.ReadBufferSize = 256;
            serialPort1.ReadTimeout = 1000;
           
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }
           
             try( serialPort1.Open();) 
//plantage ici si mauvais port sélectionné
             catch(Exception ex)
                        {
                            MessageBox.show("le port selectionné n'est pas valide, veuillez en choisir un autre");
                            break;
                        }
                                                 

            try
//la suite va être une tentative de connexion avec le pic

On peut écrire francais sur un clavier allemand , c'est juste plus long !!!