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
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 !!!
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 !!!