--- a/examples/DS401_Slave_Gui/main.cpp Mon Feb 04 16:40:44 2008 +0100
+++ b/examples/DS401_Slave_Gui/main.cpp Tue Feb 05 10:17:36 2008 +0100
@@ -18,44 +18,47 @@
#if defined(WIN32) && !defined(__CYGWIN__)
#include <windows.h>
-extern "C" {
- #include "getopt.h"
+extern "C"
+{
+#include "getopt.h"
}
#endif
#include "main.h"
#include "TestSlaveGui.h"
-extern "C" {
- #include "canfestival.h"
- #include "ObjDict.h"
+extern "C"
+{
+#include "canfestival.h"
+#include "ObjDict.h"
}
#include "wx/wxprec.h"
#ifdef __BORLANDC__
- #pragma hdrstop
+#pragma hdrstop
#endif
#ifndef WX_PRECOMP
- #include "wx/wx.h"
+#include "wx/wx.h"
#endif
-wxTextCtrl *textLog;
-int node_id_ext;
+wxTextCtrl *textLog;
+int node_id_ext;
int to_start = 0;
-MyFrame *frame;
+MyFrame *frame;
#define MAXLENGTH_BUSNAME 32
#define MAXLENGTH_BAUDRATE 8
-char _busname[MAXLENGTH_BUSNAME] = "vcan0";
-char _baudrate[MAXLENGTH_BAUDRATE] = "500K";
-s_BOARD SlaveBoard = {_busname, _baudrate};
+char _busname[MAXLENGTH_BUSNAME] = "vcan0";
+char _baudrate[MAXLENGTH_BAUDRATE] = "500K";
+s_BOARD SlaveBoard = { _busname, _baudrate };
+
#define MAXLENGTH_LIBPATH 1024
-char LibraryPath[MAXLENGTH_LIBPATH] = "libcanfestival_can_virtual.so";
-double Gtime = 0;
-double y[28][45];
-double hdelta = 0;
-double old_max = 5;
-double old_min = -5;
+char LibraryPath[MAXLENGTH_LIBPATH] = "libcanfestival_can_virtual.so";
+double Gtime = 0;
+double y[28][45];
+double hdelta = 0;
+double old_max = 5;
+double old_min = -5;
#if defined(WIN32)
#define LIB_EXTENT wxT("*.dll")
@@ -102,751 +105,979 @@
const int INST8 = 138;
// Attach the event handlers. Put this after MyFrame declaration.
-BEGIN_EVENT_TABLE(MyFrame, wxFrame)
- EVT_BUTTON(STOP, MyFrame::OnStop)
- EVT_BUTTON(LOAD, MyFrame::OnLoad)
- EVT_BUTTON(START, MyFrame::OnStart)
- EVT_TOGGLEBUTTON(INBT1, MyFrame::OnInbt1)
- EVT_TOGGLEBUTTON(INBT2, MyFrame::OnInbt2)
- EVT_TOGGLEBUTTON(INBT3, MyFrame::OnInbt3)
- EVT_TOGGLEBUTTON(INBT4, MyFrame::OnInbt4)
- EVT_TOGGLEBUTTON(INBT5, MyFrame::OnInbt5)
- EVT_TOGGLEBUTTON(INBT6, MyFrame::OnInbt6)
- EVT_TOGGLEBUTTON(INBT7, MyFrame::OnInbt7)
- EVT_TOGGLEBUTTON(INBT8, MyFrame::OnInbt8)
- EVT_COMMAND_SCROLL(INS1, MyFrame::OnIns1)
- EVT_COMMAND_SCROLL(INS2, MyFrame::OnIns2)
- EVT_COMMAND_SCROLL(INS3, MyFrame::OnIns3)
- EVT_COMMAND_SCROLL(INS4, MyFrame::OnIns4)
- EVT_COMMAND_SCROLL(INS5, MyFrame::OnIns5)
- EVT_COMMAND_SCROLL(INS6, MyFrame::OnIns6)
- EVT_COMMAND_SCROLL(INS7, MyFrame::OnIns7)
- EVT_COMMAND_SCROLL(INS8, MyFrame::OnIns8)
- EVT_SPINCTRL(INST1, MyFrame::OnInst1)
- EVT_SPINCTRL(INST2, MyFrame::OnInst2)
- EVT_SPINCTRL(INST3, MyFrame::OnInst3)
- EVT_SPINCTRL(INST4, MyFrame::OnInst4)
- EVT_SPINCTRL(INST5, MyFrame::OnInst5)
- EVT_SPINCTRL(INST6, MyFrame::OnInst6)
- EVT_SPINCTRL(INST7, MyFrame::OnInst7)
- EVT_SPINCTRL(INST8, MyFrame::OnInst8)
-
- EVT_LISTBOX(FREQBOX, MyFrame::OnFreqBoxClick)
- EVT_MENU(FILE_QUIT, MyFrame::OnQuit)
- EVT_BUTTON(QUIT, MyFrame::OnQuit)
- EVT_MENU(HELP_ABOUT, MyFrame::OnAbout)
- //EVT_PAINT(MyFrame::OnPaint)
-
- EVT_TIMER(TIMER_ID, MyFrame::OnTimer)
-END_EVENT_TABLE()
-
-IMPLEMENT_APP_NO_MAIN(MyApp);
+BEGIN_EVENT_TABLE (MyFrame, wxFrame)
+EVT_BUTTON (STOP, MyFrame::OnStop)
+EVT_BUTTON (LOAD, MyFrame::OnLoad)
+EVT_BUTTON (START, MyFrame::OnStart)
+EVT_TOGGLEBUTTON (INBT1, MyFrame::OnInbt1)
+EVT_TOGGLEBUTTON (INBT2, MyFrame::OnInbt2)
+EVT_TOGGLEBUTTON (INBT3, MyFrame::OnInbt3)
+EVT_TOGGLEBUTTON (INBT4, MyFrame::OnInbt4)
+EVT_TOGGLEBUTTON (INBT5, MyFrame::OnInbt5)
+EVT_TOGGLEBUTTON (INBT6, MyFrame::OnInbt6)
+EVT_TOGGLEBUTTON (INBT7, MyFrame::OnInbt7)
+EVT_TOGGLEBUTTON (INBT8, MyFrame::OnInbt8)
+EVT_COMMAND_SCROLL (INS1, MyFrame::OnIns1)
+EVT_COMMAND_SCROLL (INS2, MyFrame::OnIns2)
+EVT_COMMAND_SCROLL (INS3, MyFrame::OnIns3)
+EVT_COMMAND_SCROLL (INS4, MyFrame::OnIns4)
+EVT_COMMAND_SCROLL (INS5, MyFrame::OnIns5)
+EVT_COMMAND_SCROLL (INS6, MyFrame::OnIns6)
+EVT_COMMAND_SCROLL (INS7, MyFrame::OnIns7)
+EVT_COMMAND_SCROLL (INS8, MyFrame::OnIns8)
+EVT_SPINCTRL (INST1, MyFrame::OnInst1)
+EVT_SPINCTRL (INST2, MyFrame::OnInst2)
+EVT_SPINCTRL (INST3, MyFrame::OnInst3)
+EVT_SPINCTRL (INST4, MyFrame::OnInst4)
+EVT_SPINCTRL (INST5, MyFrame::OnInst5)
+EVT_SPINCTRL (INST6, MyFrame::OnInst6)
+EVT_SPINCTRL (INST7, MyFrame::OnInst7)
+EVT_SPINCTRL (INST8, MyFrame::OnInst8)
+EVT_LISTBOX (FREQBOX, MyFrame::OnFreqBoxClick)
+EVT_MENU (FILE_QUIT, MyFrame::OnQuit)
+EVT_BUTTON (QUIT, MyFrame::OnQuit) EVT_MENU (HELP_ABOUT, MyFrame::OnAbout)
+ //EVT_PAINT(MyFrame::OnPaint)
+ EVT_TIMER (TIMER_ID, MyFrame::OnTimer)
+END_EVENT_TABLE ()IMPLEMENT_APP_NO_MAIN (MyApp);
IMPLEMENT_WX_THEME_SUPPORT;
-void help()
-{
- printf("**************************************************************\n");
- printf("* DS-401 Slave GUI *\n");
- printf("* *\n");
- printf("* Usage: *\n");
- printf("* ./DS401_Slave_Gui [OPTIONS] *\n");
- printf("* *\n");
- printf("* OPTIONS: *\n");
- printf("* -l : Can library [\"libcanfestival_can_virtual.so\"] *\n");
- printf("* *\n");
- printf("* Slave: *\n");
- printf("* -i : Node id format [0x01 , 0x7F] *\n");
- printf("* *\n");
- printf("* CAN bus: *\n");
- printf("* -b : bus name [\"1\"] *\n");
- printf("* -B : 1M,500K,250K,125K,100K,50K,20K,10K *\n");
- printf("* *\n");
- printf("**************************************************************\n");
-}
-
-
-int main(int argc,char **argv)
+ void
+ help ()
+{
+ printf ("**************************************************************\n");
+ printf ("* DS-401 Slave GUI *\n");
+ printf ("* *\n");
+ printf ("* Usage: *\n");
+ printf ("* ./DS401_Slave_Gui [OPTIONS] *\n");
+ printf ("* *\n");
+ printf ("* OPTIONS: *\n");
+ printf
+ ("* -l : Can library [\"libcanfestival_can_virtual.so\"] *\n");
+ printf ("* *\n");
+ printf ("* Slave: *\n");
+ printf ("* -i : Node id format [0x01 , 0x7F] *\n");
+ printf ("* *\n");
+ printf ("* CAN bus: *\n");
+ printf
+ ("* -b : bus name [\"1\"] *\n");
+ printf ("* -B : 1M,500K,250K,125K,100K,50K,20K,10K *\n");
+ printf ("* *\n");
+ printf ("**************************************************************\n");
+}
+
+
+int
+main (int argc, char **argv)
{
int c;
extern char *optarg;
char *snodeid;
- while ((c = getopt(argc, argv, "-b:B:l:i:s")) != EOF)
- {
- switch(c)
+ while ((c = getopt (argc, argv, "-b:B:l:i:s")) != EOF)
{
- case 'b' :
- if (optarg[0] == 0)
- {
- help();
- exit(1);
- }
- SlaveBoard.busname = optarg;
- break;
- case 'B' :
- if (optarg[0] == 0)
- {
- help();
- exit(1);
- }
- SlaveBoard.baudrate = optarg;
- break;
- case 'l' :
- if (optarg[0] == 0)
- {
- help();
- exit(1);
- }
- strncpy(LibraryPath, optarg, MAXLENGTH_LIBPATH);
- break;
- case 'i' :
- if (optarg[0] == 0)
- {
- help();
- exit(1);
- }
- snodeid = optarg;
- sscanf(snodeid,"%x",&node_id_ext);
- break;
- case 's' :
- to_start = 1;
- break;
- default:
- help();
- exit(1);
+ switch (c)
+ {
+ case 'b':
+ if (optarg[0] == 0)
+ {
+ help ();
+ exit (1);
+ }
+ SlaveBoard.busname = optarg;
+ break;
+ case 'B':
+ if (optarg[0] == 0)
+ {
+ help ();
+ exit (1);
+ }
+ SlaveBoard.baudrate = optarg;
+ break;
+ case 'l':
+ if (optarg[0] == 0)
+ {
+ help ();
+ exit (1);
+ }
+ strncpy (LibraryPath, optarg, MAXLENGTH_LIBPATH);
+ break;
+ case 'i':
+ if (optarg[0] == 0)
+ {
+ help ();
+ exit (1);
+ }
+ snodeid = optarg;
+ sscanf (snodeid, "%x", &node_id_ext);
+ break;
+ case 's':
+ to_start = 1;
+ break;
+ default:
+ help ();
+ exit (1);
+ }
}
- }
- wxEntry(argc,argv);
-}
-
-
-bool MyApp::OnInit()
-{
- frame = new MyFrame( _T("I-O simulator"));
- frame->Show(true);
- return true;
-}
-
-MyFrame::MyFrame(const wxString& title)
- : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800, 740), wxDEFAULT_FRAME_STYLE, wxT("frame"))
- ,m_timer(this, TIMER_ID)
-{
- wxMenu *fileMenu = new wxMenu;
- wxMenu *helpMenu = new wxMenu;
- wxPanel *panel;
- wxButton *quit;
- wxButton *load;
- wxBoxSizer *mysizer;
- wxBoxSizer *mysssizer;
- wxBoxSizer *myhsizer;
- wxBoxSizer *mybsizer;
- wxBoxSizer *myentrysizer;
- wxListBox *freqlist;
- wxStaticBox *namebox;
- wxStaticBox *freqbox;
+ wxEntry (argc, argv);
+}
+
+
+bool
+MyApp::OnInit ()
+{
+ frame = new MyFrame (_T ("I-O simulator"));
+ frame->Show (true);
+ return true;
+}
+
+MyFrame::MyFrame (const wxString & title):wxFrame (NULL, wxID_ANY, title, wxDefaultPosition, wxSize (800, 740),
+ wxDEFAULT_FRAME_STYLE, wxT ("frame")), m_timer (this,
+ TIMER_ID)
+{
+ wxMenu *
+ fileMenu = new wxMenu;
+ wxMenu *
+ helpMenu = new wxMenu;
+ wxPanel *
+ panel;
+ wxButton *
+ quit;
+ wxButton *
+ load;
+ wxBoxSizer *
+ mysizer;
+ wxBoxSizer *
+ mysssizer;
+ wxBoxSizer *
+ myhsizer;
+ wxBoxSizer *
+ mybsizer;
+ wxBoxSizer *
+ myentrysizer;
+ wxListBox *
+ freqlist;
+ wxStaticBox *
+ namebox;
+ wxStaticBox *
+ freqbox;
// SetIcon(wxICON(monicone));
- SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
- helpMenu->Append(HELP_ABOUT, _T("&About...\tF1"),
- _T("Show about dialog"));
- fileMenu->Append(FILE_QUIT, _T("E&xit\tAlt-X"),
- _T("Quit this program"));
- wxMenuBar *menuBar = new wxMenuBar();
- menuBar->Append(fileMenu, _T("&File"));
- menuBar->Append(helpMenu, _T("&Help"));
- SetMenuBar(menuBar);
- CreateStatusBar(2);
- SetStatusText(_T("Lolitech."), 0);
- SetStatusText(_T("Welcome."), 1);
-
- book = new wxNotebook(this, BOOKCTRL);
-
- panel = new wxPanel(book);
- book->AddPage(panel, _T("Configuration"), true);
- mysizer = new wxBoxSizer( wxVERTICAL );
- panel->SetSizer(mysizer);
- wxString choices[] =
- {
- _T("10K"), _T("20K"), _T("50K"), _T("100K"),
- _T("125K"), _T("250K"), _T("500K"), _T("1M")
- };
-
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Bus driver")), wxHORIZONTAL );
- mysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 5);
- load = new wxButton( panel, LOAD, _T("Load can driver"));
- myhsizer->Add(load, 0, wxLEFT, 5);
- drivername = new wxTextCtrl(panel, wxID_ANY, wxString((const char*)LibraryPath,wxConvLocal));
- myhsizer->Add(drivername, 1, wxEXPAND | wxALL, 5);
- myentrysizer = new wxBoxSizer( wxHORIZONTAL );
- mysizer->Add(myentrysizer, 0, wxEXPAND | wxALL, 5);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Bus name")), wxHORIZONTAL );
- myentrysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 5);
- busname = new wxTextCtrl(panel, wxID_ANY, wxString((const char*)SlaveBoard.busname, wxConvLocal));
- myhsizer->Add(busname, 0, wxLEFT, 5);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Node ID (Hexa)")), wxHORIZONTAL );
- myentrysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 5);
- node_id = new wxSpinCtrl(panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 1, 127, node_id_ext, _T("wxSpinCtrl"));
- myhsizer->Add(node_id, 0, wxRIGHT, 5);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Baudrate")), wxHORIZONTAL );
- mysizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
- freqlist = new wxListBox( panel, FREQBOX, wxDefaultPosition, wxDefaultSize, 8, choices, wxLB_SINGLE | wxLB_HSCROLL);
- myhsizer->Add(freqlist, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
- quit = new wxButton( panel, QUIT, _T("QUIT"));
- mysizer->Add(quit, 0, wxALL, 5);
-
-
- panel = new wxPanel(book);
- book->AddPage(panel, wxT("Inputs"), true);
- mysizer = new wxBoxSizer( wxVERTICAL );
- panel->SetSizer(mysizer);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Read Inputs UNSIGNED8")), wxHORIZONTAL );
- mysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 30);
- inbt1 = new wxToggleButton(panel, INBT1, wxT("1"));
- inbt2 = new wxToggleButton(panel, INBT2, wxT("2"));
- inbt3 = new wxToggleButton(panel, INBT3, wxT("3"));
- inbt4 = new wxToggleButton(panel, INBT4, wxT("4"));
- inbt5 = new wxToggleButton(panel, INBT5, wxT("5"));
- inbt6 = new wxToggleButton(panel, INBT6, wxT("6"));
- inbt7 = new wxToggleButton(panel, INBT7, wxT("7"));
- inbt8 = new wxToggleButton(panel, INBT8, wxT("8"));
- myhsizer->Add(inbt1, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(inbt2, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(inbt3, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(inbt4, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(inbt5, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(inbt6, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(inbt7, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(inbt8, wxEXPAND | wxALL, 0, 5);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Analogue Inputs INTEGER16")), wxVERTICAL );
- mysizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 30);
- mysssizer = new wxBoxSizer( wxHORIZONTAL );
- myhsizer->Add(mysssizer, 0, wxEXPAND | wxALL, 0);
- inst1 = new wxSpinCtrl(panel, INST1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
- inst2 = new wxSpinCtrl(panel, INST2, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
- inst3 = new wxSpinCtrl(panel, INST3, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
- inst4 = new wxSpinCtrl(panel, INST4, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
- inst5 = new wxSpinCtrl(panel, INST5, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
- inst6 = new wxSpinCtrl(panel, INST6, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
- inst7 = new wxSpinCtrl(panel, INST7, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
- inst8 = new wxSpinCtrl(panel, INST8, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0, _T("0"));
- mysssizer->Add(inst1, wxALL, 0, 5);
- mysssizer->Add(inst2, wxALL, 0, 5);
- mysssizer->Add(inst3, wxALL, 0, 5);
- mysssizer->Add(inst4, wxALL, 0, 5);
- mysssizer->Add(inst5, wxALL, 0, 5);
- mysssizer->Add(inst6, wxALL, 0, 5);
- mysssizer->Add(inst7, wxALL, 0, 5);
- mysssizer->Add(inst8, wxALL, 0, 5);
- mysssizer = new wxBoxSizer( wxHORIZONTAL );
- myhsizer->Add(mysssizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 0);
- ins1 = new wxSlider(panel, INS1, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
- ins2 = new wxSlider(panel, INS2, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
- ins3 = new wxSlider(panel, INS3, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
- ins4 = new wxSlider(panel, INS4, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
- ins5 = new wxSlider(panel, INS5, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
- ins6 = new wxSlider(panel, INS6, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
- ins7 = new wxSlider(panel, INS7, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
- ins8 = new wxSlider(panel, INS8, 0, -32768, 32767, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("slider"));
- mysssizer->Add(ins1, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(ins2, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(ins3, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(ins4, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(ins5, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(ins6, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(ins7, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(ins8, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- quit = new wxButton( panel, QUIT, _T("QUIT"));
- mysizer->Add(quit, 0, wxALL, 5);
-
- panel = new wxPanel(book);
- book->AddPage(panel, wxT("Outputs"), true);
- mysizer = new wxBoxSizer( wxVERTICAL );
- panel->SetSizer(mysizer);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Write Outputs UNSIGNED8")), wxHORIZONTAL );
- mysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 30);
- outbt1 = new wxToggleButton(panel, wxID_ANY, wxT("1"));
- outbt2 = new wxToggleButton(panel, wxID_ANY, wxT("2"));
- outbt3 = new wxToggleButton(panel, wxID_ANY, wxT("3"));
- outbt4 = new wxToggleButton(panel, wxID_ANY, wxT("4"));
- outbt5 = new wxToggleButton(panel, wxID_ANY, wxT("5"));
- outbt6 = new wxToggleButton(panel, wxID_ANY, wxT("6"));
- outbt7 = new wxToggleButton(panel, wxID_ANY, wxT("7"));
- outbt8 = new wxToggleButton(panel, wxID_ANY, wxT("8"));
- myhsizer->Add(outbt1, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(outbt2, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(outbt3, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(outbt4, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(outbt5, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(outbt6, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(outbt7, wxEXPAND | wxALL, 0, 5);
- myhsizer->Add(outbt8, wxEXPAND | wxALL, 0, 5);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Analogue Output INTEGER16")), wxVERTICAL );
- mysizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 30);
- mysssizer = new wxBoxSizer( wxHORIZONTAL );
- myhsizer->Add(mysssizer, 0, wxEXPAND | wxALL, 0);
- outst1 = new wxStaticText(panel, wxID_ANY, wxT("label"), wxDefaultPosition, wxDefaultSize, 0, wxT("staticText"));
- outst2 = new wxStaticText(panel, wxID_ANY, wxT("label"), wxDefaultPosition, wxDefaultSize, 0, wxT("staticText"));
- outst3 = new wxStaticText(panel, wxID_ANY, wxT("label"), wxDefaultPosition, wxDefaultSize, 0, wxT("staticText"));
- outst4 = new wxStaticText(panel, wxID_ANY, wxT("label"), wxDefaultPosition, wxDefaultSize, 0, wxT("staticText"));
- mysssizer->Add(outst1, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
- mysssizer->Add(outst2, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
- mysssizer->Add(outst3, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
- mysssizer->Add(outst4, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
- mysssizer = new wxBoxSizer( wxHORIZONTAL );
- myhsizer->Add(mysssizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 0);
- outs1 = new wxGauge(panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("gauge"));
- outs2 = new wxGauge(panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("gauge"));
- outs3 = new wxGauge(panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("gauge"));
- outs4 = new wxGauge(panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator, wxT("gauge"));
- mysssizer->Add(outs1, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(outs2, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(outs3, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- mysssizer->Add(outs4, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- quit = new wxButton( panel, QUIT, _T("QUIT"));
- mysizer->Add(quit, 0, wxALL, 5);
-
- wxString choice[] =
- {
- _T("Analogue Out 1"), _T("Analogue Out 2"),
- _T("Analogue Out 3"), _T("Analogue Out 4"),
- _T("Bool Out 1"), _T("Bool Out 2"),
- _T("Bool Out 3"), _T("Bool Out 4"),
- _T("Bool Out 5"), _T("Bool Out 6"),
- _T("Bool Out 7"), _T("Bool Out 8"),
- _T("Analogue Input 1"), _T("Analogue Input 2"),
- _T("Analogue Input 3"), _T("Analogue Input 4"),
- _T("Analogue Input 5"), _T("Analogue Input 6"),
- _T("Analogue Input 7"), _T("Analogue Input 8"),
- _T("Bool Input 1"), _T("Bool Input 2"),
- _T("Bool Input 3"), _T("Bool Input 4"),
- _T("Bool Input 5"), _T("Bool Input 6"),
- _T("Bool Input 7"), _T("Bool Input 8"), };
- panel = new wxPanel(book);
- //book->AddPage(panel, wxT("Graphic"), true);
- mysizer = new wxBoxSizer( wxVERTICAL );
- panel->SetSizer(mysizer);
- panel->Hide();
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Graphic")), wxVERTICAL );
- mysizer->Add(myhsizer, 0, wxEXPAND | wxALL, 10);
- mygraphpan = new wxPanel(panel, wxID_ANY, wxDefaultPosition, wxSize(0, 350), wxTAB_TRAVERSAL, wxT("Graphic"));
- myhsizer->Add(mygraphpan, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- echelle = new wxSlider(panel, wxID_ANY, 44, 44, 1000, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL , wxDefaultValidator, wxT("slider"));
- myhsizer->Add(echelle, 0, wxEXPAND | wxALL, 0);
- mybsizer = new wxBoxSizer( wxHORIZONTAL );
- mysizer->Add(mybsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Select viewable Inputs")), wxHORIZONTAL );
- mybsizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 10);
- inlist = new wxListBox( panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, 28, choice, wxLB_EXTENDED | wxLB_HSCROLL);
- myhsizer->Add(inlist, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Legende")), wxHORIZONTAL );
- mybsizer->Add(myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 10);
- mylegpan = new wxPanel(panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxT("Legende"));
- myhsizer->Add(mylegpan, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
- quit = new wxButton( panel, QUIT, _T("QUIT"));
- mysizer->Add(quit, 0, wxALL, 5);
-
- panel = new wxPanel(book);
- book->InsertPage(0, panel, wxT("Control"), true);
- mysizer = new wxBoxSizer( wxVERTICAL );
- panel->SetSizer(mysizer);
- myhsizer = new wxBoxSizer( wxHORIZONTAL );
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Control your node")), wxHORIZONTAL );
- mysizer->Add(myhsizer, 0, wxALL, 5);
- start = new wxButton( panel, START, _T("START"));
- stop = new wxButton( panel, STOP, _T("STOP"));
- stop->Enable(false);
- myhsizer->Add(start, 0, wxRIGHT, 5);
- myhsizer->Add(stop, 0, wxLEFT, 5);
- myhsizer = new wxStaticBoxSizer( new wxStaticBox(panel, wxID_ANY, _T("Operation log")), wxHORIZONTAL );
- mysizer->Add(myhsizer, wxALL, wxEXPAND | wxALL, 5);
- textLog = new wxTextCtrl( panel, TEXTBOX1, _T(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE, wxDefaultValidator, wxTextCtrlNameStr);
- myhsizer->Add(textLog, wxALL, wxEXPAND | wxALL, 5);
- quit = new wxButton( panel, QUIT, _T("QUIT"));
- mysizer->Add(quit, 0, wxALL, 5);
-
- for (int i= 0; i < 28; i++)
- for (int j = 0; j < 44; j++)
- y[i][j] = 0;
- m_timer.Start(100);
- if(to_start)
- {
- Start();
- }
-}
-
-void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
-{
- Close(true);
-}
-
-void MyFrame::Start()
-{
- if (main_can(SlaveBoard, LibraryPath))
- {
- printf("[KO]\n");
- *textLog << wxT("----------------------------------------------------Initialization [KO]\n");
- }
- else
- {
- printf("[OK]\n");
- *textLog << wxT("----------------------------------------------------Initialization [OK]\n");
- stop->Enable(true);
- start->Enable(false);
- }
-}
-
-void MyFrame::OnStart(wxCommandEvent& WXUNUSED(event))
-{
- wxString s;
-
- node_id_ext = node_id->GetValue();
- s = busname->GetValue();
- strncpy(SlaveBoard.busname, s.mb_str(), MAXLENGTH_BUSNAME);
- *textLog << wxT("-- Bus name: ------> ") << s << wxT("\n");
- *textLog << wxT("-- Node ID: -------> ") << node_id->GetValue() << wxT("\n");
- Start();
-}
-
-
-void MyFrame::OnStop(wxCommandEvent& WXUNUSED(event))
-{
-
- *textLog << wxT("----------------------------------------------------Slave [STOPPED]") << wxT("\n");
- stop_slave();
- stop->Enable(false);
- start->Enable(true);
-}
-
-void MyFrame::OnLoad(wxCommandEvent& WXUNUSED(event))
-{
- wxFileDialog fd(this, wxT("Choose a can driver library"), wxT(""), wxT(""), LIB_EXTENT);
-
- if(fd.ShowModal() == wxID_OK)
+ SetBackgroundColour (wxSystemSettings::GetColour (wxSYS_COLOUR_BTNFACE));
+ helpMenu->Append (HELP_ABOUT, _T ("&About...\tF1"),
+ _T ("Show about dialog"));
+ fileMenu->Append (FILE_QUIT, _T ("E&xit\tAlt-X"), _T ("Quit this program"));
+ wxMenuBar *
+ menuBar = new wxMenuBar ();
+ menuBar->Append (fileMenu, _T ("&File"));
+ menuBar->Append (helpMenu, _T ("&Help"));
+ SetMenuBar (menuBar);
+ CreateStatusBar (2);
+ SetStatusText (_T ("Lolitech."), 0);
+ SetStatusText (_T ("Welcome."), 1);
+
+ book = new wxNotebook (this, BOOKCTRL);
+
+ panel = new wxPanel (book);
+ book->AddPage (panel, _T ("Configuration"), true);
+ mysizer = new wxBoxSizer (wxVERTICAL);
+ panel->SetSizer (mysizer);
+ wxString
+ choices[] = {
+ _T ("10K"), _T ("20K"), _T ("50K"), _T ("100K"),
+ _T ("125K"), _T ("250K"), _T ("500K"), _T ("1M")
+ };
+
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY, _T ("Bus driver")),
+ wxHORIZONTAL);
+ mysizer->Add (myhsizer, 0, wxEXPAND | wxALL, 5);
+ load = new wxButton (panel, LOAD, _T ("Load can driver"));
+ myhsizer->Add (load, 0, wxLEFT, 5);
+ drivername =
+ new wxTextCtrl (panel, wxID_ANY,
+ wxString ((const char *) LibraryPath, wxConvLocal));
+ myhsizer->Add (drivername, 1, wxEXPAND | wxALL, 5);
+ myentrysizer = new wxBoxSizer (wxHORIZONTAL);
+ mysizer->Add (myentrysizer, 0, wxEXPAND | wxALL, 5);
+ myhsizer =
+ new wxStaticBoxSizer (new wxStaticBox (panel, wxID_ANY, _T ("Bus name")),
+ wxHORIZONTAL);
+ myentrysizer->Add (myhsizer, 0, wxEXPAND | wxALL, 5);
+ busname =
+ new wxTextCtrl (panel, wxID_ANY,
+ wxString ((const char *) SlaveBoard.busname,
+ wxConvLocal));
+ myhsizer->Add (busname, 0, wxLEFT, 5);
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY,
+ _T ("Node ID (Hexa)")), wxHORIZONTAL);
+ myentrysizer->Add (myhsizer, 0, wxEXPAND | wxALL, 5);
+ node_id =
+ new wxSpinCtrl (panel, wxID_ANY, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, 1, 127, node_id_ext,
+ _T ("wxSpinCtrl"));
+ myhsizer->Add (node_id, 0, wxRIGHT, 5);
+ myhsizer =
+ new wxStaticBoxSizer (new wxStaticBox (panel, wxID_ANY, _T ("Baudrate")),
+ wxHORIZONTAL);
+ mysizer->Add (myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ freqlist =
+ new wxListBox (panel, FREQBOX, wxDefaultPosition, wxDefaultSize, 8,
+ choices, wxLB_SINGLE | wxLB_HSCROLL);
+ myhsizer->Add (freqlist, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ quit = new wxButton (panel, QUIT, _T ("QUIT"));
+ mysizer->Add (quit, 0, wxALL, 5);
+
+
+ panel = new wxPanel (book);
+ book->AddPage (panel, wxT ("Inputs"), true);
+ mysizer = new wxBoxSizer (wxVERTICAL);
+ panel->SetSizer (mysizer);
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY,
+ _T ("Read Inputs UNSIGNED8")),
+ wxHORIZONTAL);
+ mysizer->Add (myhsizer, 0, wxEXPAND | wxALL, 30);
+ inbt1 = new wxToggleButton (panel, INBT1, wxT ("1"));
+ inbt2 = new wxToggleButton (panel, INBT2, wxT ("2"));
+ inbt3 = new wxToggleButton (panel, INBT3, wxT ("3"));
+ inbt4 = new wxToggleButton (panel, INBT4, wxT ("4"));
+ inbt5 = new wxToggleButton (panel, INBT5, wxT ("5"));
+ inbt6 = new wxToggleButton (panel, INBT6, wxT ("6"));
+ inbt7 = new wxToggleButton (panel, INBT7, wxT ("7"));
+ inbt8 = new wxToggleButton (panel, INBT8, wxT ("8"));
+ myhsizer->Add (inbt1, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (inbt2, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (inbt3, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (inbt4, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (inbt5, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (inbt6, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (inbt7, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (inbt8, wxEXPAND | wxALL, 0, 5);
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY,
+ _T ("Analogue Inputs INTEGER16")),
+ wxVERTICAL);
+ mysizer->Add (myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 30);
+ mysssizer = new wxBoxSizer (wxHORIZONTAL);
+ myhsizer->Add (mysssizer, 0, wxEXPAND | wxALL, 0);
+ inst1 =
+ new wxSpinCtrl (panel, INST1, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0,
+ _T ("0"));
+ inst2 =
+ new wxSpinCtrl (panel, INST2, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0,
+ _T ("0"));
+ inst3 =
+ new wxSpinCtrl (panel, INST3, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0,
+ _T ("0"));
+ inst4 =
+ new wxSpinCtrl (panel, INST4, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0,
+ _T ("0"));
+ inst5 =
+ new wxSpinCtrl (panel, INST5, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0,
+ _T ("0"));
+ inst6 =
+ new wxSpinCtrl (panel, INST6, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0,
+ _T ("0"));
+ inst7 =
+ new wxSpinCtrl (panel, INST7, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0,
+ _T ("0"));
+ inst8 =
+ new wxSpinCtrl (panel, INST8, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, wxSP_ARROW_KEYS, -32768, 32767, 0,
+ _T ("0"));
+ mysssizer->Add (inst1, wxALL, 0, 5);
+ mysssizer->Add (inst2, wxALL, 0, 5);
+ mysssizer->Add (inst3, wxALL, 0, 5);
+ mysssizer->Add (inst4, wxALL, 0, 5);
+ mysssizer->Add (inst5, wxALL, 0, 5);
+ mysssizer->Add (inst6, wxALL, 0, 5);
+ mysssizer->Add (inst7, wxALL, 0, 5);
+ mysssizer->Add (inst8, wxALL, 0, 5);
+ mysssizer = new wxBoxSizer (wxHORIZONTAL);
+ myhsizer->Add (mysssizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 0);
+ ins1 =
+ new wxSlider (panel, INS1, 0, -32768, 32767, wxDefaultPosition,
+ wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE,
+ wxDefaultValidator, wxT ("slider"));
+ ins2 =
+ new wxSlider (panel, INS2, 0, -32768, 32767, wxDefaultPosition,
+ wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE,
+ wxDefaultValidator, wxT ("slider"));
+ ins3 =
+ new wxSlider (panel, INS3, 0, -32768, 32767, wxDefaultPosition,
+ wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE,
+ wxDefaultValidator, wxT ("slider"));
+ ins4 =
+ new wxSlider (panel, INS4, 0, -32768, 32767, wxDefaultPosition,
+ wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE,
+ wxDefaultValidator, wxT ("slider"));
+ ins5 =
+ new wxSlider (panel, INS5, 0, -32768, 32767, wxDefaultPosition,
+ wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE,
+ wxDefaultValidator, wxT ("slider"));
+ ins6 =
+ new wxSlider (panel, INS6, 0, -32768, 32767, wxDefaultPosition,
+ wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE,
+ wxDefaultValidator, wxT ("slider"));
+ ins7 =
+ new wxSlider (panel, INS7, 0, -32768, 32767, wxDefaultPosition,
+ wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE,
+ wxDefaultValidator, wxT ("slider"));
+ ins8 =
+ new wxSlider (panel, INS8, 0, -32768, 32767, wxDefaultPosition,
+ wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE,
+ wxDefaultValidator, wxT ("slider"));
+ mysssizer->Add (ins1, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (ins2, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (ins3, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (ins4, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (ins5, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (ins6, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (ins7, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (ins8, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ quit = new wxButton (panel, QUIT, _T ("QUIT"));
+ mysizer->Add (quit, 0, wxALL, 5);
+
+ panel = new wxPanel (book);
+ book->AddPage (panel, wxT ("Outputs"), true);
+ mysizer = new wxBoxSizer (wxVERTICAL);
+ panel->SetSizer (mysizer);
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY,
+ _T ("Write Outputs UNSIGNED8")),
+ wxHORIZONTAL);
+ mysizer->Add (myhsizer, 0, wxEXPAND | wxALL, 30);
+ outbt1 = new wxToggleButton (panel, wxID_ANY, wxT ("1"));
+ outbt2 = new wxToggleButton (panel, wxID_ANY, wxT ("2"));
+ outbt3 = new wxToggleButton (panel, wxID_ANY, wxT ("3"));
+ outbt4 = new wxToggleButton (panel, wxID_ANY, wxT ("4"));
+ outbt5 = new wxToggleButton (panel, wxID_ANY, wxT ("5"));
+ outbt6 = new wxToggleButton (panel, wxID_ANY, wxT ("6"));
+ outbt7 = new wxToggleButton (panel, wxID_ANY, wxT ("7"));
+ outbt8 = new wxToggleButton (panel, wxID_ANY, wxT ("8"));
+ myhsizer->Add (outbt1, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (outbt2, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (outbt3, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (outbt4, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (outbt5, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (outbt6, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (outbt7, wxEXPAND | wxALL, 0, 5);
+ myhsizer->Add (outbt8, wxEXPAND | wxALL, 0, 5);
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY,
+ _T ("Analogue Output INTEGER16")),
+ wxVERTICAL);
+ mysizer->Add (myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 30);
+ mysssizer = new wxBoxSizer (wxHORIZONTAL);
+ myhsizer->Add (mysssizer, 0, wxEXPAND | wxALL, 0);
+ outst1 =
+ new wxStaticText (panel, wxID_ANY, wxT ("label"), wxDefaultPosition,
+ wxDefaultSize, 0, wxT ("staticText"));
+ outst2 =
+ new wxStaticText (panel, wxID_ANY, wxT ("label"), wxDefaultPosition,
+ wxDefaultSize, 0, wxT ("staticText"));
+ outst3 =
+ new wxStaticText (panel, wxID_ANY, wxT ("label"), wxDefaultPosition,
+ wxDefaultSize, 0, wxT ("staticText"));
+ outst4 =
+ new wxStaticText (panel, wxID_ANY, wxT ("label"), wxDefaultPosition,
+ wxDefaultSize, 0, wxT ("staticText"));
+ mysssizer->Add (outst1, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ mysssizer->Add (outst2, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ mysssizer->Add (outst3, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ mysssizer->Add (outst4, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ mysssizer = new wxBoxSizer (wxHORIZONTAL);
+ myhsizer->Add (mysssizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 0);
+ outs1 =
+ new wxGauge (panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize,
+ wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator,
+ wxT ("gauge"));
+ outs2 =
+ new wxGauge (panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize,
+ wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator,
+ wxT ("gauge"));
+ outs3 =
+ new wxGauge (panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize,
+ wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator,
+ wxT ("gauge"));
+ outs4 =
+ new wxGauge (panel, wxID_ANY, 65535, wxDefaultPosition, wxDefaultSize,
+ wxSL_VERTICAL | wxSL_INVERSE, wxDefaultValidator,
+ wxT ("gauge"));
+ mysssizer->Add (outs1, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (outs2, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (outs3, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ mysssizer->Add (outs4, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ quit = new wxButton (panel, QUIT, _T ("QUIT"));
+ mysizer->Add (quit, 0, wxALL, 5);
+
+ wxString
+ choice[] = {
+ _T ("Analogue Out 1"), _T ("Analogue Out 2"),
+ _T ("Analogue Out 3"), _T ("Analogue Out 4"),
+ _T ("Bool Out 1"), _T ("Bool Out 2"),
+ _T ("Bool Out 3"), _T ("Bool Out 4"),
+ _T ("Bool Out 5"), _T ("Bool Out 6"),
+ _T ("Bool Out 7"), _T ("Bool Out 8"),
+ _T ("Analogue Input 1"), _T ("Analogue Input 2"),
+ _T ("Analogue Input 3"), _T ("Analogue Input 4"),
+ _T ("Analogue Input 5"), _T ("Analogue Input 6"),
+ _T ("Analogue Input 7"), _T ("Analogue Input 8"),
+ _T ("Bool Input 1"), _T ("Bool Input 2"),
+ _T ("Bool Input 3"), _T ("Bool Input 4"),
+ _T ("Bool Input 5"), _T ("Bool Input 6"),
+ _T ("Bool Input 7"), _T ("Bool Input 8"),
+ };
+ panel = new wxPanel (book);
+ book->AddPage(panel, wxT("Graphic"), true);
+ mysizer = new wxBoxSizer (wxVERTICAL);
+ panel->SetSizer (mysizer);
+ //panel->Hide ();
+ myhsizer =
+ new wxStaticBoxSizer (new wxStaticBox (panel, wxID_ANY, _T ("Graphic")),
+ wxVERTICAL);
+ mysizer->Add (myhsizer, 0, wxEXPAND | wxALL, 10);
+ mygraphpan =
+ new wxPanel (panel, wxID_ANY, wxDefaultPosition, wxSize (0, 350),
+ wxTAB_TRAVERSAL, wxT ("Graphic"));
+ myhsizer->Add (mygraphpan, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ echelle =
+ new wxSlider (panel, wxID_ANY, 44, 44, 1000, wxDefaultPosition,
+ wxDefaultSize, wxSL_HORIZONTAL, wxDefaultValidator,
+ wxT ("slider"));
+ myhsizer->Add (echelle, 0, wxEXPAND | wxALL, 0);
+ mybsizer = new wxBoxSizer (wxHORIZONTAL);
+ mysizer->Add (mybsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY,
+ _T ("Select viewable Inputs")),
+ wxHORIZONTAL);
+ mybsizer->Add (myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 10);
+ inlist =
+ new wxListBox (panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, 28,
+ choice, wxLB_EXTENDED | wxLB_HSCROLL);
+ myhsizer->Add (inlist, wxEXPAND | wxALL, wxEXPAND | wxALL, 5);
+ myhsizer =
+ new wxStaticBoxSizer (new wxStaticBox (panel, wxID_ANY, _T ("Legende")),
+ wxHORIZONTAL);
+ mybsizer->Add (myhsizer, wxEXPAND | wxALL, wxEXPAND | wxALL, 10);
+ mylegpan =
+ new wxPanel (panel, wxID_ANY, wxDefaultPosition, wxDefaultSize,
+ wxTAB_TRAVERSAL, wxT ("Legende"));
+ myhsizer->Add (mylegpan, wxEXPAND | wxALL, wxEXPAND | wxALL, 15);
+ quit = new wxButton (panel, QUIT, _T ("QUIT"));
+ mysizer->Add (quit, 0, wxALL, 5);
+
+ panel = new wxPanel (book);
+ book->InsertPage (0, panel, wxT ("Control"), true);
+ mysizer = new wxBoxSizer (wxVERTICAL);
+ panel->SetSizer (mysizer);
+ myhsizer = new wxBoxSizer (wxHORIZONTAL);
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY,
+ _T ("Control your node")),
+ wxHORIZONTAL);
+ mysizer->Add (myhsizer, 0, wxALL, 5);
+ start = new wxButton (panel, START, _T ("START"));
+ stop = new wxButton (panel, STOP, _T ("STOP"));
+ stop->Enable (false);
+ myhsizer->Add (start, 0, wxRIGHT, 5);
+ myhsizer->Add (stop, 0, wxLEFT, 5);
+ myhsizer =
+ new wxStaticBoxSizer (new
+ wxStaticBox (panel, wxID_ANY, _T ("Operation log")),
+ wxHORIZONTAL);
+ mysizer->Add (myhsizer, wxALL, wxEXPAND | wxALL, 5);
+ textLog =
+ new wxTextCtrl (panel, TEXTBOX1, _T (""), wxDefaultPosition,
+ wxDefaultSize, wxTE_MULTILINE, wxDefaultValidator,
+ wxTextCtrlNameStr);
+ myhsizer->Add (textLog, wxALL, wxEXPAND | wxALL, 5);
+ quit = new wxButton (panel, QUIT, _T ("QUIT"));
+ mysizer->Add (quit, 0, wxALL, 5);
+
+ for (int i = 0; i < 28; i++)
+ for (int j = 0; j < 44; j++)
+ y[i][j] = 0;
+ m_timer.Start (100);
+ if (to_start)
{
- drivername->Clear();
- drivername->AppendText(fd.GetPath());
- *textLog << wxT("LibraryPath: ") << fd.GetPath() << wxT("\n");
- strncpy(LibraryPath, fd.GetPath().mb_str(), MAXLENGTH_LIBPATH);
- printf("path=%s",LibraryPath);
+ Start ();
}
}
-void MyFrame::OnInbt1(wxCommandEvent& WXUNUSED(event))
-{
- Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x1;
-}
-void MyFrame::OnInbt2(wxCommandEvent& WXUNUSED(event))
-{
- Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x2;
-}
-void MyFrame::OnInbt3(wxCommandEvent& WXUNUSED(event))
-{
- Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x4;
-}
-void MyFrame::OnInbt4(wxCommandEvent& WXUNUSED(event))
-{
- Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x8;
-}
-void MyFrame::OnInbt5(wxCommandEvent& WXUNUSED(event))
-{
- Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x10;
-}
-void MyFrame::OnInbt6(wxCommandEvent& WXUNUSED(event))
-{
- Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x20;
-}
-void MyFrame::OnInbt7(wxCommandEvent& WXUNUSED(event))
-{
- Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x40;
-}
-void MyFrame::OnInbt8(wxCommandEvent& WXUNUSED(event))
-{
- Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x80;
-}
-
-
-
-void MyFrame::OnIns1(wxScrollEvent &event)
-{
- Read_Analogue_Input_16_Bit[0] = ins1->GetValue();
- inst1->SetValue(ins1->GetValue());
-}
-void MyFrame::OnIns2(wxScrollEvent &event)
-{
- Read_Analogue_Input_16_Bit[1] = ins2->GetValue();
- inst2->SetValue(ins2->GetValue());
-}
-void MyFrame::OnIns3(wxScrollEvent &event)
-{
- Read_Analogue_Input_16_Bit[2] = ins3->GetValue();
- inst3->SetValue(ins3->GetValue());
-}
-void MyFrame::OnIns4(wxScrollEvent &event)
-{
- Read_Analogue_Input_16_Bit[3] = ins4->GetValue();
- inst4->SetValue(ins4->GetValue());
-}
-void MyFrame::OnIns5(wxScrollEvent &event)
-{
- Read_Analogue_Input_16_Bit[4] = ins5->GetValue();
- inst5->SetValue(ins5->GetValue());
-}
-void MyFrame::OnIns6(wxScrollEvent &event)
-{
- Read_Analogue_Input_16_Bit[5] = ins6->GetValue();
- inst6->SetValue(ins6->GetValue());
-}
-void MyFrame::OnIns7(wxScrollEvent &event)
-{
- Read_Analogue_Input_16_Bit[6] = ins7->GetValue();
- inst7->SetValue(ins7->GetValue());
-}
-void MyFrame::OnIns8(wxScrollEvent &event)
-{
- Read_Analogue_Input_16_Bit[7] = ins8->GetValue();
- inst8->SetValue(ins8->GetValue());
-}
-
-
-void MyFrame::OnInst1 ( wxSpinEvent &ev )
-{
- Read_Analogue_Input_16_Bit[0] = inst1->GetValue();
- ins1->SetValue(inst1->GetValue());
-}
-void MyFrame::OnInst2 ( wxSpinEvent &ev )
-{
- Read_Analogue_Input_16_Bit[1] = inst2->GetValue();
- ins2->SetValue(inst2->GetValue());
-}
-void MyFrame::OnInst3 ( wxSpinEvent &ev )
-{
- Read_Analogue_Input_16_Bit[2] = inst3->GetValue();
- ins3->SetValue(inst3->GetValue());
-}
-void MyFrame::OnInst4 ( wxSpinEvent &ev )
-{
- Read_Analogue_Input_16_Bit[3] = inst4->GetValue();
- ins4->SetValue(inst4->GetValue());
-}
-void MyFrame::OnInst5 ( wxSpinEvent &ev )
-{
- Read_Analogue_Input_16_Bit[4] = inst5->GetValue();
- ins5->SetValue(inst5->GetValue());
-}
-void MyFrame::OnInst6 ( wxSpinEvent &ev )
-{
- Read_Analogue_Input_16_Bit[5] = inst6->GetValue();
- ins6->SetValue(inst6->GetValue());
-}
-void MyFrame::OnInst7 ( wxSpinEvent &ev )
-{
- Read_Analogue_Input_16_Bit[6] = inst7->GetValue();
- ins7->SetValue(inst7->GetValue());
-}
-void MyFrame::OnInst8 ( wxSpinEvent &ev )
-{
- Read_Analogue_Input_16_Bit[7] = inst8->GetValue();
- ins8->SetValue(inst8->GetValue());
-}
-
-
-void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
-{
- wxString msg;
- msg.Printf( _T("About.\n\n")
- _T("Input-Output simulation by GRANDEMANGE Nicolas for CanFestival!!"));
-
- wxMessageBox(msg, _T("About !!!"), wxOK | wxICON_INFORMATION, this);
-}
-
-
-void MyFrame::OnFreqBoxClick( wxCommandEvent &event )
-{
- wxString wxstr;
-
- wxstr = event.GetString();
- strncpy(SlaveBoard.baudrate, wxstr.mb_str(),MAXLENGTH_BAUDRATE);
- *textLog << wxT("Baudrate:") << event.GetString() << wxT("\n");
-}
-
-static int is_set(int i,
- wxListBox *inlist,
- wxArrayInt in)
-{
- inlist->GetSelections(in);
- for (int j = 0; j < in.GetCount(); j++)
- {
- if (i == (in[j] + 1))
- {
- return (i);
- }
- }
- return (0);
-}
-
-static int get_bit(UNS8 input, int bit)
-{
- return input & (((UNS8)1) << bit-1) ? 1 : 0;
-}
-
-void MyFrame::Paint()
-{
- double vmax = old_max;
- double vmin = old_min;
- double vdelta = vmax - vmin;
- double vech = ((float)vdelta) / 10.0;
-
- double hmax = frame->echelle->GetValue();
- double hech = hdelta / 11;
-
- double d = 300 / vdelta;
- double g = 0;
- double top = 5;
- double left = 50;
-
- double tmpi = 0;
- wxString tmps;
- double p = 0;
- double q = 0;
- int i = 0;
- int j = 0;
- wxColor col[8] = {wxColor(wxT("BLUE")), wxColor(wxT("RED")), wxColor(wxT("GREEN")), wxColor(wxT("GREY")),
- wxColor(wxT("ORANGE")), wxColor(wxT("YELLOW")), wxColor(wxT("PINK")), wxColor(wxT("BLACK"))};
- hdelta = hmax - 0;
- g = (Gtime / hdelta) * 44.00;
-
- wxClientDC MonDc(mygraphpan);
- MonDc.Clear();
-
- MonDc.SetPen(wxPen(wxColour(200,200,200), 5, wxSOLID));
- MonDc.DrawRectangle((int) left, (int)top, 660, 300);
-
- MonDc.SetPen(wxPen(wxColor(150,200,150), 2, wxSOLID));
- MonDc.SetFont(wxFont(9, wxSWISS , wxNORMAL, wxNORMAL, false, wxT("Arial Black")));
- for (i=0; i < 11; i++)
- {
- tmpi = (vmin + (vech * i));
- tmps.Printf(wxT("%d"), (int)tmpi);
- MonDc.DrawRotatedText(tmps, 0, (int)(293 - (30 * i) + top), 0);
- }
- for (i=0; i < 12; i++)
- {
- tmpi = (hech * i * 100);
- if (tmpi < 1000)
- tmps.Printf(wxT("%ims"), (int)tmpi);
- if (tmpi > 1000)
- tmps.Printf(wxT("%is"), (int)(tmpi / 1000));
- MonDc.DrawRotatedText(tmps, (int)((60 * i) + left) - 10, (int)(317 + top), 0);
- }
- for (j=1; j < 10; j++)
- MonDc.DrawLine((int)left, (int)(300 - (30 * j) + top), (int)(left + 660), (int)(300 - (30 * j) + top));
- MonDc.SetPen(wxPen(wxColor(150,200,150), 2, wxSOLID));
- for (j=1; j < 22; j++)
- MonDc.DrawLine((int)(30 * j + left), (int)(300 + top), (int)(30 * j + left), (int)(top));
- MonDc.SetPen(wxPen(wxColor(150,170,150), 1, wxSOLID));
- for (j=1; j < 22; j++)
- MonDc.DrawLine((int)(30 * j + left - 15), (int)(300 + top), (int)(30 * j + left - 15), (int)(top));
- MonDc.DrawLine((int)(30 * 22 + left - 15), (int)(300 + top), (int)(30 * 22 + left - 15), (int)(top));
-
- double m = (- vmin) * d;
- MonDc.SetPen(wxPen(wxColor(170,170,150), 3, wxSOLID));
- MonDc.DrawLine((int)(left), (int)(300 + top - m), (int)(left + 660), (int)(300 + top - m));
-
- wxClientDC MaLeg(mylegpan);
- MaLeg.Clear();
-
- MaLeg.SetPen(wxPen(wxColour(150,200,100), 2, wxSOLID));
- MaLeg.SetFont(wxFont(7, wxSWISS , wxNORMAL, wxNORMAL, false, wxT("Arial Black")));
- for (int k=1, tmpi = 0; k < 30; k++)
+void
+MyFrame::OnQuit (wxCommandEvent & WXUNUSED (event))
+{
+ Close (true);
+}
+
+void
+MyFrame::Start ()
+{
+ if (main_can (SlaveBoard, LibraryPath))
{
- if ((tmpi < 8) && is_set(k, inlist, in))
- {
- if (k <= 4)
- tmps.Printf(wxT("Analogue Output %d"), k);
- if ((k > 4) && (k <= 12))
- tmps.Printf(wxT("Bool Output %d"), k - 4);
- if ((k > 12) && (k <= 20))
- tmps.Printf(wxT("Analogue Input %d"), k - 12);
- if ((k > 20) && (k <= 28))
- tmps.Printf(wxT("Bool Input %d"), k - 20);
-
- MaLeg.DrawRotatedText(tmps, 0, 10 * tmpi , 0);
- MaLeg.SetPen(wxPen(col[tmpi], 4, wxSOLID));
- MaLeg.DrawLine(100, 10 * tmpi + 6, 115, 10 * tmpi + 6);
- //////////////////////////////////////////DAW////////////////////////////////////////
- MonDc.SetPen(wxPen(col[tmpi], 4, wxSOLID));
- if (k <= 4)
- y[k - 1][(int)g] = Write_Analogue_Output_16_Bit[k - 1];
- if ((k > 4) && (k <= 12))
- y[k - 1][(int)g] = get_bit(Write_Outputs_8_Bit[0] ,k - 4);
- if ((k > 12) && (k <= 20))
- y[k - 1][(int)g] = Read_Analogue_Input_16_Bit[k - 1 -12];
- if ((k > 20) && (k <= 28))
- y[k - 1][(int)g] = get_bit(Read_Inputs_8_Bit[0] ,k - 20);
-
- if (y[k - 1][(int)g] > old_max)
- old_max = y[k - 1][(int)g];
- if (y[k - 1][(int)g] < old_min)
- old_min = y[k - 1][(int)g];
- for (j=1; j < (g + 1) ; j++)
- {
- p = (y[k - 1][j - 1] - vmin) * d;
- q = (y[k - 1][j ] - vmin) * d;
- MonDc.DrawLine((int)(15 * (j - 1) + left), (int)(300 + top - p), (int)(15 * j + left), (int)(300 + top - q));
- }
- /////////////////////////////////////////////////////////////////////////////////////
- tmpi++;
- }
+ printf ("[KO]\n");
+ *textLog <<
+ wxT
+ ("----------------------------------------------------Initialization [KO]\n");
}
-}
-
-void actu_output(void)
-{
- wxString tmp;
-
- frame->outbt1->SetValue(get_bit(Write_Outputs_8_Bit[0], 1));
- frame->outbt2->SetValue(get_bit(Write_Outputs_8_Bit[0], 2));
- frame->outbt3->SetValue(get_bit(Write_Outputs_8_Bit[0], 3));
- frame->outbt4->SetValue(get_bit(Write_Outputs_8_Bit[0], 4));
- frame->outbt5->SetValue(get_bit(Write_Outputs_8_Bit[0], 5));
- frame->outbt6->SetValue(get_bit(Write_Outputs_8_Bit[0], 6));
- frame->outbt7->SetValue(get_bit(Write_Outputs_8_Bit[0], 7));
- frame->outbt8->SetValue(get_bit(Write_Outputs_8_Bit[0], 8));
-
- frame->outs1->SetValue(Write_Analogue_Output_16_Bit[0] + 32768);
- frame->outs2->SetValue(Write_Analogue_Output_16_Bit[1] + 32768);
- frame->outs3->SetValue(Write_Analogue_Output_16_Bit[2] + 32768);
- frame->outs4->SetValue(Write_Analogue_Output_16_Bit[3] + 32768);
- tmp.Printf(wxT(" %i"), Write_Analogue_Output_16_Bit[0]);
- frame->outst1->SetLabel(tmp);
- tmp.Printf(wxT(" %i"), Write_Analogue_Output_16_Bit[1]);
- frame->outst2->SetLabel(tmp);
- tmp.Printf(wxT(" %i"), Write_Analogue_Output_16_Bit[2]);
- frame->outst3->SetLabel(tmp);
- tmp.Printf(wxT(" %i"), Write_Analogue_Output_16_Bit[3]);
- frame->outst4->SetLabel(tmp);
-}
-
-void actu(void)
-{
- actu_output();
-
- Gtime++;
- if (Gtime > hdelta)
+ else
+ {
+ printf ("[OK]\n");
+ *textLog <<
+ wxT
+ ("----------------------------------------------------Initialization [OK]\n");
+ stop->Enable (true);
+ start->Enable (false);
+ }
+}
+
+void
+MyFrame::OnStart (wxCommandEvent & WXUNUSED (event))
+{
+ wxString s;
+
+ node_id_ext = node_id->GetValue ();
+ s = busname->GetValue ();
+ strncpy (SlaveBoard.busname, s.mb_str (), MAXLENGTH_BUSNAME);
+ *textLog << wxT ("-- Bus name: ------> ") << s << wxT ("\n");
+ *textLog << wxT ("-- Node ID: -------> ") << node_id->
+ GetValue () << wxT ("\n");
+ Start ();
+}
+
+
+void
+MyFrame::OnStop (wxCommandEvent & WXUNUSED (event))
+{
+
+ *textLog <<
+ wxT
+ ("----------------------------------------------------Slave [STOPPED]") <<
+ wxT ("\n");
+ stop_slave ();
+ stop->Enable (false);
+ start->Enable (true);
+}
+
+void
+MyFrame::OnLoad (wxCommandEvent & WXUNUSED (event))
+{
+ wxFileDialog fd (this, wxT ("Choose a can driver library"), wxT (""),
+ wxT (""), LIB_EXTENT);
+
+ if (fd.ShowModal () == wxID_OK)
+ {
+ drivername->Clear ();
+ drivername->AppendText (fd.GetPath ());
+ *textLog << wxT ("LibraryPath: ") << fd.GetPath () << wxT ("\n");
+ strncpy (LibraryPath, fd.GetPath ().mb_str (), MAXLENGTH_LIBPATH);
+ printf ("path=%s", LibraryPath);
+ }
+}
+
+void
+MyFrame::OnInbt1 (wxCommandEvent & WXUNUSED (event))
+{
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x1;
+}
+
+void
+MyFrame::OnInbt2 (wxCommandEvent & WXUNUSED (event))
+{
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x2;
+}
+
+void
+MyFrame::OnInbt3 (wxCommandEvent & WXUNUSED (event))
+{
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x4;
+}
+
+void
+MyFrame::OnInbt4 (wxCommandEvent & WXUNUSED (event))
+{
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x8;
+}
+
+void
+MyFrame::OnInbt5 (wxCommandEvent & WXUNUSED (event))
+{
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x10;
+}
+
+void
+MyFrame::OnInbt6 (wxCommandEvent & WXUNUSED (event))
+{
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x20;
+}
+
+void
+MyFrame::OnInbt7 (wxCommandEvent & WXUNUSED (event))
+{
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x40;
+}
+
+void
+MyFrame::OnInbt8 (wxCommandEvent & WXUNUSED (event))
+{
+ Read_Inputs_8_Bit[0] = Read_Inputs_8_Bit[0] ^ 0x80;
+}
+
+
+
+void
+MyFrame::OnIns1 (wxScrollEvent & event)
+{
+ Read_Analogue_Input_16_Bit[0] = ins1->GetValue ();
+ inst1->SetValue (ins1->GetValue ());
+}
+
+void
+MyFrame::OnIns2 (wxScrollEvent & event)
+{
+ Read_Analogue_Input_16_Bit[1] = ins2->GetValue ();
+ inst2->SetValue (ins2->GetValue ());
+}
+
+void
+MyFrame::OnIns3 (wxScrollEvent & event)
+{
+ Read_Analogue_Input_16_Bit[2] = ins3->GetValue ();
+ inst3->SetValue (ins3->GetValue ());
+}
+
+void
+MyFrame::OnIns4 (wxScrollEvent & event)
+{
+ Read_Analogue_Input_16_Bit[3] = ins4->GetValue ();
+ inst4->SetValue (ins4->GetValue ());
+}
+
+void
+MyFrame::OnIns5 (wxScrollEvent & event)
+{
+ Read_Analogue_Input_16_Bit[4] = ins5->GetValue ();
+ inst5->SetValue (ins5->GetValue ());
+}
+
+void
+MyFrame::OnIns6 (wxScrollEvent & event)
+{
+ Read_Analogue_Input_16_Bit[5] = ins6->GetValue ();
+ inst6->SetValue (ins6->GetValue ());
+}
+
+void
+MyFrame::OnIns7 (wxScrollEvent & event)
+{
+ Read_Analogue_Input_16_Bit[6] = ins7->GetValue ();
+ inst7->SetValue (ins7->GetValue ());
+}
+
+void
+MyFrame::OnIns8 (wxScrollEvent & event)
+{
+ Read_Analogue_Input_16_Bit[7] = ins8->GetValue ();
+ inst8->SetValue (ins8->GetValue ());
+}
+
+
+void
+MyFrame::OnInst1 (wxSpinEvent & ev)
+{
+ Read_Analogue_Input_16_Bit[0] = inst1->GetValue ();
+ ins1->SetValue (inst1->GetValue ());
+}
+
+void
+MyFrame::OnInst2 (wxSpinEvent & ev)
+{
+ Read_Analogue_Input_16_Bit[1] = inst2->GetValue ();
+ ins2->SetValue (inst2->GetValue ());
+}
+
+void
+MyFrame::OnInst3 (wxSpinEvent & ev)
+{
+ Read_Analogue_Input_16_Bit[2] = inst3->GetValue ();
+ ins3->SetValue (inst3->GetValue ());
+}
+
+void
+MyFrame::OnInst4 (wxSpinEvent & ev)
+{
+ Read_Analogue_Input_16_Bit[3] = inst4->GetValue ();
+ ins4->SetValue (inst4->GetValue ());
+}
+
+void
+MyFrame::OnInst5 (wxSpinEvent & ev)
+{
+ Read_Analogue_Input_16_Bit[4] = inst5->GetValue ();
+ ins5->SetValue (inst5->GetValue ());
+}
+
+void
+MyFrame::OnInst6 (wxSpinEvent & ev)
+{
+ Read_Analogue_Input_16_Bit[5] = inst6->GetValue ();
+ ins6->SetValue (inst6->GetValue ());
+}
+
+void
+MyFrame::OnInst7 (wxSpinEvent & ev)
+{
+ Read_Analogue_Input_16_Bit[6] = inst7->GetValue ();
+ ins7->SetValue (inst7->GetValue ());
+}
+
+void
+MyFrame::OnInst8 (wxSpinEvent & ev)
+{
+ Read_Analogue_Input_16_Bit[7] = inst8->GetValue ();
+ ins8->SetValue (inst8->GetValue ());
+}
+
+
+void
+MyFrame::OnAbout (wxCommandEvent & WXUNUSED (event))
+{
+ wxString msg;
+ msg.Printf (_T ("About.\n\n")
+ _T
+ ("Input-Output simulation by GRANDEMANGE Nicolas for CanFestival!!"));
+
+ wxMessageBox (msg, _T ("About !!!"), wxOK | wxICON_INFORMATION, this);
+}
+
+
+void
+MyFrame::OnFreqBoxClick (wxCommandEvent & event)
+{
+ wxString wxstr;
+
+ wxstr = event.GetString ();
+ strncpy (SlaveBoard.baudrate, wxstr.mb_str (), MAXLENGTH_BAUDRATE);
+ *textLog << wxT ("Baudrate:") << event.GetString () << wxT ("\n");
+}
+
+static int
+is_set (int i, wxListBox * inlist, wxArrayInt in)
+{
+ inlist->GetSelections (in);
+ for (int j = 0; j < in.GetCount (); j++)
+ {
+ if (i == (in[j] + 1))
{
- old_max = 5;
- old_min = -5;
- Gtime = 0;
+ return (i);
}
- frame->Paint();
-}
-
-void MyFrame::OnTimer(wxTimerEvent& event)
-{
- actu();// do whatever you want to do every second here
-}
-
-void MyFrame::OnPaint( wxPaintEvent &event )
-{
- //Paint();
-}
+ }
+ return (0);
+}
+
+static int
+get_bit (UNS8 input, int bit)
+{
+ return input & (((UNS8) 1) << bit - 1) ? 1 : 0;
+}
+
+void
+MyFrame::Paint ()
+{
+ double vmax = old_max;
+ double vmin = old_min;
+ double vdelta = vmax - vmin;
+ double vech = ((float) vdelta) / 10.0;
+
+ double hmax = frame->echelle->GetValue ();
+ double hech = hdelta / 11;
+
+ double d = 300 / vdelta;
+ double g = 0;
+ double top = 5;
+ double left = 50;
+
+ double tmpi = 0;
+ wxString tmps;
+ double p = 0;
+ double q = 0;
+ int i = 0;
+ int j = 0;
+ wxColor col[8] =
+ { wxColor (wxT ("BLUE")), wxColor (wxT ("RED")), wxColor (wxT ("GREEN")),
+wxColor (wxT ("GREY")),
+ wxColor (wxT ("ORANGE")), wxColor (wxT ("YELLOW")),
+ wxColor (wxT ("PINK")), wxColor (wxT ("BLACK"))
+ };
+ hdelta = hmax - 0;
+ g = (Gtime / hdelta) * 44.00;
+
+ wxClientDC MonDc (mygraphpan);
+ MonDc.Clear ();
+
+ MonDc.SetPen (wxPen (wxColour (200, 200, 200), 5, wxSOLID));
+ MonDc.DrawRectangle ((int) left, (int) top, 660, 300);
+
+ MonDc.SetPen (wxPen (wxColor (150, 200, 150), 2, wxSOLID));
+ MonDc.
+ SetFont (wxFont
+ (9, wxSWISS, wxNORMAL, wxNORMAL, false, wxT ("Arial Black")));
+ for (i = 0; i < 11; i++)
+ {
+ tmpi = (vmin + (vech * i));
+ tmps.Printf (wxT ("%d"), (int) tmpi);
+ MonDc.DrawRotatedText (tmps, 0, (int) (293 - (30 * i) + top), 0);
+ }
+ for (i = 0; i < 12; i++)
+ {
+ tmpi = (hech * i * 100);
+ if (tmpi < 1000)
+ tmps.Printf (wxT ("%ims"), (int) tmpi);
+ if (tmpi > 1000)
+ tmps.Printf (wxT ("%is"), (int) (tmpi / 1000));
+ MonDc.DrawRotatedText (tmps, (int) ((60 * i) + left) - 10,
+ (int) (317 + top), 0);
+ }
+ for (j = 1; j < 10; j++)
+ MonDc.DrawLine ((int) left, (int) (300 - (30 * j) + top),
+ (int) (left + 660), (int) (300 - (30 * j) + top));
+ MonDc.SetPen (wxPen (wxColor (150, 200, 150), 2, wxSOLID));
+ for (j = 1; j < 22; j++)
+ MonDc.DrawLine ((int) (30 * j + left), (int) (300 + top),
+ (int) (30 * j + left), (int) (top));
+ MonDc.SetPen (wxPen (wxColor (150, 170, 150), 1, wxSOLID));
+ for (j = 1; j < 22; j++)
+ MonDc.DrawLine ((int) (30 * j + left - 15), (int) (300 + top),
+ (int) (30 * j + left - 15), (int) (top));
+ MonDc.DrawLine ((int) (30 * 22 + left - 15), (int) (300 + top),
+ (int) (30 * 22 + left - 15), (int) (top));
+
+ double m = (-vmin) * d;
+ MonDc.SetPen (wxPen (wxColor (170, 170, 150), 3, wxSOLID));
+ MonDc.DrawLine ((int) (left), (int) (300 + top - m), (int) (left + 660),
+ (int) (300 + top - m));
+
+ wxClientDC MaLeg (mylegpan);
+ MaLeg.Clear ();
+
+ MaLeg.SetPen (wxPen (wxColour (150, 200, 100), 2, wxSOLID));
+ MaLeg.
+ SetFont (wxFont
+ (7, wxSWISS, wxNORMAL, wxNORMAL, false, wxT ("Arial Black")));
+ for (int k = 1, tmpi = 0; k < 30; k++)
+ {
+ if ((tmpi < 8) && is_set (k, inlist, in))
+ {
+ if (k <= 4)
+ tmps.Printf (wxT ("Analogue Output %d"), k);
+ if ((k > 4) && (k <= 12))
+ tmps.Printf (wxT ("Bool Output %d"), k - 4);
+ if ((k > 12) && (k <= 20))
+ tmps.Printf (wxT ("Analogue Input %d"), k - 12);
+ if ((k > 20) && (k <= 28))
+ tmps.Printf (wxT ("Bool Input %d"), k - 20);
+
+ MaLeg.DrawRotatedText (tmps, 0, 10 * tmpi, 0);
+ MaLeg.SetPen (wxPen (col[tmpi], 4, wxSOLID));
+ MaLeg.DrawLine (100, 10 * tmpi + 6, 115, 10 * tmpi + 6);
+ //////////////////////////////////////////DAW////////////////////////////////////////
+ MonDc.SetPen (wxPen (col[tmpi], 4, wxSOLID));
+ if (k <= 4)
+ y[k - 1][(int) g] = Write_Analogue_Output_16_Bit[k - 1];
+ if ((k > 4) && (k <= 12))
+ y[k - 1][(int) g] = get_bit (Write_Outputs_8_Bit[0], k - 4);
+ if ((k > 12) && (k <= 20))
+ y[k - 1][(int) g] = Read_Analogue_Input_16_Bit[k - 1 - 12];
+ if ((k > 20) && (k <= 28))
+ y[k - 1][(int) g] = get_bit (Read_Inputs_8_Bit[0], k - 20);
+
+ if (y[k - 1][(int) g] > old_max)
+ old_max = y[k - 1][(int) g];
+ if (y[k - 1][(int) g] < old_min)
+ old_min = y[k - 1][(int) g];
+ for (j = 1; j < (g + 1); j++)
+ {
+ p = (y[k - 1][j - 1] - vmin) * d;
+ q = (y[k - 1][j] - vmin) * d;
+ MonDc.DrawLine ((int) (15 * (j - 1) + left),
+ (int) (300 + top - p), (int) (15 * j + left),
+ (int) (300 + top - q));
+ }
+ /////////////////////////////////////////////////////////////////////////////////////
+ tmpi++;
+ }
+ }
+}
+
+void
+actu_output (void)
+{
+ wxString tmp;
+
+ frame->outbt1->SetValue (get_bit (Write_Outputs_8_Bit[0], 1));
+ frame->outbt2->SetValue (get_bit (Write_Outputs_8_Bit[0], 2));
+ frame->outbt3->SetValue (get_bit (Write_Outputs_8_Bit[0], 3));
+ frame->outbt4->SetValue (get_bit (Write_Outputs_8_Bit[0], 4));
+ frame->outbt5->SetValue (get_bit (Write_Outputs_8_Bit[0], 5));
+ frame->outbt6->SetValue (get_bit (Write_Outputs_8_Bit[0], 6));
+ frame->outbt7->SetValue (get_bit (Write_Outputs_8_Bit[0], 7));
+ frame->outbt8->SetValue (get_bit (Write_Outputs_8_Bit[0], 8));
+
+ frame->outs1->SetValue (Write_Analogue_Output_16_Bit[0] + 32768);
+ frame->outs2->SetValue (Write_Analogue_Output_16_Bit[1] + 32768);
+ frame->outs3->SetValue (Write_Analogue_Output_16_Bit[2] + 32768);
+ frame->outs4->SetValue (Write_Analogue_Output_16_Bit[3] + 32768);
+ tmp.Printf (wxT (" %i"), Write_Analogue_Output_16_Bit[0]);
+ frame->outst1->SetLabel (tmp);
+ tmp.Printf (wxT (" %i"), Write_Analogue_Output_16_Bit[1]);
+ frame->outst2->SetLabel (tmp);
+ tmp.Printf (wxT (" %i"), Write_Analogue_Output_16_Bit[2]);
+ frame->outst3->SetLabel (tmp);
+ tmp.Printf (wxT (" %i"), Write_Analogue_Output_16_Bit[3]);
+ frame->outst4->SetLabel (tmp);
+}
+
+void
+actu (void)
+{
+ actu_output ();
+
+ Gtime++;
+ if (Gtime > hdelta)
+ {
+ old_max = 5;
+ old_min = -5;
+ Gtime = 0;
+ }
+ frame->Paint ();
+}
+
+void
+MyFrame::OnTimer (wxTimerEvent & event)
+{
+ actu (); // do whatever you want to do every second here
+}
+
+void
+MyFrame::OnPaint (wxPaintEvent & event)
+{
+ //Paint();
+}