📄 minst.c
字号:
gpibWrite(ud, ":INIT:IMM;*WAI;"); // single sweep
gpibWrite(ud, ":CALC:MARK:MAX;"); // find peak
return atof(gpibQuery(ud, ":CALC:MARK:Y?", 55L)); // return amplitude
}
MANLIB_API char *spaMeasOutOfBandEm(const int ud,
const double ref_level,
const int reset) {
int n, rsp = 0;
double pwr0, pwr1, pwr2, pwr3, freq0, freq1, freq2, freq3;
static char emissions[83] = "-120.00, 0.000E+000, -120.00, 0.000E+000, -120.00, 0.000E+000, -120.00, 0.000E+000";
if (reset) {
rsp = atoi(gpibQuery(ud, "*RST;*OPC?", 5L));
gpibWrite(ud, ":FREQ:STAR 5.13E9;"); // start frequency
gpibWrite(ud, ":FREQ:STOP 5.142E9;"); // stop frequency
gpibWrite(ud, ":BAND:RES 1E6;VID 1E4;"); // resolution / video bandwidth
gpibWrite(ud, qq(":DISP:WIND:TRAC:Y:RLEV %f;", ref_level)); // reference level
gpibWrite(ud, ":DISP:WIND:TRAC:Y:PDIV 10;"); // scale
gpibWrite(ud, ":AVER 0;"); // averaging off
gpibWrite(ud, ":INIT:CONT 0;"); // single sweep
gpibWrite(ud, ":DET POS;"); // detector mode (peak)
gpibWrite(ud, ":TRAC:MODE WRIT;"); // max hold off
}
// Make measurement
// 5.13 to 5.142 GHz
gpibWrite(ud, ":FREQ:STAR 5.13E9;"); // start frequency
gpibWrite(ud, ":FREQ:STOP 5.142E9;"); // stop frequency
gpibWrite(ud, ":INIT:IMM;*WAI;"); // single sweep
gpibWrite(ud, ":CALC:MARK:MAX;"); // find peak
pwr0 = atof(gpibQuery(ud, ":CALC:MARK:Y?", 55L)); // measure amplitude
freq0 = atof(gpibQuery(ud, ":CALC:MARK:X?", 55L)); // measure frequency
// 5.142 to 5.15 GHz
gpibWrite(ud, ":FREQ:STAR 5.142E9;"); // start frequency
gpibWrite(ud, ":FREQ:STOP 5.15E9;"); // stop frequency
gpibWrite(ud, ":INIT:IMM;*WAI;"); // single sweep
gpibWrite(ud, ":CALC:MARK:MAX;"); // find peak
pwr1 = atof(gpibQuery(ud, ":CALC:MARK:Y?", 55L)); // measure amplitude
freq1 = atof(gpibQuery(ud, ":CALC:MARK:X?", 55L)); // measure frequency
// 5.25 to 5.258 GHz
gpibWrite(ud, ":FREQ:STAR 5.25E9;"); // start frequency
gpibWrite(ud, ":FREQ:STOP 5.258E9;"); // stop frequency
gpibWrite(ud, ":INIT:IMM;*WAI;"); // single sweep
gpibWrite(ud, ":CALC:MARK:MAX;"); // find peak
pwr2 = atof(gpibQuery(ud, ":CALC:MARK:Y?", 55L)); // measure amplitude
freq2 = atof(gpibQuery(ud, ":CALC:MARK:X?", 55L)); // measure frequency
// 5.258 to 5.27 GHz
gpibWrite(ud, ":FREQ:STAR 5.258E9;"); // start frequency
gpibWrite(ud, ":FREQ:STOP 5.27E9;"); // stop frequency
gpibWrite(ud, ":INIT:IMM;*WAI;"); // single sweep
gpibWrite(ud, ":CALC:MARK:MAX;"); // find peak
pwr3 = atof(gpibQuery(ud, ":CALC:MARK:Y?", 55L)); // measure amplitude
freq3 = atof(gpibQuery(ud, ":CALC:MARK:X?", 55L)); // measure frequency
n = sprintf(emissions, "%07.2f, %10.3E, %07.2f, %10.3E, %07.2f, %10.3E, %07.2f, %10.3E",
pwr0, freq0, pwr1, freq1, pwr2, freq2, pwr3, freq3);
emissions[n] = '\0';
return emissions;
}
MANLIB_API double spaMeasPkAvgRatio(const int ud,
const double center,
const double ref_level,
const int reset) {
int rsp = 0;
double peak = 0, avg = 0;
// reset prior to setting the center frequency
if (reset) rsp = atoi(gpibQuery(ud, "*RST;*OPC?", 5L));
// change to channel frequency
gpibWrite(ud, qq(":FREQ:CENT %f;", center));
if (reset) {
gpibWrite(ud, ":FREQ:SPAN 4E7;"); // span
gpibWrite(ud, ":BAND:RES 1E6;VID 1E6;"); // resolution / video bandwidth
gpibWrite(ud, qq(":DISP:WIND:TRAC:Y:RLEV %f;", ref_level)); // reference level
gpibWrite(ud, ":DISP:WIND:TRAC:Y:PDIV 5;"); // scale
gpibWrite(ud, ":DET POS;"); // detector mode (peak)
gpibWrite(ud, ":TRAC:MODE WRIT;"); // max hold off
}
// Make Peak Measurement
gpibWrite(ud, ":INIT:CONT 0;"); // single sweep
gpibWrite(ud, ":BAND:VID 1E6;"); // video bandwidth
gpibWrite(ud, ":TRAC:MODE MAXH;"); // max hold on
gpibWrite(ud, ":INIT:CONT 1;"); // continuous sweep
sleep (10000); // wait for trace to build up
gpibWrite(ud, ":CALC:MARK:MAX;"); // find peak
peak = atof(gpibQuery(ud, ":CALC:MARK:Y?", 55L)); // read amplitude
gpibWrite(ud, ":INIT:CONT 0;"); // single sweep
gpibWrite(ud, ":TRAC:MODE WRIT;"); // max hold off
// Make Average Measurement
gpibWrite(ud, ":BAND:VID 3E4;"); // video bandwidth
gpibWrite(ud, ":TRAC:MODE MAXH;"); // max hold on
gpibWrite(ud, ":INIT:CONT 1;"); // continuous sweep
sleep (10000); // wait for trace to build up
gpibWrite(ud, ":CALC:MARK:MAX;"); // find peak
avg = atof(gpibQuery(ud, ":CALC:MARK:Y?", 55L)); // read amplitude
gpibWrite(ud, ":TRAC:MODE WRIT;"); // max hold off
return (peak - avg); // return peak to average ratio
}
MANLIB_API double spaMeasFreqDev(const int ud,
const double center,
const double ref_level,
const int reset) {
int rsp = 0;
double meas_freq;
// reset prior to setting the center frequency
if (reset) rsp = atoi(gpibQuery(ud, "*RST;*OPC?", 5L));
// change to channel frequency
gpibWrite(ud, qq(":FREQ:CENT %f;", center));
if (reset) {
gpibWrite(ud, ":FREQ:SPAN 8E6;"); // span
gpibWrite(ud, ":BAND:RES 3E5;VID 3E3;"); // resolution / video bandwidth
gpibWrite(ud, qq(":DISP:WIND:TRAC:Y:RLEV %f;", ref_level)); // reference level
gpibWrite(ud, ":DISP:WIND:TRAC:Y:PDIV 10;"); // scale
gpibWrite(ud, ":INIT:CONT 0;"); // single sweep
gpibWrite(ud, ":AVER 0;"); // averaging off
gpibWrite(ud, ":DET POS;"); // detector mode (peak)
gpibWrite(ud, ":TRAC:MODE WRIT;"); // max hold off
gpibWrite(ud, ":CALC:MARK:CPE ON;"); // continuous peaking
gpibWrite(ud, ":CALC:MARK:FCO:RES 100;"); // frequency counter resolution
gpibWrite(ud, ":CALC:MARK:FCO 1;"); // frequency counter on
}
// Make Frequency Measurement
gpibWrite(ud, ":INIT:IMM;*WAI;"); // single sweep
meas_freq = atof(gpibQuery(ud, ":CALC:MARK:FCO:X?", 55L)); // get frequency
return ((meas_freq/center)-1)*1E6; // return ppm
}
MANLIB_API char *spaMeasTxSpuriousEm(const int ud,
const double ref_level,
const int reset) {
int rsp = 0, n, cf_index;
double pwr, freq, pwr_max0, pwr_max1, pwr_max2, freq_max0, freq_max1, freq_max2;
static char emissions[62] = "-120.00, 0.000E+000, -120.00, 0.000E+000, -120.00, 0.000E+000";
if (reset) {
rsp = atoi(gpibQuery(ud, "IP;DONE?", 5L)); // reset
gpibWrite(ud, "SNGLS;"); // single sweep
gpibWrite(ud, "AT AUTO;"); // auto attenuation
gpibWrite(ud, qq("RL %fDB;", ref_level)); // reference level
gpibWrite(ud, "LG 5DB;"); // scale
gpibWrite(ud, "FA 10MHZ;"); // start freq
gpibWrite(ud, "FB 1GHZ;"); // stop freq
gpibWrite(ud, "RB 1MHZ;"); // resolution bandwidth
gpibWrite(ud, "VB 10KHZ;"); // video bandwidth
gpibWrite(ud, "DET POS;"); // detector mode (peak)
gpibWrite(ud, "SS MAN;"); // freq step size manual
gpibWrite(ud, "SS 1GHZ;"); // freq step size 1 GHz
}
// Make measurement
// Search between 10 MHz and 1 GHz
gpibWrite(ud, "FA 10MHZ;");
gpibWrite(ud, "FB 1GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr_max0 = atof(gpibQuery(ud, "MKA?",55L));
freq_max0 = atof(gpibQuery(ud, "MKF?",55L));
// Search between 1 and 2 GHz
gpibWrite(ud, "FA 1GHZ;");
gpibWrite(ud, "FB 2GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max0) {
pwr_max0 = pwr;
freq_max0 = freq;
}
// Search between 2 and 2.8 GHz
gpibWrite(ud, "FA 2GHZ;");
gpibWrite(ud, "FB 2.8GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max0) {
pwr_max0 = pwr;
freq_max0 = freq;
}
// Search between 2.8 and 3 GHz
gpibWrite(ud, "FA 2.8GHZ;");
gpibWrite(ud, "FB 3GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max0) {
pwr_max0 = pwr;
freq_max0 = freq;
}
// Search between 3 and 4 GHz
gpibWrite(ud, "FA 3GHZ;");
gpibWrite(ud, "FB 4GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max0) {
pwr_max0 = pwr;
freq_max0 = freq;
}
// Search between 4 and 5 GHz
gpibWrite(ud, "CF UP;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max0) {
pwr_max0 = pwr;
freq_max0 = freq;
}
// Search between 5 and 5.13 GHz
gpibWrite(ud, "FA 5GHZ;");
gpibWrite(ud, "FB 5.13GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max0) {
pwr_max0 = pwr;
freq_max0 = freq;
}
// Search between 5.27 and 5.342 GHz
gpibWrite(ud, "FA 5.27GHZ;");
gpibWrite(ud, "FB 5.342GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr_max1 = atof(gpibQuery(ud, "MKA?",55L));
freq_max1 = atof(gpibQuery(ud, "MKF?",55L));
// Search between 5.342 and 6 GHz
gpibWrite(ud, "FA 5.342GHZ;");
gpibWrite(ud, "FB 6GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr_max2 = atof(gpibQuery(ud, "MKA?",55L));
freq_max2 = atof(gpibQuery(ud, "MKF?",55L));
// Search between 6 and 7 GHz
gpibWrite(ud, "FA 6GHZ;");
gpibWrite(ud, "FB 7GHZ;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max2) {
pwr_max2 = pwr;
freq_max2 = freq;
}
// Search between 7 and 13 GHz
for (cf_index=0;cf_index<6;cf_index++) {
gpibWrite(ud, "CF UP;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max2) {
pwr_max2 = pwr;
freq_max2 = freq;
}
}
// Search between 13 and 16 GHz
for (cf_index=0;cf_index<3;cf_index++) {
gpibWrite(ud, "CF UP;");
gpibWrite(ud, "TS;");
gpibQuery(ud, "DONE?",5L);
gpibWrite(ud, "MKPK HI;");
pwr = atof(gpibQuery(ud, "MKA?",55L));
freq = atof(gpibQuery(ud, "MKF?",55L));
if (pwr > pwr_max2) {
pwr_max2 = pwr;
freq_max2 = freq;
}
}
n = sprintf(emissions, "%07.2f, %10.3E, %07.2f, %10.3E, %07.2f, %10.3E",
pwr_max0, freq_max0, pwr_max1, freq_max1, pwr_max2, freq_max2);
emissions[n] = '\0';
return emissions;
}
MANLIB_API char *spaMeasTxSpuriousEmLite(const int ud,
const double ref_level,
const int reset) {
int rsp = 0, n;
double pwr, freq, pwr_max0, pwr_max1, pwr_max2, freq_max0, freq_max1, freq_max2;
static char emissions[62] = "-120.00, 0.000E+000, -120.00, 0.000E+000, -120.00, 0.000E+000";
if (reset) {
rsp = atoi(gpibQuery(ud, "*RST;*OPC?", 5L)); // reset
gpibWrite(ud, ":INIT:CONT 0;"); // single sweep
gpibWrite(ud, qq(":DISP:WIND:TRAC:Y:RLEV %f;", ref_level)); // reference level
gpibWrite(ud, ":DISP:WIND:TRAC:Y:PDIV 5;"); // scale
gpibWrite(ud, ":BAND:RES 1E6;VID 1E4;"); // resolution / video bandwidth
gpibWrite(ud, ":FREQ:STAR 1E7;"); // start freq
gpibWrite(ud, ":FREQ:STOP 1E9;"); // stop freq
gpibWrite(ud, ":DET POS;"); // detector mode (peak)
gpibWrite(ud, ":CALC:MARK:PEAK:SEAR:MODE MAX"); // set peak search mode
gpibWrite(ud, ":FREQ:CENT:STEP:AUTO 0;"); // freq step auto off
gpibWrite(ud, ":FREQ:CENT:STEP 1E9;"); // freq step 1 GHz
}
// Make measurement
// Search between 10 MHz and 1 GHz
gpibWrite(ud, ":FREQ:STAR 1E7;"); // start freq
gpibWrite(ud, ":FREQ:STOP 1E9;"); // stop freq
gpibWrite(ud, ":INIT:IMM;*WAI;"); // trigger sweep
pwr_max0 = atof(gpibQuery(ud, ":CALC:MARK:MAX;Y?", 55L)); // find max peak and measure amplitude
freq_max0 = atof(gpibQuery(ud, ":CALC:MARK:X?",55L)); // measure frequency of peak
// Search between 1 GHz and 2 GHz
gpibWrite(ud, ":FREQ:STAR 1E9;"); // start freq
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -