Member 13307200 Ответов: 1

Я хочу прочитать файлы на отметке таймера VB.NET


Привет,
Я хочу прочитать файл на отметке таймера ,мне нужно выбрать диапазон файлов из текстового поля, а затем прочитать эти файлы. я могу читать каждый файл,но, поскольку я строю график из этих файлов, мне нужно продолжение каждого файла, но график непосредственно показывает последний файловый график, когда я добавляю окно сообщения, он показывает для каждого файла, а затем переходит к следующему файлу. я хочу, чтобы график был похож на фильм, который идет за другим, каждый файл должен катиться дальше.

Спасибо

Что я уже пробовал:

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        For Each file1 As String In files
            Chart1.Show()
            Chart2.Show()
            Chart3.Show()
            Dim name As String = Path.GetFileNameWithoutExtension(file1)
            Dim fileNo As Integer



            If Integer.TryParse(name.Substring(1), fileNo) And fileNo >= TextBox1.Text AndAlso fileNo <= TextBox2.Text Then
                Dim f1 As String
                f1 = IO.File.ReadAllText("C:\Users\mks\Desktop\Newfolder\p" & fileNo & ".sp1")


                TextBox3.Text = file1
                Dim wFile, wFile1 As System.IO.FileStream
                Dim byteData(), byteData1(), byteDatayp(), byteDatayn(), byteDatabp(), byteDatabn(), byteDatarp1(), byteDatarn1(), byteDatayp1(), byteDatayn1(), byteDatabp1(), byteDatabn1() As Byte
                Dim rn, rp, yp, yn, bp, bn As String
                Dim r As String = Regex.Replace(f1.ToString, "[^1-9Z-]", "")
                '    Console.WriteLine(r)
                r = Regex.Replace(r.ToString, "[-]", "0")
                Dim elements() As String = Regex.Split(r, "Z")
                For Each element In elements

                Next

                rp = elements(0)
                rn = elements(1)
                yp = elements(2)
                yn = elements(3)
                bp = elements(4)
                bn = elements(5)

                byteData = Encoding.ASCII.GetBytes(rp)
                byteData1 = Encoding.ASCII.GetBytes(rn)
                byteDatayp = Encoding.ASCII.GetBytes(yp)
                byteDatayn = Encoding.ASCII.GetBytes(yn)
                byteDatabp = Encoding.ASCII.GetBytes(yp)
                byteDatabn = Encoding.ASCII.GetBytes(yn)

                System.IO.File.WriteAllText("C:\Users\mks\Desktop\Newfolder\ro.mod", "")
                wFile = New FileStream("C:\Users\mks\Desktop\Newfolder\ro.mod", FileMode.Append)
                wFile.Write(byteData, 0, byteData.Length)
                wFile.Close()
                System.IO.File.WriteAllText("C:\Users\mks\Desktop\Newfolder\rs.mod", "")
                wFile1 = New FileStream("C:\Users\mks\Desktop\Newfolder\rs.mod", FileMode.Append)
                wFile1.Write(byteData1, 0, byteData1.Length)
                wFile1.Close()
                System.IO.File.WriteAllText("C:\Users\mks\Desktop\Newfolder\yo.mod", "")
                wFile = New FileStream("C:\Users\mks\Desktop\Newfolder\yo.mod", FileMode.Append)
                wFile.Write(byteDatayp, 0, byteDatayp.Length)
                wFile.Close()
                System.IO.File.WriteAllText("C:\Users\mks\Desktop\Newfolder\ys.mod", "")
                wFile1 = New FileStream("C:\Users\mks\Desktop\Newfolder\ys.mod", FileMode.Append)
                wFile1.Write(byteDatayn, 0, byteDatayn.Length)
                wFile1.Close()
                System.IO.File.WriteAllText("C:\Users\mks\Desktop\Newfolder\bo.mod", "")
                wFile = New FileStream("C:\Users\mks\Desktop\Newfolder\bo.mod", FileMode.Append)
                wFile.Write(byteDatabp, 0, byteDatabp.Length)
                wFile.Close()

                System.IO.File.WriteAllText("C:\Users\mks\Desktop\Newfolder\bs.mod", "")
                wFile1 = New FileStream("C:\Users\mks\Desktop\Newfolder\bs.mod", FileMode.Append)
                wFile1.Write(byteDatabn, 0, byteDatabn.Length)
                wFile1.Close()
                File.Delete("C:\Users\mks\Desktop\Newfolder\ro1.mod")
                File.Delete("C:\Users\mks\Desktop\Newfolder\yo1.mod")
                File.Delete("C:\Users\mks\Desktop\Newfolder\bo1.mod")

                File.Delete("C:\Users\mks\Desktop\Newfolder\rs1.mod")
                File.Delete("C:\Users\mks\Desktop\Newfolder\ys1.mod")
                File.Delete("C:\Users\mks\Desktop\Newfolder\bs1.mod")
                For i As Integer = 0 To f1.Length - 1 Step 1
                    If i Mod 1 = 0 Then


                    End If
                    Try
                        Dim rp1 As String = i / 10 & " " & rp.Substring(i, 1) & Environment.NewLine

                        Dim rn1 As String = i / 10 & " -" & rn.Substring(i, 1) & Environment.NewLine
                        Dim yp1 As String = i / 10 & " " & yp.Substring(i, 1) & Environment.NewLine
                        Dim yn1 As String = i / 10 & " -" & yn.Substring(i, 1) & Environment.NewLine
                        Dim bp1 As String = i / 10 & " " & bp.Substring(i, 1) & Environment.NewLine
                        Dim bn1 As String = i / 10 & " -" & bn.Substring(i, 1) & Environment.NewLine

                        byteDatarp1 = Encoding.ASCII.GetBytes(rp1)
                        byteDatarn1 = Encoding.ASCII.GetBytes(rn1)
                        byteDatayp1 = Encoding.ASCII.GetBytes(yp1)
                        byteDatayn1 = Encoding.ASCII.GetBytes(yn1)
                        byteDatabp1 = Encoding.ASCII.GetBytes(bp1)
                        byteDatabn1 = Encoding.ASCII.GetBytes(bn1)

                        wFile = New FileStream("C:\Users\mks\Desktop\Newfolder\ro1.mod", FileMode.Append)
                        wFile.Write(byteDatarp1, 0, byteDatarp1.Length)
                        wFile.Close()

                        wFile1 = New FileStream("C:\Users\mks\Desktop\Newfolder\rs1.mod", FileMode.Append)
                        wFile1.Write(byteDatarn1, 0, byteDatarn1.Length)
                        wFile1.Close()
                        wFile = New FileStream("C:\Users\mks\Desktop\Newfolder\yo1.mod", FileMode.Append)
                        wFile.Write(byteDatayp1, 0, byteDatayp1.Length)
                        wFile.Close()
                        wFile1 = New FileStream("C:\Users\mks\Desktop\Newfolder\ys1.mod", FileMode.Append)
                        wFile1.Write(byteDatayn1, 0, byteDatayn1.Length)
                        wFile1.Close()
                        wFile = New FileStream("C:\Users\mks\Desktop\Newfolder\bo1.mod", FileMode.Append)
                        wFile.Write(byteDatabp1, 0, byteDatabp1.Length)
                        wFile.Close()
                        wFile1 = New FileStream("C:\Users\mks\Desktop\Newfolder\bs1.mod", FileMode.Append)
                        wFile1.Write(byteDatabn1, 0, byteDatabn1.Length)
                        wFile1.Close()






                    Catch ex As ArgumentOutOfRangeException
                        Exit For
                    Finally
                    End Try

                Next
                Chart1.ChartAreas(0).AxisX.ScaleView.Size = 100

                For Each line As String In IO.File.ReadAllLines("C:\Users\mks\Desktop\Newfolder\ro1.mod")
                    Dim points() As Double = Array.ConvertAll(line.Split(" "c), Function(s) CDbl(s))
                    Chart1.Series(0).Points.AddXY(points(0), points(1))
                Next
                For Each line As String In IO.File.ReadAllLines("C:\Users\mks\Desktop\Newfolder\rs1.mod")
                    Dim points() As Double = Array.ConvertAll(line.Split(" "c), Function(s) CDbl(s))
                    Chart1.Series(0).Points.AddXY(points(0), points(1))
                Next
                Chart2.ChartAreas(0).AxisX.ScaleView.Size = 100

                For Each line As String In IO.File.ReadAllLines("C:\Users\mks\Desktop\Newfolder\ro1.mod")
                    Dim points() As Double = Array.ConvertAll(line.Split(" "c), Function(s) CDbl(s))
                    Chart2.Series(0).Points.AddXY(points(0), points(1))
                Next
                For Each line As String In IO.File.ReadAllLines("C:\Users\mks\Desktop\Newfolder\rs1.mod")
                    Dim points() As Double = Array.ConvertAll(line.Split(" "c), Function(s) CDbl(s))
                    Chart2.Series(0).Points.AddXY(points(0), points(1))
                Next
                Chart3.ChartAreas(0).AxisX.ScaleView.Size = 100

                For Each line As String In IO.File.ReadAllLines("C:\Users\mks\Desktop\Newfolder\ro1.mod")
                    Dim points() As Double = Array.ConvertAll(line.Split(" "c), Function(s) CDbl(s))
                    Chart3.Series(0).Points.AddXY(points(0), points(1))
                Next
                For Each line As String In IO.File.ReadAllLines("C:\Users\mks\Desktop\Newfolder\rs1.mod")
                    Dim points() As Double = Array.ConvertAll(line.Split(" "c), Function(s) CDbl(s))
                    Chart3.Series(0).Points.AddXY(points(0), points(1))
                Next
                MsgBox("FIlE HAS BEEN PROCEESED")

            End If
            Timer1.Stop()
        Next

    End Sub
    Private Sub CmdStart_Click_Click(sender As Object, e As EventArgs) Handles CmdStart_Click.Click


        Timer1.Interval = 10000
        Timer1.Start()


    End Sub

