Made transparent trigger mode wok in multi-board configuration

This commit is contained in:
2016-11-28 16:57:50 +01:00
parent 12709a248e
commit 5ab32c3921
3 changed files with 61 additions and 10 deletions
+2 -2
View File
@@ -150,7 +150,7 @@ void ConfigDialog::UpdateControls()
m_cbExtRefclk->SetValue(m_osci->GetBoard(m_board)->GetRefclk() == 1);
if ((m_osci->GetBoard(m_board)->GetBoardType() == 8 || m_osci->GetBoard(m_board)->GetBoardType() == 9)
&& (!m_osci->IsMultiBoard() || m_board == 0))
&& !(m_osci->IsMultiBoard() && !m_frame->IsTranspTrigger() && m_board > 0))
m_frame->EnableTriggerConfig(true);
else
m_frame->EnableTriggerConfig(false);
@@ -178,7 +178,7 @@ void ConfigDialog::OnBoardSelect( wxCommandEvent& event )
wxT("DRS Oscilloscope"), wxOK | wxICON_STOP, this);
} else {
if (b->GetScaler(5) < 300000) {
str.Printf(wxT("No clock signal connected to CLK IN of board #%d"), i);
str.Printf(wxT("No clock signal connected to CLK IN of board #%d. Keeping internal clock."), m_frame->GetOsci()->GetBoard(i)->GetBoardSerialNumber());
wxMessageBox(str, wxT("DRS Oscilloscope"), wxOK | wxICON_STOP, this);
m_frame->SetRefclk(i, false);
} else {
+57 -8
View File
@@ -93,6 +93,7 @@ DOFrame_fb( parent )
m_chnSection = 0;
m_multiBoard = false;
m_splitMode = false;
m_transpTrigger = false;
// initialize settings
m_trgCorr = true;
@@ -357,7 +358,7 @@ void DOFrame::ClearWaveforms()
void DOFrame::UpdateControls()
{
if (m_osci->IsMultiBoard() && m_board > 0) {
if (m_osci->IsMultiBoard() && !m_transpTrigger && m_board > 0) {
m_slTrgLevel->Enable(false);
m_rbAuto->Enable(false);
m_rbNormal->Enable(false);
@@ -434,7 +435,7 @@ void DOFrame::UpdateControls()
if (m_osci->GetCurrentBoard()->GetBoardType() < 8) {
EnableTriggerConfig(false);
} else {
if (m_osci->IsMultiBoard() && m_board > 0)
if (m_osci->IsMultiBoard() && !m_transpTrigger && m_board > 0)
EnableTriggerConfig(false);
else
EnableTriggerConfig(true);
@@ -529,6 +530,9 @@ void DOFrame::SaveConfig()
sprintf(str, "%d", (int)m_splitMode);
mxml_write_element(xml, "SplitMode", str);
sprintf(str, "%d", (int)m_transpTrigger);
mxml_write_element(xml, "TranspTrig", str);
for (int b=0 ; b<m_osci->GetNumberOfBoards() ; b++) {
sprintf(str, "Board-%d", m_osci->GetBoard(b)->GetBoardSerialNumber());
mxml_start_element(xml, str);
@@ -649,6 +653,9 @@ void DOFrame::LoadConfig(char *error, int size)
node = mxml_find_node(osc, "SplitMode");
if (node) m_splitMode = atoi(mxml_get_value(node)) > 0;
node = mxml_find_node(osc, "TranspTrig");
if (node) m_transpTrigger = atoi(mxml_get_value(node)) > 0;
for (i=idx=0 ; ; i++) {
PMXML_NODE b = mxml_subnode(osc, i);
if (!b)
@@ -1691,18 +1698,60 @@ void DOFrame::SetTriggerConfig(int id, bool flag)
if (id == ID_TRANS) {
if (flag) {
m_trgConfig[m_board] |= (1<<15);
m_trgConfig[m_board] &= ~((1<<4) | (1<<12)); // remove possible EXT trigger
} else
m_trgConfig[m_board] &= ~(1<<15);
// turn on transparent mode for all boards in multi-board mode
if (m_multiBoard) {
m_transpTrigger = true;
for (int i=0 ; i<m_osci->GetNumberOfBoards() ; i++) {
m_trgConfig[i] |= (1<<15);
m_trgConfig[i] &= ~((1<<4) | (1<<12)); // remove possible EXT trigger
}
} else {
m_transpTrigger = false;
m_trgConfig[m_board] |= (1<<15);
m_trgConfig[m_board] &= ~((1<<4) | (1<<12)); // remove possible EXT trigger
}
// if no channel selected, select first one
if ((m_trgConfig[m_board] & 0x7FFF) == 0) {
m_trgConfig[m_board] |= 1;
DOFrame::SelectBoard(m_board);
}
} else {
m_transpTrigger = false;
if (m_multiBoard) {
for (int i=0 ; i<m_osci->GetNumberOfBoards() ; i++) {
m_trgConfig[i] &= ~(1<<15);
}
} else
m_trgConfig[m_board] &= ~(1<<15);
}
}
if ((m_trgConfig[m_board] & 0x7FFF) > 0) {
m_rbSource->Enable(false);
m_osci->SetTriggerConfig(m_trgConfig[m_board]);
if (m_multiBoard) {
int b = m_board;
for (int i=0 ; i<m_osci->GetNumberOfBoards() ; i++) {
m_board = i;
m_osci->SetTriggerConfig(m_trgConfig[i]);
}
m_board = b;
} else {
m_osci->SetTriggerConfig(m_trgConfig[m_board]);
}
} else {
m_rbSource->Enable(true);
m_osci->SetTriggerSource(m_trgSource[m_board]);
if (m_multiBoard) {
int b = m_board;
for (int i=0 ; i<m_osci->GetNumberOfBoards() ; i++) {
m_board = i;
m_osci->SetTriggerSource(m_trgSource[i]);
}
m_board = b;
} else {
m_osci->SetTriggerSource(m_trgSource[m_board]);
}
}
}
+2
View File
@@ -94,6 +94,7 @@ public:
void SetTriggerConfig(int id, bool flag);
void SetTriggerSource(int b, int source);
void SetTriggerPolarity(int b, bool negative);
bool IsTranspTrigger() { return m_transpTrigger; }
void SetStat(bool flag);
void SetHist(bool flag);
void SetStatNStat(int n);
@@ -224,6 +225,7 @@ private:
int m_chnSection;
bool m_multiBoard;
bool m_splitMode;
bool m_transpTrigger;
int m_progress;
};