#ifndef _CXFEL_H #define _CXFEL_H #include "stdafx.h" #include #include "modbus-private.h" #include "stdint.h" #include "unit-test.h" #include "alloulibere.h" //#define _INC_WINDOWS //#include //#include #using #using #using #using //pour les controles bouton using namespace System; using namespace System::ComponentModel;//contient des classes pour les composants et les contrôles using namespace System::Windows::Forms;//contient des classes dédiées à la génération des formulaires using namespace System::Drawing;//contient les classes Point et Size du bouton using namespace System::Threading; using namespace System::Collections; #define NB_BANCS 4 #define NB_COUPLEURS 8 #define NB_ETAPES 12 #define MAX_NB_LABEL_TEXTBOX 500 #define MODBUS_SIZE_READ_COILS 13 #define MODBUS_SIZE_READ_HOLDINGS_LOW 82 #define MODBUS_SIZE_READ_HOLDINGS_HIGH 125 #define MODBUS_BASEADR_COILS 3000 #define MODBUS_BASEADR_LOW_HOLDINGS 2000 #define MODBUS_BASEADR_HIGH_HOLDINGS 2082 __gc public class CGroupBox : public Form { private: String* name; // int labPosX, labPosY; Label* labNumP; Label* labNumC1; Label* labNumC2; TextBox* valNumP; TextBox* valNumC1; TextBox* valNumC2; GroupBox* gbox; Button* appliquerBtn; void AppliquerBtn_Clicked(Object* pSender,EventArgs* pArgs); public: CGroupBox(String* gname, int posX, int posY); //CGROUPBox(uint16_t *tab_rp_registers_low,uint16_t *tab_rp_registers_high); GroupBox* GetGroupBox(); Label* GetLabelNumP(); Label* GetLabelNumC1(); Label* GetLabelNumC2(); // TextBox* GetTextBox(); // void SetVal(String*); void SetValNumP(String*); void SetValNumC1(String*); void SetValNumC2(String*); String* GetValNumP(); String* GetValNumC1(); String* GetValNumC2(); protected: static int nbInstance=0;//variable de classe }; //classe boite de dialogue avec utilisation de données __gc public class CDialogConfig : public Form { public: CDialogConfig(); CDialogConfig(uint16_t *tab_rp_registers_low,uint16_t *tab_rp_registers_high); String* getTp_max(); String* getN_cur(); protected ://privé sauf au niveau des classes dérivées String* name; static String* gname[] = {"a","b","c","d" }; int indexGroupBox;//nb de GroupBox private://données avec controle, label, bouton OK, textBox... Button* sortirBtn; GroupBox* gboxPtr; static ArrayList* pal; Label* labTp_max; TextBox* valTp_max; Label* labN_cur; ComboBox* valN_cur; Button* btnAppliquer; Label* labN_cur4Reprise; TextBox* valN_cur4Reprise; Button* btnN_curAppliquer; static int lectBddFic=true;//bdd=true, fichier=false GroupBox* gboxAuto; RadioButton* rbAutoBdd;//lecture bdd RadioButton* rbAutoFichier;//lecture fichier Button* BtnAppliquerAuto; private: void SortirBtn_Clicked(Object* pSender,EventArgs* pArgs);//gestionnaire d'evenement de la boite dialogue void BtnAppliquer_Clicked(Object* pSender,EventArgs* pArgs);//gestionnaire d'evenement de la boite dialogue void BtnAppliquerAuto_Clicked(Object* pSender,EventArgs* pArgs);//gestionnaire d'evenement de la boite dialogue void Radio_Clicked(Object* pSender, EventArgs* pArgs);//remplit automatiquement la zone de texte void btnN_curAppliquer_Clicked(Object* pSender,EventArgs* pArgs);//gestionnaire d'evenement de la boite dialogue }; __gc public class CLabelTextBox : public Form { private: String* name; int labPosX, labPosY; int labSizeX, labSizeY; Label* lab; TextBox* val; public: CLabelTextBox(String* lab, int posX, int posY, int sizeX, int sizeY, int sizeText); Label* GetLabel(); TextBox* GetTextBox(); void SetVal(String*); String* GetVal(); String* GetName(); void SetColor(int); protected: static int nbInstance=0;//variable de classe }; //classe boite de dialogue avec utilisation de données __gc public class MaDialogUser : public Form { public: MaDialogUser(); protected ://privé sauf au niveau des classes dérivées String* name; static String* nameLab_1[] = { "dtp(min)","dt(sec)","dP(dB)","dPSecu(dB)","Nbal", "P_cde(dBm)","Pp(kW)","Nbal_max","Fr(Hz)","N_cur", "SVd(10-10mbar)","SVfin(10-10mbar)","SV1(10-10mbar)","SV2(10-10mbar)","V_cur(10-10mbar)", "Pi_min(kW)","Timer(min)","SVil(10-10mbar)","Sleil(mA)","STc(°C)", "Eil","Nil","Nil_stat","P_last(dBm)","N_last","dPil(dB)"}; static String* nameLab_2[] = {"1a","2a","1b","2b","1c","2c","1d","2d" }; static String* nameLab_3[] = {"a","b","c","d" }; static String* nameLab_4[] = {"a","a","a","b","b","b","c","c","c","d","d","d" }; static String* nameLab_5[] = {"N_cur","Ln(us)","Tp_max(min)","Pi_max(kW)"}; static String* nameLab_6[] = {"1","2","3","4","5","6","7","8"}; int indexTextBox;//nb de TextBox int indexTextBoxSave;//nb de TextBox après conditionning private://données avec controle, label, bouton OK, textBox... Button* OKBtn; Button* CancelBtn; Button* EcritureBtn; GroupBox* gbox; RadioButton* rb1;//oui RadioButton* rb2;//non Thread* uThread; static ArrayList* pal; Label* lblPtr; TextBox* tbxPtr; static Button* btnStart; static Button* btnStop; static Button* btnPause; static Button* btnReprise;//ces 4 controles bouton sont membres de System::Windows::Forms private: void OKMaDBtn_Clicked(Object* pSender,EventArgs* pArgs);//gestionnaire d'evenement de la boite dialogue void Radio_Clicked(Object* pSender, EventArgs* pArgs);//remplit automatiquement la zone de texte void Setup_Group ();//creation et configuration d'un groupe d'options void Setup_Group_Conditionning ();//creation et configuration d'un groupe d'options void Setup_Buttons_Conditionning();//creation et definition des boutons void BtnStart_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenements associés au bouton 1 void BtnStop_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenements associés au bouton 2 void BtnPause_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenements associés au bouton 3 void BtnReprise_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenements associés au bouton 4 void EcritureBtn_Clicked(Object* pSender,EventArgs* pArgs);//gestionnaire d'evenement de la boite dialogue static void ThreadProc(); static float PermutToReversed(uint16_t* tab_rp_registers,int index);//permut le float32 en float32 Reverse }; //classe boite de dialogue : c'est un formulaire comme un autre.. à l'affichage près __gc public class AboutBox : public Form { private: void OKButton_Clicked(Object* pSender,EventArgs* pArgs);//gestionnaire d'evenement de la boite dialogue private: Button* OKButton; public: AboutBox();//constructeur }; //classe boite de dialogue avec utilisation de données __gc public class MaDialog : public Form { public: MaDialog(); public://permet au code appelant de recuperer et modifier les données void setIp(String* theIp); String* getIp(); void setPort(String* thePort); String* getPort(); void setTimeout(int theTimeout); int getTimeout(); private://données (ip/port/tiemout) avec controle, label, bouton OK et Cancel Label* ipLabel; TextBox* ipBox; Label* portLabel; TextBox* portBox; Label* timeoutLabel; ComboBox* timeoutCombo; Button* OKBtn; Button* CancelBtn; private: void OKMaDBtn_Clicked(Object* pSender,EventArgs* pArgs);//gestionnaire d'evenement de la boite dialogue }; //classe managée du formulaire : __gc hérite de la classe System::Windows::Forms::Form __gc public class CppForm : public Form { private: Button* btn1;//ces controles bouton sont membres de System::Windows::Forms Button* btn2; Button* btn3; Button* btn4; Label* theLabel; //groupe d'options avec 3 cases GroupBox* gbox; RadioButton* rb1; RadioButton* rb2; RadioButton* rb3; RadioButton* rb4; ComboBox* combo1; TextBox* text1; MainMenu* menuBar;//barre de menu MenuItem* fileMenu;//menu deroulant MenuItem* item1;//element du menu MenuItem* item2;//element du menu System::Windows::Forms::ContextMenu* popupMenu; MenuItem* item_p1; MenuItem* item_p2; MenuItem* item_p3; MenuItem* item11;//pour afficher la boite de dialogue MenuItem* fontDlgItem;//élément du menu Fichier //ss menus MenuItem* actionMenu; MenuItem* subMenu1; MenuItem* anotherItem; MenuItem* item1_1; MenuItem* item1_2; System::Drawing::Font* labelFont;//pour afficher unr boite de dialogue Font pour choisir une police public: CppForm();//constructeur private: void Btn1_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenements associés au bouton 1 void Btn2_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenements associés au bouton 2 void Btn3_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenements associés au bouton 3 void Btn4_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenements associés au bouton 4 void Combo1_SelChanged(Object* pSender, EventArgs* pArgs);//gestionnaire d'evenement associé à la liste deroulante void MenuItem_Clicked(Object* pSender, EventArgs* pArgs);//gestionnaire des elements de menu void Radio_Clicked(Object* pSender, EventArgs* pArgs);//remplit automatiquement la zone de texte void Setup_Buttons();//creation et definition du bouton void Setup_Combo ();//configuration de la liste deroulmnte void Setup_Context_Menu ();//menu contextuel void Setup_Group ();//creation et configuration d'un groupe d'options void Setup_Label();//description textuelle dans le formulaire void Setup_Menu();//barre de menu void Setup_Text();//controle d'edition }; #endif