[英]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.