winforms C#中如何将串口传入数据保存到文本文件

z9zf31ra  于 2022-12-04  发布在  C#
关注(0)|答案(1)|浏览(380)

我的Windows上有两个按钮。
1.通过点击开始按钮,我想打开端口,并看到文本框中的数据,同时我想将此数据保存在另一个空文本文件中逐行.
1.通过点击停止按钮,程序只是停止保存数据,但仍然在文本框中显示从串行端口传入的数据。有人能帮忙吗?我的启动和停止按钮代码看起来像:

private void buttonStart_Click(object sender, EventArgs e)
{

    serialPort1.PortName = pp.get_text();
    string Brate = pp.get_rate();
    serialPort1.BaudRate = Convert.ToInt32(Brate);

      serialPort1.Open();

    if (serialPort1.IsOpen)
    {
        buttonStart.Enabled = false;
        buttonStop.Enabled = true;
        textBox1.ReadOnly = false;
    }
}

private void buttonStop_Click(object sender, EventArgs e)
{

    string Fname = pp.get_filename();
    System.IO.File.WriteAllText(Fname, this.textBox1.Text);

}
wlsrxk51

wlsrxk511#

1)您需要注册到串行端口的DataReceived事件以接收来自SerialPort示例的响应。

sp = new SerialPort();
sp.DataReceived += sp_DataReceived;

然后,在sp_DataReceived中:

void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        // this the read buffer
        byte[] buff = new byte[9600];
        int readByteCount = sp.BaseStream.Read(buff, 0, sp.BytesToRead);
        // you can specify other encodings, or use default
        string response = System.Text.Encoding.UTF8.GetString(buff);

        // you need to implement AppendToFile ;)
        AppendToFile(String.Format("response :{0}",response));

        // Or, just send sp.ReadExisting();
        AppendToFile(sp.ReadExisting());
    }

2)如果SerialPort示例的读取缓冲区中仍有数据,您将收到数据。关闭端口后,您需要从DataReceived事件注销。

sp -= sp_DataRecieved;

更新

您可以使用此方法追加到文件

private void AppendToFile(string toAppend)
{
    string myFilePath = @"C:\Test.txt";
    File.AppendAllText(myFilePath, toAppend + Environment.NewLine);
}

相关问题