如何用VB编程实时刷写数据?

我现在有一个txt文件,在持续采集传感器数据过程中,存储达到指定值前10000个数据。
我希望可以持续写入数据,达到10000个后,每采集一个就删除最早的一个,保持10000个数据,最后达到指定值时,停止采集并停止写入,留存最后那10000个数据。

2个回答

若采集的过程不会太长,可考虑先在内存做完,再一次写入txt文件。

用Queue可以简单达成你的需求,下面是sample code,请参考。

     Private Sub LogLatestNValue(Optional ByVal N As Integer = 10000)
        Dim ResultSet As New Queue(Of Decimal)
        Dim dValue As Decimal = 0D

        Do While True
            dValue = GetSensorValue()
            If ResultSet.Count = 10000 Then
                ResultSet.Dequeue()
            End If
            ResultSet.Enqueue(dValue)
            If dValue >= dTargetValue Then
                Exit Do
            End If
        Loop

        WriteRsultSet2Txt(ResultSet)
    End Sub

    Private Sub WriteRsultSet2Txt(ByVal ResultSet As Queue(Of Decimal))
        Dim sResult As String = ""

        Try
            Do While True
                If ResultSet.Count = 0 Then
                    Exit Do
                End If
                sResult += ResultSet.Dequeue().ToString() + Environment.NewLine
            Loop
            IO.File.WriteAllText(sTargetFileName, sResult)
        Catch ex As Exception

        End Try
    End Sub

出于性能的考虑,建议你这么做。
定义一个10000长度的数组,以及一个叫做top的变量,初始的时候,它指向当前写入新数据的下标,top=0

先是正常插入数据,top每次+1,当top=9999之后,就让top=0,继续从数组开头写起,覆盖掉之前的值。

最后留存数据的时候,就从top~9999,再从0~top-1循环遍历数组。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!