1 Ответов

Рейтинг:
0

Ralf Meier

Если я правильно понял, что ты хочешь сделать ...
Вам нужно очистить коллекцию точек каждой серии, прежде чем вы захотите добавить новые точки. Если вы этого не сделаете, то только увеличите уже назначенные баллы.
Метод для этого :

Chart1.Series(0).Points.Clear()


Member 13307200

Сэр,
Нет, с точкой останова он покажет график, но невозможно увидеть файлы один за другим без msgbox, после каждого файла он покажет график и "файл был обработан" с msg box, я попробовал этот ваш метод, он не сработал.сэр

Ralf Meier

Извините... поэтому, пожалуйста, объясните, чего именно вы пытаетесь достичь ... Что именно должно произойти? ..

Member 13307200

сэр извините если вы не поняли мою проблему,
У меня есть папка с файлами с расширением .sp1 . и каждый файл разбит на 6 файлов, эти шесть файлов с именами ro1,rs1,yo1,ys1,bo1 и bs1.
из этих файлов я строю график.
и я должен выбрать диапазон файлов(.sp1, который я сделал), и мне нужно построить график для каждого файла один за другим. я могу сделать это с помощью точки останова с помощью окна сообщения. но с коробкой из сообщения также следует бегать, как кино.означает одно после другого без окно сообщения

