From 4db8f1cdd282084e0f4e4c74087fed8aa160e075 Mon Sep 17 00:00:00 2001 From: Rene Hopf Date: Fri, 31 Oct 2014 16:00:08 +0100 Subject: [PATCH] mehr channel --- term/basicdrawpane.cpp | 32 ++++++++++++++++++-------------- term/basicdrawpane.hpp | 5 +++-- term/mainframe.cpp | 27 +++++++++++++++++++++++---- term/mainframe.hpp | 2 ++ 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/term/basicdrawpane.cpp b/term/basicdrawpane.cpp index 31e19d2a..eecdc57c 100644 --- a/term/basicdrawpane.cpp +++ b/term/basicdrawpane.cpp @@ -1,13 +1,16 @@ #include "basicdrawpane.hpp" -BasicDrawPane::BasicDrawPane(wxFrame* parent) : wxPanel(parent){ +BasicDrawPane::BasicDrawPane(wxFrame* parent, int ch) : wxPanel(parent){ time = 0; diff = 0; Bind(wxEVT_PAINT, &BasicDrawPane::paintEvent, this); xpos = 0; - data.push_back(std::vector(0)); - for (int i = 0; i<1024/2; i++) { - data[0].push_back(0); + channels = ch; + for (int i = 0; i()); + for (int j = 0; j<1024/2; j++) { + data[i].push_back(0); + } } } @@ -41,7 +44,7 @@ void BasicDrawPane::paintNow() render(dc); } -void BasicDrawPane::plotvalue(int value) +void BasicDrawPane::plotvalue(int value, int channel) { diff = wxGetUTCTimeMillis()-time; time = wxGetUTCTimeMillis(); @@ -49,7 +52,7 @@ void BasicDrawPane::plotvalue(int value) //data.at(xpos) += 0.1; data[0].at(xpos) = (float)value/64; - xpos = (xpos+1)%data.size(); + xpos = (xpos+1)%data[0].size(); Refresh(); //oder //Update(); @@ -82,14 +85,15 @@ void BasicDrawPane::render(wxDC& dc) x = 0; y = h/2; - xstep = w/(data[0].size()-1); - for(auto point : data[0]){ - xold = x; - yold = y; - y = h/2-point*h/2; - dc.DrawLine( xold-xstep, yold, x, y ); - x += xstep; + for (int i = 0; iAdd(uhu,0,wxALIGN_LEFT|wxALL,3); leiste->Add(stmbl,0,wxALIGN_LEFT|wxALL,3); topsizer->Add(leiste); - drawpanel = new BasicDrawPane((wxFrame*)top); - topsizer->Add(drawpanel, 1,wxEXPAND,0); - top->SetSizer(topsizer); + drawpanel = new BasicDrawPane((wxFrame*)top,4); + + topsizer->Add(drawpanel, 1,wxEXPAND,0); + for(int i = 0;ichannels;i++){ + channelchoice.push_back(new wxChoice (top, wxID_ANY)); + channelchoice.back()->SetClientData(new int(i)); + channelchoice.back()->Bind(wxEVT_CHOICE,&MainFrame::OnChannelChange, this, wxID_ANY); + channelchoice.back()->Append(wxT("-")); + channelchoice.back()->Append(wxT("1")); + channelchoice.back()->Append(wxT("2")); + channelchoice.back()->Append(wxT("3")); + channelleiste->Add(channelchoice.back(), 0,wxALIGN_LEFT|wxALL,3); + } + topsizer->Add(channelleiste); + + top->SetSizer(topsizer); //unten wxPanel *bottom = new wxPanel(mainsplitter, wxID_ANY); @@ -78,6 +93,10 @@ void MainFrame::OnKeyDown(wxKeyEvent& event){ } } +void MainFrame::OnChannelChange(wxCommandEvent& event){ + std::cout << *(int*)event.GetClientData() << "->" << event.GetSelection() << std::endl; +} + void MainFrame::OnIdle(wxIdleEvent& evt){ int ret; if(connected){ @@ -87,7 +106,7 @@ void MainFrame::OnIdle(wxIdleEvent& evt){ //if(uhu->GetValue()){ for (int i=0; i>7)) { - drawpanel->plotvalue(((int)buf[i])+128/2); + drawpanel->plotvalue(((int)buf[i])+128/2,0); }else{ text->AppendText(buf[i]); } diff --git a/term/mainframe.hpp b/term/mainframe.hpp index e0d650ac..e6f43756 100644 --- a/term/mainframe.hpp +++ b/term/mainframe.hpp @@ -30,11 +30,13 @@ private: struct sp_port **ports; struct sp_port *port; wxChoice *choose_port; + std::vector channelchoice; bool connected; void OnConnect(wxCommandEvent& WXUNUSED(event)); void OnRefresh(wxCommandEvent& WXUNUSED(event)); void OnClear(wxCommandEvent& WXUNUSED(event)); void OnInput(wxCommandEvent& event); + void OnChannelChange(wxCommandEvent& event); void OnKeyDown(wxKeyEvent& event); void OnIdle(wxIdleEvent& evt); void connect();