簡體   English   中英

使用 c# 從 RTL-SDR 設備以 (.wav) 格式存儲數據

[英]Store data in ( .wav) format from RTL-SDR device using c#

通過在 c# .netcore3.0 中使用( https://github.com/nandortoth/rtlsdr-manager )包裝器,我能夠使用 librtlsdr.dll 和 libusb-1.0.dll 與 RTL-SDR 連接。

開始通過設置的設備頻率從設備獲取樣本數據。 我正在 IQ 列表中獲取數據。

我需要將此數據存儲在 .wav 文件中。使用 chrome.usb.bulktransfer 功能非常容易。 此函數提供 int8array,int32array,uint8array 可直接寫入 .wav 文件。

我不知道如何使用 IQ 數組中的 c# 來完成它

任何建議或代碼示例將不勝感激。

要將 IQ 數據保存到 .wav 文件,您可以將 I 分量寫入一個通道,將 Q 分量寫入另一個通道( 參考)。

“同相”(實數)通常放在左聲道中,而“正交”(圖像)部分放在右聲道中。

您可以使用NAudio來實現這一點。 首先,您需要BinaryWriterint數組(IQ 數據)轉換為Streambyte數組)。 然后,您可以使用MultiplexingWaveProvider創建具有 2 個通道的 .wav 文件。

var iqDataList = device.GetSamplesFromAsyncBuffer(maxCount);

var iStream = new MemoryStream();
var qStream = new MemoryStream();

var iWriter = new BinaryWriter(iStream);
var qWriter = new BinaryWriter(qStream);

foreach (var iqData in iqDataList)
{
    iWriter.Write(iqData.I);
    qWriter.Write(iqData.Q);
}

var iComponent = new RawSourceWaveStream(iStream, new WaveFormat(rate, bits, 1));
var qComponent = new RawSourceWaveStream(qStream, new WaveFormat(rate, bits, 1));

var waveProvider = new MultiplexingWaveProvider(new IWaveProvider[] {iComponent, qComponent}, 2);

WaveFileWriter.CreateWaveFile(filename, waveProvider);

iComponent.Dispose();
qComponent.Dispose();

iWriter.Dispose();
qWriter.Dispose();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM