繁体   English   中英

如何将串口传来的原始数据写入.txt文件

[英]How to write the raw data coming from a serial port to a .txt file

我目前正在开发一个带有 STM32 的项目,该项目从摄像头读取数据并通过 UART 连接发送数据。

在另一端,我将 C# 应用程序连接到接收数据的串行端口。 我将传入数据写入 a.txt 文件以查看它现在的样子,然后再继续我的项目(将数据放回 C# 中的图像)。

这是在按下“接收”按钮时写入.txt 的函数。

private void btnReceive_Click(object sender, EventArgs e)
{
    try
    {
        if (serialPort1.IsOpen)
        {
            //Debug.Write(serialPort1.ReadExisting());
            using (StreamWriter writetext = new StreamWriter("write.txt", false, Encoding.UTF8))
            {
                writetext.WriteLine(serialPort1.ReadExisting());
            }
        }

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

在这里,我使用 UTF8 编码获取数据,但我希望能够以原始方式写入数据,完全不使用任何编码。 但是我不知道如何直接在文件中写入串口输入的十进制值。 我可以使用 StreamWriter 以外的东西吗? 还是另一个编码值之王?

注意:使用 Docklight 我能够获得关于我收到的数据的一些积极结果,但我无法在我自己的应用程序中获得相同的结果。

如果您只想从端口读取字节并将这些字节写入文件,则需要从端口读取字节

var buffer = new byte[serialPort1.ReadBufferSize];
using var fs = File.OpenWrite(...);
while(serialPort1.IsOpen){
    var readBytes = serialPort1.Read(buffer, 0, buffer.Length);
    fs.Write(buffer, 0, readBytes );
}

请注意,如果数据实际上是文本,它仍将使用某种形式的编码,它只会使用发送设备正在使用的任何编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM