📄 form_tdmb.cpp
字号:
case METAAPP_FAIL:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Get signal fail";
Application->MessageBox("Execution Failure : Get signal", "FAILURE", MB_OK );
m_tmSingal->Enabled = false;
}
break;
case METAAPP_TIMEOUT:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Get signal timeout";
Application->MessageBox("Execution Timeout : Get signal", "TIMEOUT", MB_OK );
m_tmSingal->Enabled = false;
}
break;
case METAAPP_STOP:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Get signal stop";
m_tmSingal->Enabled = false;
}
break;
default:
{
}
break;
}
//CurrentPageReset();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool TfrmTDMB::Get_ServiceID(unsigned int &ch_kHz, unsigned int &ui_ServiceId, unsigned int &ui_SubChnId)
{
AnsiString as_sel;
TTreeNode *p_tnSel;
for (int i=0; i<m_tvServices->Items->Count; i++)
{
p_tnSel = m_tvServices->Items->Item[i];
if (p_tnSel->Selected)
{
as_sel = p_tnSel->Text;
break;
}
}
int pos_sv_begin = as_sel.AnsiPos("Service ID:");
int pos_chid_begin = as_sel.AnsiPos("Channel ID:");
if ((!pos_sv_begin) || (!pos_chid_begin))
{
return false;
}
while (p_tnSel != NULL)
{
p_tnSel = p_tnSel->GetPrev();
if (NULL == p_tnSel)
{
return false;
}
// channel
int pos_ch_begin = p_tnSel->Text.AnsiPos("CH = ");
int pos_ch_end = p_tnSel->Text.AnsiPos("MHz");
if ((pos_ch_begin != 0) && (pos_ch_end != 0))
{
AnsiString as_ch = p_tnSel->Text.SubString(pos_ch_begin+5, pos_ch_end-pos_ch_begin-6);
ch_kHz = atof(as_ch.c_str()) * 1000;
break;
}
}
// service ID
pos_sv_begin += strlen("Service ID:");
as_sel = as_sel.SubString(pos_sv_begin, as_sel.Length()-pos_sv_begin);
int pos_sv_end = as_sel.AnsiPos("]");
ui_ServiceId = as_sel.SubString(1, pos_sv_end -1).ToInt();
// channel ID
pos_chid_begin = pos_sv_end + strlen("Channel ID:") + 2;
as_sel = as_sel.SubString(pos_chid_begin, as_sel.Length() - pos_chid_begin);
int pos_ch_end = as_sel.AnsiPos("]");
ui_SubChnId = as_sel.SubString(1, pos_ch_end -1).ToInt();
return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmTDMB::m_btnSelectServiceClick(TObject *Sender)
{
S_TDMB_SEL_SERV_ONLY_T serv_only;
if (!Get_ServiceID(serv_only.ui_freq_khz, serv_only.req.m_u4ServiceId, serv_only.req.m_u4SubChnId))
{
return;
}
m_bAction = true;
m_tmSingal->Enabled = false;
m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_SelServiceOnly;
m_TDMB_RF_Obj.REQ_Select_Service_Only_Start(serv_only);
CurrentPageLock();
}
//--------------------------------------------------------------------
void TfrmTDMB::CNF_TDMB_SelServiceOnly(void)
{
m_bAction = false;
E_METAAPP_RESULT_T state = m_TDMB_RF_Obj.Get_ConfirmState();
switch (state)
{
case METAAPP_SUCCESS:
{
m_tmSingal->Enabled = true;
m_bService = true;
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Select service successfully";
}
break;
case METAAPP_TDMB_DISK_FULL:
{
}
break;
case METAAPP_FAIL:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Select service fail";
Application->MessageBox("Execution Failure : Select service", "FAILURE", MB_OK );
}
break;
case METAAPP_TIMEOUT:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Select service timeout";
Application->MessageBox("Execution Timeout : Select service", "TIMEOUT", MB_OK );
}
break;
case METAAPP_STOP:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Select service stop";
}
break;
default:
{
}
break;
}
CurrentPageReset();
}
//---------------------------------------------------------------------------
void __fastcall TfrmTDMB::m_btnStartRSClick(TObject *Sender)
{
S_TDMB_SEL_SERV_T serv;
if (!Get_ServiceID(serv.ui_freq_khz, serv.req.m_u4ServiceId, serv.req.m_u4SubChnId))
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString) " Invalid item click! Please select sub channel.";
Application->MessageBox("Invalid item click! Please select sub channel.", "Warning", MB_OK);
return;
}
if (!m_dlgService->Execute())
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString) " Save stream to file fail";
Application->MessageBox("Execution Failure : Save stream to file", "FAILURE", MB_OK);
return;
}
m_bAction = true;
m_tmSingal->Enabled = false;
serv.req.m_pcfilepath = m_dlgService->FileName.c_str();
m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_RecordStream;
m_TDMB_RF_Obj.REQ_RecordStream_Start(serv);
CurrentPageLock();
}
//---------------------------------------------------------------------------
void TfrmTDMB::CNF_TDMB_RecordStream(void)
{
m_bAction = false;
E_METAAPP_RESULT_T state = m_TDMB_RF_Obj.Get_ConfirmState();
switch (state)
{
case METAAPP_SUCCESS:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Record stream progressing";
m_tmSingal->Enabled = true;
m_tmService->Enabled = true;
m_bRecordStream = true;
m_btnStop->Enabled = true;
}
break;
case METAAPP_TDMB_DISK_FULL:
{
}
break;
case METAAPP_FAIL:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Record stream fail";
Application->MessageBox("Execution Failure : Record stream", "FAILURE", MB_OK );
}
break;
case METAAPP_TIMEOUT:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Record stream timeout";
Application->MessageBox("Execution Timeout : Record stream", "TIMEOUT", MB_OK );
}
break;
case METAAPP_STOP:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Record stream stop";
}
break;
default:
{
}
break;
}
CurrentPageReset();
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void __fastcall TfrmTDMB::m_btnStopClick(TObject *Sender)
{
m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_StopService;
m_TDMB_RF_Obj.REQ_Stop_Service_Start();
m_tmGetFile->Enabled = true;
m_bService = false;
m_bRecordStream = false;
m_tmSingal->Enabled = false;
CurrentPageLock();
m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_STATUS]->Text = " read record TS file from FAT progressing ";
}
//---------------------------------------------------------------------------
void TfrmTDMB::CNF_TDMB_StopService(void)
{
m_tmService->Enabled = false;
m_tmGetFile->Enabled = false;
S_FAT_PROGRESS* p_progress = m_TDMB_RF_Obj.Get_FatProgress();
m_pbService->Position = p_progress->percent;
m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_SENT_AND_TOTAL]->Text = " " + IntToStr(p_progress->sent_bytes)+ " / " + IntToStr(p_progress->total_bytes)+ " bytes";
m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_PERCENT]->Text = " " + IntToStr(p_progress->percent) + "%";
CurrentPageReset();
E_METAAPP_RESULT_T state = m_TDMB_RF_Obj.Get_ConfirmState();
switch (state)
{
case METAAPP_SUCCESS:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Stop service successfully";
// m_tmSingal->Enabled = true;
}
break;
case METAAPP_FAIL:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Stop service fail";
Application->MessageBox("Execution Failure : Stop service", "FAILURE", MB_OK );
}
break;
case METAAPP_TIMEOUT:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Stop service timeout";
Application->MessageBox("Execution Timeout : Stop service", "TIMEOUT", MB_OK );
}
break;
case METAAPP_STOP:
{
m_sbTDMB->Panels->Items[0]->Text = (AnsiString)" Stop service stop";
}
break;
default:
{
}
break;
}
}
void __fastcall TfrmTDMB::m_tmGetFileTimer(TObject *Sender)
{
S_FAT_PROGRESS* p_progress = m_TDMB_RF_Obj.Get_FatProgress();
m_pbService->Position = p_progress->percent;
m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_SENT_AND_TOTAL]->Text = " " + IntToStr(p_progress->sent_bytes)+ " / " + IntToStr(p_progress->total_bytes)+ " bytes";
m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_PERCENT]->Text = " " + IntToStr(p_progress->percent) + "%";
}
//---------------------------------------------------------------------------
void __fastcall TfrmTDMB::m_tmServiceTimer(TObject *Sender)
{
S_TDMB_SEL_SERV_ERROR_RESULT* p_result = m_TDMB_RF_Obj.Get_SelServiceResult();
if (p_result->b_valid)
{
if (TDMB_FAT_DISK_FULL == p_result->e_result)
{
m_tmService->Enabled = false;
m_bRecordStream = false;
Application->MessageBox("FAT disk full, read record TS file from FAT", "WARNING", MB_OK);
m_sbTDMB->Panels->Items[TDMB_STATUS_BAR_INDEX_STATUS]->Text = " read record TS file from FAT progressing ";
m_TDMB_RF_Obj.ConfirmCallback = ::CNF_TDMB_StopService;
m_TDMB_RF_Obj.REQ_Stop_Service_Start();
m_tmGetFile->Enabled = true;
CurrentPageLock();
}
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -