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 :

Problème avec visual studio 2012 et arduino


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Août 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Août 2015
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Problème avec visual studio 2012 et arduino
    Bonjour,

    J'ai un programme sur Arduino qui envoie des données(température et humidité) , j'enregistre l'ensemble sur carte SD. cela fonctionne bien. Par contre,
    j'envoie aussi la température sur le port série et je remplis un datagrid et je crée un fichier Excel avec courbe après l'appui sur un bouton.
    Le fichier se crée mais ensuite, j'ai de temps en temps une erreur lors de l'appui sur ce bouton qui crée le fichier Excel et ferme le port.

    Voici un morceau de mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     private void Form1_Load(object sender, EventArgs e)
            {
                //on commence par lister les voies séries présentes
                String[] ports = SerialPort.GetPortNames(); //fonction statique
                //on ajoute les ports au combo box
                foreach (String s in ports)
                    this.comboBox1.Items.Add(s);
                //on ajoute les vitesses au combo des vitesses
                this.comboBox2.Items.Add("300");
                this.comboBox2.Items.Add("1200");
                this.comboBox2.Items.Add("2400");
                this.comboBox2.Items.Add("4800");
                this.comboBox2.Items.Add("9600");
                this.comboBox2.Items.Add("14400");
                this.comboBox2.Items.Add("19200");
                this.comboBox2.Items.Add("38400");
                this.comboBox2.Items.Add("57600");
                this.comboBox2.Items.Add("115200");
                //valeurs par défaut
                comboBox1.SelectedIndex = 3;
                comboBox2.SelectedIndex = 4;
    
                this.myDelegate = new AddDataDelegate(AddDataMethod);// création d'un delegate pour ajout dans datagrid
            }
    
            void port()
            {
                if (!serialPort1.IsOpen)
                {
                    serialPort1.PortName = this.comboBox1.SelectedItem.ToString();// Numéro du port
                    serialPort1.BaudRate = int.Parse(this.comboBox2.SelectedItem.ToString());//9600;
                    serialPort1.Parity = Parity.None;
                    serialPort1.StopBits = StopBits.One;
                    serialPort1.DataBits = 8;
                    serialPort1.Handshake = Handshake.None;                
                    serialPort1.Open(); //modif inversée avec ligne du dessous             
                    serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);              
                    
                }
                
            }
            public void AddDataMethod(string myString)
            {
                string heure = DateTime.Now.ToString("HH");
                string min = DateTime.Now.ToString("mm");
                string enreg = heure + "H" + min;            
                myString = myString.Replace("\r", "");
                char[] sep = { ',' };
                string[] tab = myString.Split(sep);
                dataGridView1.Rows.Add(enreg, tab[0],tab[1]);
                
            }
    
            private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                if (serialPort1.IsOpen)
                {
                    SerialPort sp = (SerialPort)sender;
                    string s = sp.ReadLine();// récupération des valeurs envoyées par Arduino   LE PROGRAMMA BLOQUE ICI  
                    dataGridView1.Invoke(this.myDelegate, new object[] { s }); 
                    //passage par le délégé pour remplir datagridview1 qui n'a pas été créé dans ce thread
                    
                }
            }
    
     private void button4_Click(object sender, EventArgs e)
            {
                
                EcrireFichierExcel(); //modif 15/4 
                if (serialPort1.BytesToRead == 0) { serialPort1.Close(); serialPort1.Dispose(); }
                //dodo();            
                Application.Exit(); 
    
            }
    Image du résultat en cas d'erreur Nom : Erreur.JPG
Affichages : 181
Taille : 66,2 Ko

    MERCI D'AVANCE POUR TOUTE AIDE

  2. #2
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Août 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Août 2015
    Messages : 16
    Points : 13
    Points
    13
    Par défaut J'ai trouvé...
    Code réception data

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                while (!(serialPort1.BytesToRead == 0 && serialPort1.BytesToWrite == 0) && serialPort1.IsOpen)
                //if (serialPort1.IsOpen)
                {
                    SerialPort sp = (SerialPort)sender;
                    string s = sp.ReadLine();// récupération des valeurs envoyées par Arduino                
                    dataGridView1.Invoke(this.myDelegate, new object[] { s }); 
                    //passage par le délégué pour remplir datagridview1 qui n'a pas été créé dans ce thread
     
                }
            }
    Code enregistrement et fermeture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            private void button4_Click(object sender, EventArgs e)
            {
                EcrireFichierExcel();            
                serialPort1.Close();
                serialPort1.Dispose();            
                Application.Exit(); 
     
            }

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

Discussions similaires

  1. Problème de debogage avec visual studio 2012
    Par olbi dans le forum VB.NET
    Réponses: 2
    Dernier message: 20/01/2015, 09h02
  2. problème avec visual studio
    Par cecile15 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/04/2008, 22h39
  3. Problème avec visual studio
    Par Invité dans le forum C#
    Réponses: 0
    Dernier message: 18/12/2007, 18h00
  4. Problème avec Visual Studio 2005 pour les MessageBox
    Par saphir54321 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/04/2007, 23h27
  5. Problème avec visual studio installer
    Par logs77 dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 26/09/2006, 15h46

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