#include <stdio.h>
#include <windows.h>
#include <ansi_c.h>
#define MAX_BUFFER_SIZE 1024
typedef int (*Init)(int,int);
typedef int (*InitTester)(char *,int);
typedef int (*SetVsg)(double,double,int,int,double);
typedef int (*SetVsgModulation)(char*,int);
typedef int (*EnableVsgRF)(int);
typedef int (*SetFrameCnt)(int);
typedef int (*LP_SetVsa)(double,double,int,double,double,double,double);
typedef int (*VsaDataCapture)(double,int,double,int,int);
typedef int (*Analyze80211ac)(char*, int,int,int,int,int,int,char*,int,int,double,double);
typedef int (*Analyze80211n)(char*, char*,int,int,int,int,int,char*,int,int,double,double);
typedef double (*GetScalarMeasurement)(char*,int);
typedef int (*SetAnalysisParameterInteger) (char *, char *, int );
typedef int (*AnalyzeHT40Mask) ();
typedef int (*AnalyzeVHT80Mask) ();
typedef int (*AnalyzeFFT) (double , double , char *);
typedef int (*GetVectorMeasurement) (char *, double[], double[], int );
void main()
{
HINSTANCE hinstLib;
Init LabWindows_LP_Init;
InitTester LabWindows_LP_InitTester;
InitTester LabWindows_LP_GetVersion;
SetVsg LabWindows_LP_SetVsg;
SetVsgModulation LabWindows_LP_SetVsgModulation;
EnableVsgRF LabWindows_LP_EnableVsgRF;
SetFrameCnt LabWindows_LP_SetFrameCnt;
LP_SetVsa LabWindows_LP_SetVsa;
VsaDataCapture LabWindows_LP_VsaDataCapture;
Analyze80211ac LabWindows_LP_Analyze80211ac;
Analyze80211n LabWindows_LP_Analyze80211n;
GetScalarMeasurement LabWindows_LP_GetScalarMeasurement;
SetAnalysisParameterInteger LabWindows_LP_SetAnalysisParameterInteger;
AnalyzeHT40Mask LabWindows_LP_AnalyzeHT40Mask;
AnalyzeVHT80Mask LabWindows_LP_AnalyzeVHT80Mask;
AnalyzeFFT LabWindows_LP_AnalyzeFFT;
GetVectorMeasurement LabWindows_LP_GetVectorMeasurement;
char buffer[4096];
double result;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary("IQmeasure.dll");
// If the handle is valid, try to get the function address.
LabWindows_LP_Init = (Init) GetProcAddress(hinstLib, "LP_Init");
LabWindows_LP_InitTester = (InitTester) GetProcAddress(hinstLib, "LP_InitTester");
LabWindows_LP_GetVersion = (InitTester) GetProcAddress(hinstLib, "LP_GetVersion");
LabWindows_LP_SetVsg = (SetVsg) GetProcAddress(hinstLib, "LP_SetVsg");
LabWindows_LP_SetVsgModulation = (SetVsgModulation) GetProcAddress(hinstLib, "LP_SetVsgModulation");
LabWindows_LP_EnableVsgRF = (EnableVsgRF) GetProcAddress(hinstLib, "LP_EnableVsgRF");
LabWindows_LP_SetFrameCnt = (SetFrameCnt) GetProcAddress(hinstLib, "LP_SetFrameCnt");
LabWindows_LP_SetVsa = (LP_SetVsa) GetProcAddress(hinstLib, "LP_SetVsa");
LabWindows_LP_VsaDataCapture = (VsaDataCapture) GetProcAddress(hinstLib, "LP_VsaDataCapture");
LabWindows_LP_Analyze80211ac = (Analyze80211ac) GetProcAddress(hinstLib, "LP_Analyze80211ac");
LabWindows_LP_Analyze80211n = (Analyze80211n) GetProcAddress(hinstLib, "LP_Analyze80211n");
LabWindows_LP_GetScalarMeasurement = (GetScalarMeasurement) GetProcAddress(hinstLib, "LP_GetScalarMeasurement");
LabWindows_LP_GetVectorMeasurement = (GetVectorMeasurement) GetProcAddress(hinstLib, "LP_GetVectorMeasurement");
LabWindows_LP_SetAnalysisParameterInteger = (SetAnalysisParameterInteger) GetProcAddress(hinstLib, "LP_SetAnalysisParameterInteger");
LabWindows_LP_AnalyzeHT40Mask = (AnalyzeHT40Mask) GetProcAddress(hinstLib, "LP_AnalyzeHT40Mask");
LabWindows_LP_AnalyzeVHT80Mask = (AnalyzeVHT80Mask) GetProcAddress(hinstLib, "LP_AnalyzeVHT80Mask");
LabWindows_LP_AnalyzeFFT = (AnalyzeFFT) GetProcAddress(hinstLib, "LP_AnalyzeFFT");
//**************************************verify MASK*********************************************************
double IQInterpolate( double yMax, double yMin, double xMax, double xMin, double xVal )
{
return (yMin + ((yMax - yMin) / (xMax - xMin) * (xVal - xMin)));
}
BOOL IQ_VerifyMask (double *freqBuf, double *maskBuf, int maskBufCnt, int wifiMode)
{
//int maskTopStart = 999999, maskTopStop = 0;
double peakPower = 0.0;
double *maskWiFi = (double*)malloc(maskBufCnt*sizeof(double));
double firstRefFreq = freqBuf[0]/1000000; // to MHz
double deltaFreq = (freqBuf[1]-freqBuf[0])/1000000; // to MHz
double freqOffset[5];
double deltaMaskPwr[5];
int sectionIndex = 0;
double currentFreq = 0, xVal = 0, yDeltaPwrdB = 0;
// Initial the return results
int VIOLATION_PERCENT = 0;
/*--------------------------*
* Looking for peak power *
*--------------------------*/
int i1 = 0;
int i2 = 0;
int j = 0;
double xMax = 0;
double yMax = 0;
double xMin = 0;
double yMin = 0;
for ( ;i1<maskBufCnt;i1++)
{
if ( maskBuf[i1]>peakPower )
{ // store the current peak power and keep searching
peakPower = maskBuf[i1];
}
else
{
// keep searching...
}
}
/*-----------------------*
* Select default Mask *
*-----------------------*/
if( 0 == wifiMode ){ //b
freqOffset[0] = 0;
deltaMaskPwr[0] = 0;
freqOffset[1] = 11;
deltaMaskPwr[1] = 0;
freqOffset[2] = 11;
deltaMaskPwr[2] = -30;
freqOffset[3] = 22;
deltaMaskPwr[3] = -30;
freqOffset[4] = 22;
deltaMaskPwr[4] = -50;
}
else if( 1 == wifiMode ){ //g
freqOffset[0] = 0;
deltaMaskPwr[0] = 0;
freqOffset[1] = 9;
deltaMaskPwr[1] = 0;
freqOffset[2] = 11;
deltaMaskPwr[2] = -20;
freqOffset[3] = 20;
deltaMaskPwr[3] = -28;
freqOffset[4] = 30;
deltaMaskPwr[4] = -40;
}else if( 2 == wifiMode ){ //a
freqOffset[0] = 0;
deltaMaskPwr[0] = 0;
freqOffset[1] = 9;
deltaMaskPwr[1] = 0;
freqOffset[2] = 11;
deltaMaskPwr[2] = -20;
freqOffset[3] = 20;
deltaMaskPwr[3] = -28;
freqOffset[4] = 30;
deltaMaskPwr[4] = -40;
}else if( 3 == wifiMode ){ //n
freqOffset[0] = 0;
deltaMaskPwr[0] = 0;
freqOffset[1] = 9;
deltaMaskPwr[1] = 0;
freqOffset[2] = 11;
deltaMaskPwr[2] = -20;
freqOffset[3] = 20;
deltaMaskPwr[3] = -28;
freqOffset[4] = 30;
deltaMaskPwr[4] = -45;
}else{
return FALSE;
}
/*-------------------------------*
* Construct the absolute Mask *
*-------------------------------*/
currentFreq = firstRefFreq; // point to first one
for (;i2<maskBufCnt;i2++)
{
xVal = fabs(currentFreq);
sectionIndex = 0;
// while ( dummy_Iter!=maskEnd_Iter ) // not end of mask vector
for ( ; j < 5; )
{
if ( xVal >= freqOffset[j] )
{
j++;
sectionIndex++;
if ( j != 5 ) // not end of mask vector
{
if ( xVal < freqOffset[j] ) // find out the range
{
xMax = freqOffset[j];
yMax = deltaMaskPwr[j];
j--;
sectionIndex--;
xMin = freqOffset[j];
yMin = deltaMaskPwr[j];
yDeltaPwrdB = IQInterpolate( yMax, yMin, xMax, xMin, xVal );
break;
}
else
{
// not in this Mask range, continue and keep searching
continue;
}
}
else // already end of vector, thus direct assign mask_Iter->deltaMaskPwr to yDeltaPwrdB
{
j--;
sectionIndex--;
yDeltaPwrdB = deltaMaskPwr[j];
break;
}
}
else
{
// no this case, because fabs(currentFreq) should >= 0
}
}
// Construct the absolute Mask and store into Array
maskWiFi[i2] = peakPower + yDeltaPwrdB;
/*---------------------------------*
* Report Margin by each section *
*---------------------------------*/
if ( sectionIndex==0 ) // This is the "TOP" of spectral, just skip this section.
{
// do nothing, moving to next frequency step
}
e
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
IQ_Test_Demo (147个子文件)
dependencies.bri 202B
dependencies.bri 169B
dependencies.bri 156B
loopback.c 11KB
loopback.c 11KB
loopback.c 11KB
IQ2010_demo.c 6KB
IQmeasureTest.c 5KB
IQmeasureTest.c 4KB
IQmeasureTest.c 4KB
loopbacktest_dbg.cdb 1.18MB
loopbacktest_dbg.cdb 1.18MB
IQ2010_demo_dbg.cdb 1.18MB
loopbacktest_dbg.cdb 1.13MB
IQ2010_demo~cvi155259.cws 3KB
IQ2010_demo.cws 3KB
loopbacktest.cws 3KB
loopbacktest.cws 3KB
loopbacktest.cws 2KB
Thumbs.db 10KB
libiqapi.dll 2.74MB
libiqapi.dll 2.74MB
libiqapi.dll 2.74MB
iqapi.dll 2.43MB
iqapi.dll 2.43MB
iqapi.dll 2.43MB
IQmeasure_SCPI.dll 1.32MB
IQmeasure_SCPI.dll 1.32MB
IQmeasure_SCPI.dll 1.32MB
LP_IQxelDriver.dll 893KB
LP_IQxelDriver.dll 893KB
LP_IQxelDriver.dll 893KB
iqapis.dll 706KB
iqapis.dll 706KB
iqapis.dll 706KB
IQmeasure_SCPI_Verifast.dll 564KB
IQmeasure_SCPI_Verifast.dll 564KB
IQmeasure_SCPI_Verifast.dll 564KB
FMAnalysisDll.dll 310KB
FMAnalysisDll.dll 310KB
FMAnalysisDll.dll 310KB
IQmeasure_IQapi_Legacy.dll 220KB
IQmeasure_IQapi_Legacy.dll 220KB
IQmeasure_IQapi_Legacy.dll 220KB
IQ2010Ext.dll 165KB
IQ2010Ext.dll 165KB
IQ2010Ext.dll 165KB
IQmeasure_IQapi_SCPI.dll 160KB
IQmeasure_IQapi_SCPI.dll 160KB
IQmeasure_IQapi_SCPI.dll 160KB
IQapiExt.dll 140KB
IQapiExt.dll 140KB
IQapiExt.dll 140KB
IQmeasure.dll 100KB
IQmeasure.dll 100KB
IQmeasure.dll 100KB
IQlite_Timer.dll 48KB
IQlite_Timer.dll 48KB
IQlite_Timer.dll 48KB
boost_thread-vc90-mt-1_40.dll 45KB
boost_thread-vc90-mt-1_40.dll 45KB
boost_thread-vc90-mt-1_40.dll 45KB
IQlite_Logger.dll 40KB
IQsequence.dll 40KB
IQlite_Logger.dll 40KB
IQsequence.dll 40KB
IQlite_Logger.dll 40KB
IQsequence.dll 40KB
AimControl.dll 27KB
AimControl.dll 27KB
AimControl.dll 27KB
FWServer.exe 355KB
FWServer.exe 355KB
FWServer.exe 355KB
FWServer_gf.exe 329KB
FWServer_gf.exe 329KB
FWServer_gf.exe 329KB
loopbacktest_dbg.exe 243KB
IQ2010_demo_dbg.exe 242KB
loopbacktest_dbg.exe 242KB
loopbacktest_dbg.exe 231KB
LitePointConnectivityServer.exe 29KB
LitePointConnectivityServer.exe 29KB
LitePointConnectivityServer.exe 29KB
StartLitePointConnectivityServer.exe 13KB
StartLitePointConnectivityServer.exe 13KB
StartLitePointConnectivityServer.exe 13KB
StopLitePointConnectivity_FW_Server.exe 12KB
StopLitePointConnectivity_FW_Server.exe 12KB
StopLitePointConnectivity_FW_Server.exe 12KB
IQ2010_demo.h 1KB
build.ini 17KB
build.ini 3KB
build.ini 3KB
WiFi_CCK-11L.iqvsg 6.48MB
WiFi_CCK-11L.iqvsg 6.48MB
WiFi_CCK-11L.iqvsg 6.48MB
WiFi_CCK-11L.iqvsg 6.48MB
WiFi_CCK-11L.iqvsg 6.48MB
WiFi_HT40_MCS7.iqvsg 1.49MB
共 147 条
- 1
- 2
资源评论
- DDDOKEY2018-08-25labwindows下的,不错,很稀有
- ceshicw0072018-06-23错误:无法定位程序输入点StartupLibraryCleanup于动态链接库cvirte.DLL
David_359
- 粉丝: 27
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功