簡體   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