Ralf Meier

Мне тоже очень жаль.
Та часть, которую вы описали, была той частью, которую я получил ...
То, что я понял, было :
- у вас есть файл (или несколько файлов), которые содержат данные для кривых.
- файл создается в любом другом месте и обновляется циклически - возможно, каждую минуту
- у вас есть метод, называемый таймером, который загружает файл и отображает его кривые данные (возможно, также каждую минуту).
- теперь, если это работает так, вы не можете добавить новые кривые-данные к все еще существующим из диаграммы - вы должны заменить старые данные новыми данными. Это может быть сделано, если вы сначала очистите коллекцию точек каждой серии, прежде чем записывать в нее новые данные.

Вот что я понял из вашего вопроса. Но это не то, что вы хотите иметь - поэтому, чтобы помочь вам, мне нужно понять разницу / то, что вы хотите иметь ...

Member 13307200

Сэр,
позвольте мне все прояснить.
1. Я могу построить график из одного файла.
2. я могу читать несколько файлов и строить график для каждого файла.
3. проблема теперь, чтобы построить каждый файловый график, который я использую для цикла, я не могу разорвать цикл, чтобы разорвать после каждого файла график, который я использую msgbox, (вы можете найти в коде).
может его можно сломать без msgbox. вот почему я использовал таймер, чтобы разорвать цикл на каждом ТИКе таймера. для каждого тика таймера он должен зацикливаться на следующем файле.

Надеюсь, я прояснил свой вопрос..
Любая помощь была бы очень полезна для меня.

Ralf Meier

Конечно...
Вы можете объявить переменную счетчика вне метода Timer-Tick (тип целого числа).
Каждый раз, когда вызывается метод, вы увеличиваете счетчик. Сам счетчик является заменой для вашей переменной цикла (i). Если счетчик больше максимального значения, вы снова устанавливаете его на ноль. Теперь каждый таймер-ТИК загружается и отображается только одна кривая (или столько, сколько вам нравится, если вы хотите что-то изменить). Возможно, вы теперь модифицируете таймер-Интервалл ...

Member 13307200

Сэр, вы правильно поняли мою проблему ... большое вам за это спасибо.
Сэр, пожалуйста, измените мой код, если это возможно. я пытался, но не получилось

Ralf Meier

Извините - я могу сделать это предложение только потому, что для внесения этой модификации у меня должен быть ваш код и окружающая среда (ваши файлы данных). После этого я смогу модифицировать и протестировать код, чтобы убедиться, что он работает.
Я предлагаю вам немного подумать о том, что я написал, и посмотреть, что на самом деле делает ваш код, и после этого вы увидите ...

Member 13307200

Большое вам спасибо сэр,
Я получил то, что использовал, если вместо того, чтобы для каждого это работало.
как вы уже сказали, я использовал глобальную переменную для увеличения при щелчке таймера.
Спасибо