Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用c语言以(.wav)格式存储RTL-SDR设备中的数据_C#_.net_Rtl Sdr_Iq - Fatal编程技术网

C# 使用c语言以(.wav)格式存储RTL-SDR设备中的数据

C# 使用c语言以(.wav)格式存储RTL-SDR设备中的数据,c#,.net,rtl-sdr,iq,C#,.net,Rtl Sdr,Iq,我能够使用librtlsdr.dll和libusb-1.0.dll通过c.netcore3.0中的包装器连接RTL-SDR 已开始通过设置设备频率从设备获取采样数据。我正在智商列表中获取数据 我需要将此数据存储在.wav文件中。使用chrome.usb.bulktransfer函数非常简单。此函数提供可直接写入.wav文件的int8array、int32array、uint8array 我不知道如何使用IQ数组中的c来实现 任何建议或代码示例都将不胜感激。要将IQ数据保存到.wav文件,您可以将

我能够使用librtlsdr.dll和libusb-1.0.dll通过c.netcore3.0中的包装器连接RTL-SDR

已开始通过设置设备频率从设备获取采样数据。我正在智商列表中获取数据

我需要将此数据存储在.wav文件中。使用chrome.usb.bulktransfer函数非常简单。此函数提供可直接写入.wav文件的int8array、int32array、uint8array

我不知道如何使用IQ数组中的c来实现


任何建议或代码示例都将不胜感激。

要将IQ数据保存到.wav文件,您可以将I组件写入一个通道,将Q组件写入另一个通道

同相实数通常置于左信道中,正交imag部分置于右信道中

你可以用它来实现这一点。首先,您需要BinaryWriter将int数组IQ数据转换为流字节数组。然后,您可以使用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();

要将IQ数据保存到.wav文件,可以将I组件写入一个通道,将Q组件写入另一个通道

同相实数通常置于左信道中,正交imag部分置于右信道中

你可以用它来实现这一点。首先,您需要BinaryWriter将int数组IQ数据转换为流字节数组。然后,您可以使用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();