首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已添加代码修改行

已添加代码修改行
EN

Stack Overflow用户
提问于 2014-09-24 17:18:18
回答 1查看 71关注 0票数 0

我有这样的数据

代码语言:javascript
复制
date                    value
24sep2014 2:23:01        0.1
24sep2014 2:23:02        0.3
24sep2014 2:23:03        0.2
24sep2014 2:23:04        0.3

这些不是昏迷分离值。我想写成CSV文件。添加下一行的值。

1)如何在这里只打开一次文件。当它下次运行时,文件名必须更改为其他名称2)如何追加下一个值

代码语言:javascript
复制
   Imports System
Imports System.IO.Ports
Imports System.ComponentModel
Imports System.Threading
Imports System.Drawing
Imports System.Windows.Forms.DataVisualization.Charting

Public Class Form1
    Dim myPort As Array
    Dim Distance As Integer



    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        myPort = IO.Ports.SerialPort.GetPortNames()
        PortComboBox.Items.AddRange(myPort)
        BaudComboBox.Items.Add(9600)
        BaudComboBox.Items.Add(19200)
        BaudComboBox.Items.Add(38400)
        BaudComboBox.Items.Add(57600)
        BaudComboBox.Items.Add(115200)
        ConnectButton.Enabled = True
        DisconnectButton.Enabled = False

        Chart1.Series.Clear()
        Chart1.Titles.Add("Demo")
        'Create a new series and add data points to it.
        Dim s As New Series
        s.Name = "CURRENT"
        s.ChartType = SeriesChartType.Line

    End Sub

    Private Sub ConnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConnectButton.Click
        SerialPort1.PortName = PortComboBox.Text
        SerialPort1.BaudRate = BaudComboBox.Text
        SerialPort1.Open()
        Timer1.Start()
        Timer2.Start()
        'lblMessage.Text = PortComboBox.Text & " Connected."
        ConnectButton.Enabled = False
        DisconnectButton.Enabled = True
    End Sub

    Private Sub DisconnectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DisconnectButton.Click
        SerialPort1.Close()

        DisconnectButton.Enabled = False
        ConnectButton.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim counter As Integer
        counter = 0


        Try

            SerialPort1.Write("c")
            System.Threading.Thread.Sleep(250)
            Dim k As Double
            Dim distance As String = SerialPort1.ReadLine()
            k = CDbl(distance)
            ListBoxSensor.Text = k

            Dim s As New Series
            s.Points.AddXY(1000, k)
            Chart1.Series.Add(s)

            Dim headerText = ""
            Dim csvFile As String = Path.Combine(My.Application.Info.DirectoryPath, "Current.csv")

            If Not File.Exists(csvFile)) Then
                headerText = "Date& time ,Current"
            End If

            Using outFile = My.Computer.FileSystem.OpenTextFileWriter(csvFile, True)
                If headerText.Length > 0 Then
                    outFile.WriteLine(headerText)
                End If
                Dim y As String = DateAndTime.Now
                Dim x As String = y + "," + distance
                outFile.WriteLine(x)
            End Using

        Catch ex As Exception

        End Try



    End Sub

    Private Sub Relay_ON_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Relay_ON.Click
        SerialPort1.Write("1")
    End Sub

    Private Sub Relay_Off_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Relay_Off.Click
        SerialPort1.Write("0")
    End Sub




End Class

在这里我一次又一次地打开文件。因此我只能存储一个值

@ steve error

EN

回答 1

Stack Overflow用户

发布于 2014-09-24 17:45:50

OpenTextFileWriter的第二个参数允许追加而不是覆盖您的文件。

因此,只需检查文件是否存在(因此插入头文件名),然后写入数据

代码语言:javascript
复制
Dim headerText = ""
Dim csvFile As String = Path.Combine(My.Application.Info.DirectoryPath, "Current.csv")
If Not File.Exists(csvFile) Then
    headerText = "Date& time ,Current"
End If 

Using outFile = My.Computer.FileSystem.OpenTextFileWriter(csvFile, True)
    If headerText.Length > 0 Then 
        outFile.WriteLine(headerText)
    End If
    Dim y As String = DateAndTime.Now
    Dim x As String = y + "," + distance
    outFile.WriteLine(x)
End Using

注意Using Statement,确保在出现异常的情况下也关闭和处置文件资源。

但是,考虑到需要编写的简单文本,您也可以选择使用WriteAllText方法

代码语言:javascript
复制
Dim headerText = ""
Dim csvFile As String = Path.Combine(My.Application.Info.DirectoryPath, "Current.csv")
If Not File.Exists(csvFile) Then
    headerText = "Date& time ,Current" & Environment.NewLine
End If 

Dim y As String = DateAndTime.Now
Dim x As String = headerText & y & "," + distance & Environment.NewLine
My.Computer.FileSystem.WriteAllText(csvFile, x, True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26013105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档