Bonjour
Je dévellope une appli qui recoit des trames(venant d'une pompe a essence) via le port série de mon PC et je les stocks dans un fichier texte les décomposes par la suite pour les affichés dans un DataGridView.
Du coup mon appli doit tourné en non Stop sur le PC j'utilise donc l'evenment du port séries qui se déclenche lorsque celui ci recoit une trame.
Cependant je voudrai afficher ma trame dans le dataGridView une fois la trame recu et décomposé sans avoir a appuyer sur un bouton.Malheuresement cela me retourne un message d'erreur lié a un thread
System.InvalidOperationException was unhandled
Message="Opération inter-threads non valide*: le contrôle '' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé."
Et pas de chance j'y connais pas grand chose en thread à part la théorie.
Voici mon code :
d'avance merci et en espérant que vous pouriez m'aider
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 private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string reponse = receptionTrame(); //Réception de la trame émise via le port série lectureTxt(); } /* * * * * LECTURE DU FICHIER TEXTE ET EXPORT VERS LE DATAGRIDVIEW * * * * */ private void lectureTxt() { StreamReader read = new StreamReader(path); //Ouverture d'un flux de lecture de fichier vers "C:\trame\trame.txt" int i=0; string[] trameRetour = new string[10]; //tableau de chaine de retour dataGridView1.Rows.Clear(); //Vidage du DataGridView i = 0; while (!read.EndOfStream) //Boucle tant que le flux de lecture arrive à la fin du ficher { string lecture = read.ReadLine(); //Récupération de la ligne du ficher dans une varaible if (lecture != "\n" && lecture != "") //test si la trame est vide ou correspond a un saut de ligne { trameRetour = decomposeTrame(lecture); //Décompose la trame passé en paramétre dataGridView1.Rows.Add(); //Ajoute une ligne au DataGridView dataGridView1[0, i].Value = i + 1; //Numéro de la trame dataGridView1[1, i].Value = trameRetour[1]; //Champs correspondant aux colones dataGridView1[2, i].Value = trameRetour[2]; // dataGridView1[3, i].Value = trameRetour[3]; // dataGridView1[4, i].Value = trameRetour[4]; // dataGridView1[5, i].Value = trameRetour[5]; // dataGridView1[6, i].Value = trameRetour[6]; // dataGridView1[7, i].Value = trameRetour[7]; // dataGridView1[8, i].Value = trameRetour[8]; // dataGridView1[9, i].Value = trameRetour[9]; // dataGridView1[10, i].Value = trameRetour[10]; // i++; } } read.Close(); //Fermeture du flux de lecture }
Partager