⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 minst.c

📁 atheros ar5001 5002 driver
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -