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

📄 cbt_bt_sig.cpp

📁 MTK 手机软件开发 META 源代码,开发环境: C++ Builder
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    ViStatus status;
    char cmd[BUF];
    unsigned long num;

    // timeout
    AnsiString as_cmd = "CONFigure:MSIGnal:INQuiry:ILENgth " + IntToStr(s_inquiry.i_timeout);
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    // number of response
    as_cmd = "CONFigure:MSIGnal:INQuiry:NOResponses " + IntToStr(s_inquiry.i_response_num);
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    return true;
}

//--------------------------------------------------------------------------
bool cbt_sig_bt_inquiry(S_CBT_T *cbt)
{
    ViStatus status;
    char cmd[BUF];
    unsigned long num;

    strcpy(cmd, "PROCedure:SIGNalling:ACTion INQuiry");
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    return true;
}

//--------------------------------------------------------------------------
bool cbt_sig_bt_connect_test(S_CBT_T *cbt)
{
    ViStatus status;
    char cmd[BUF];
    unsigned long num;

    strcpy(cmd, "PROCedure:SIGNalling:ACTion TEST");
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    return true;
}

//--------------------------------------------------------------------------
bool cbt_sig_bt_query_state(S_CBT_T *cbt, E_BTT_STATE_T* e_state)
{
    ViStatus status;
    char cmd[BUF];
    char buf[BUF];
    unsigned long num;
    AnsiString as_cmd = "SIGNalling:XSTate?";
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    status = viRead(cbt->s_bt, buf, BUF, &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }
    buf[num-1] = NULL;
    AnsiString as(buf);
    as = as.UpperCase();
    if (as.AnsiPos("SBY"))
    {
        *e_state = BTT_STATUS_STANDBY;
    }
    else if (as.AnsiPos("INQ"))
    {
        *e_state = BTT_STATUS_INQUIRY;
    }
    else if (as.AnsiPos("PAG"))
    {
        *e_state = BTT_STATUS_PAGING;
    }
    else if (as.AnsiPos("CONN"))
    {
        *e_state = BTT_STATUS_CONNECTED;
    }
    else if (as.AnsiPos("TEST"))
    {
        *e_state = BTT_STATUS_TEST;
    }
    else if (as.AnsiPos("HOLD"))
    {
        *e_state = BTT_STATUS_HOLD;
    }
    else if (as.AnsiPos("SNIF"))
    {
        *e_state = BTT_STATUS_SNIF;
    }
    else if (as.AnsiPos("PARK"))
    {
        *e_state = BTT_STATUS_PARK;
    }
    else if (as.AnsiPos("AUD"))
    {
        *e_state = BTT_STATUS_AUDIO;
    }
    else if (as.AnsiPos("DET"))
    {
        *e_state = BTT_STATUS_DETACH;
    }

    return true;
}

//--------------------------------------------------------------------------
bool cbt_sig_bt_release(S_CBT_T *cbt)
{
    ViStatus status;
    char cmd[BUF];
    unsigned long num;

    strcpy(cmd, "PROCedure:SIGNalling:ACTion DETach");
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    return true;
}

//===========================================================================
///////////////////////////    MPR measurement    ///////////////////////////
//===========================================================================
bool cbt_sig_bt_config_mpr(S_CBT_T *cbt, S_BTT_POWER bt_mpr)
{
    ViStatus status;
    char cmd[BUF];
    unsigned long num;
    AnsiString as_cmd = "CONFigure:POWer:MPR:CONTrol:STATistics " + IntToStr(bt_mpr.i_burst_num);
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    as_cmd = "CONFigure:POWer:MPR:CONTrol:REPetition SINGleshot,SONerror,NONE";
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    // channel
    as_cmd = "CONFigure:POWer:MPR:MMODe SINGle";
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    as_cmd = "CONFigure:POWer:MPR:MFRequency:UNIT CH";
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    as_cmd = "CONFigure:POWer:MPR:MFRequency " + IntToStr(bt_mpr.i_channel);
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    return true;
}

//===========================================================================
///////////////////////////    MOD measurement    ///////////////////////////
//===========================================================================
bool cbt_sig_bt_config_mod(S_CBT_T *cbt, S_BTT_MOD bt_mod)
{
    ViStatus status;
    char cmd[BUF];
    unsigned long num;
    AnsiString as_cmd = "CONFigure:MODulation:DEViation:CONTrol SCALar, " + IntToStr(bt_mod.i_burst_num) +
                        ", SINGleshot, SONerror, NONE";
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    // channel
    as_cmd = "CONFigure:MODulation:DEViation:MMODe SINGle";
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    as_cmd = "CONFigure:MODulation:DEViation:MFRequency:UNIT CH";
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    as_cmd = "CONFigure:MODulation:DEViation:MFRequency " + IntToStr(bt_mod.i_channel);
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    return true;
}
//---------------------------------------------------------------------------
bool cbt_sig_bt_read_average_freq_error(S_CBT_T *cbt, double* freq_err)
{
    ViStatus status;
    char cmd[BUF];
    char buf[BUF];
    unsigned long num;
    AnsiString as_cmd = "READ:MOD:DEV:EXT?";
    strcpy(cmd, as_cmd.c_str());
    status = viWrite(cbt->s_bt, cmd, strlen(cmd), &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }

    status = viRead(cbt->s_bt, buf, BUF, &num);
    if (status < VI_SUCCESS)
    {
        return false;
    }
    buf[num-1] = NULL;

    double d_result[CBT_BT_MOD_NUM];
    AnsiString as_result(buf);
    if (as_result.Pos("NAN"))
    {
        return false;
    }

    String_To_Array_double(buf, d_result, CBT_BT_MOD_NUM);
    *freq_err = d_result[CBT_BT_MOD_FREQ_ACCURACY_AVERAGE];

    return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -