SIL凡丁
2018-10-09 03:08
采纳率: 100%
浏览 754
已采纳

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • yaowf 2018-10-12 03:19
    已采纳

    若采集的过程不会太长,可考虑先在内存做完,再一次写入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
    
    点赞 打赏 评论
  • blownewbee 2018-10-09 03:23

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

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

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

    点赞 打赏 评论

相关推荐 更多相似问题