概述
Vector IQ文件的C#打开方式
目的
Vector File可以存储IQ波形或频谱。 对于IQ波形又可以存储流模式和帧模式,每个模式可以是单、多通道。所以,在读取IQ数据是需要多加一个步骤明确文件模式。
范例
申明和定义变量
//引用
using SeeSharpTools.JXI.FileIO.VectorFile;
using System.IO;
//流和帧模式的文件对象
FixFrequencyFrameFile frameFile;
FixFrequencyStreamFile streamFile;
//文件基本信息
IQFileInformation _iqFileInfo;
//文件基本信息类定义
public class IQFileInformation
{
/// <summary>
/// IQ模式,流或块
/// </summary>
public FileFormat Formate { set; get; }
public int NumOfChannels { set; get; } //通道数量
public long NumOfSamples { set; get; }
public double SampleRate { set; get; }
public double CenterFrequency { set; get; }
public int NumOfSamplesInFrame { set; get; }
public long NumOfFrames { set; get; }
public IQFileInformation()
{
Formate = new FileFormat();
NumOfChannels = 0;
NumOfSamples = 0;
SampleRate = 1;
CenterFrequency = 0;
NumOfSamplesInFrame = 0;
NumOfFrames = 0;
}
}
读取文件模式
// 打开文件,获取文件格式。
var vectorFile = new VectorFile(); //临时文件,之后根据流和块模式细分打开
vectorFile.Open(FileName, FileMode.Open, FileAccess.Read);
_iqFileInfo.Formate = vectorFile.Storage.FileFormat;
vectorFile.Close();
根据模式读取基本信息
// 根据不同的文件格式,获取采集信息。
switch (_iqFileInfo.Formate)
{
case FileFormat.FixFrequencyFrame:
{
// 对于帧式数据文件,获取采集信息。
frameFile = new FixFrequencyFrameFile();
frameFile.Open(_iqFilePath, FileMode.Open, FileAccess.Read);
// 获取信号的参数。
_iqFileInfo.NumOfChannels = frameFile.Sampling.Channels.Count;
_iqFileInfo.NumOfSamples = frameFile.Length / (frameFile.BytesPerSample * frameFile.Sampling.Channels.Count);
_iqFileInfo.CenterFrequency = frameFile.Sampling.Channels[0].RFFrequency;
_iqFileInfo.SampleRate = frameFile.Sampling.SampleRate;
_iqFileInfo.NumOfFrames = frameFile.NumberOfFrames;
_iqFileInfo.NumOfSamplesInFrame = frameFile.Frame.Length;
frameFile.Close();
break;
}
case FileFormat.FixFrequencyStream:
{
// 对于流式数据文件,获取采集信息。
streamFile = new FixFrequencyStreamFile();
streamFile.Open(_iqFilePath, FileMode.Open, FileAccess.Read);
_iqFileInfo.NumOfChannels = streamFile.Sampling.Channels.Count;
_iqFileInfo.NumOfSamples = streamFile.NumberOfSamples;
_iqFileInfo.CenterFrequency = streamFile.Sampling.Channels[0].RFFrequency;
_iqFileInfo.SampleRate = streamFile.Sampling.SampleRate;
_iqFileInfo.NumOfFrames = 0;
_iqFileInfo.NumOfSamplesInFrame = 0;
streamFile.Close();
break;
}
default:
{
// 对于其他格式的数据文件,抛出异常。
throw new VectorFileException(ExceptionEnum.DataTypeConflict, "文件格式无效。");
}
最后
以上就是哭泣煎蛋为你收集整理的Vector IQ文件的C#打开方式Vector IQ文件的C#打开方式的全部内容,希望文章能够帮你解决Vector IQ文件的C#打开方式Vector IQ文件的C#打开方式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复