Bonjour à tous,

je viens une fois de plus vous solliciter pour m'aider à réaliser une étape de plus dans mon projet. Celui-ci consiste à rapatrier des données provenant d'un capteur à afficher la valeur retourner et à créer un historique en enregistrant les différentes données dans un fichier texte. Ces deux parties sont ok. Maintenant j'aimerais bien pouvoir visualiser le contenu en même temps que celui-ci est écrit. Je sais visualiser un fichier mais pas celui qui est en train d'etre écrit. Comment puis-je m'y prendre? Peut-on lire un fichier alors qu'il est en écriture?

Voici mon code
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using System.Net;
 
namespace SerialComm
{
    public partial class Form1 : Form
    {
        static SerialPort serialPort1;
        string RxString= null;
        public Form1()
        {
            serialPort1 = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
            InitializeComponent();
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
            serialPort1.ReadTimeout = 1000;
 
        }
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            RxString += serialPort1.ReadExisting();
            RxString = RxString.Substring(RxString.Length - 8);
 
 
              this.Invoke(new EventHandler(AfficherTextASync));
        }
        string fileContent ;
        string nomfichier;
 
 
        private void AfficherTextASync(object sender, EventArgs e)
        {
 
            textBox1.Text = RxString;
            fileContent = DateTime.Now.ToString("dd/MM/yyyy HH:mm") +"   "+ RxString;
 
            if (increment>0)
 
            {
            try
                {
 
                    TextWriter writer;
                    writer = File.AppendText(nomfichier);
                    writer.WriteLine(fileContent);
                    writer.Close();
 
 
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Une erreur est survenue lors de l'écriture du fichier: {0}.", ex.Message);
                }
 
            }
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
 
                serialPort1.Open();
 
 
            }
 
            catch (Exception ex)
            {
                MessageBox.Show("connexion impossible ou vous êtes déjà connecté");
            }
 
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Form f = new Form2();
            f.Show();
        }
 
 
        int increment = 0;
 
        public void button2_Click(object sender, EventArgs e)
        {
 
 
 
             string fileContent = DateTime.Now.ToString("dd/MM/yyyy HH:mm") + "  début" ;
            saveFileDialog1.Filter = "Fichiers texte|*.txt|Tous les fichiers|*.*";
            saveFileDialog1.FilterIndex = 1;
 
            saveFileDialog1.RestoreDirectory = true;
 
 
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                nomfichier = saveFileDialog1.FileName;
                try
                {
                    Stream myStream;
 
                    if ((myStream = saveFileDialog1.OpenFile()) != null)
                    {
                        using (myStream)
                        {
                            using (StreamWriter w = new StreamWriter(myStream, Encoding.UTF8))
                            {
                                w.WriteLine(fileContent);
                            }
 
                            increment=increment+1;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Une erreur est survenue lors de l'écriture du fichier: {0}.", ex.Message);
                }
            }
 
 
 
 
        }
    }
}