diff --git a/02_Windows_App/Perun_v1/01_Classes/DatabaseController.cs b/02_Windows_App/Perun_v1/01_Classes/DatabaseController.cs index d48beb4..0478575 100644 --- a/02_Windows_App/Perun_v1/01_Classes/DatabaseController.cs +++ b/02_Windows_App/Perun_v1/01_Classes/DatabaseController.cs @@ -3,11 +3,13 @@ using MySql.Data.MySqlClient; using Newtonsoft.Json; using System; -internal class DatabaseController +public class DatabaseController { - public static string strMySQLConnectionString; // MySQL connection string + public string strMySQLConnectionString; // MySQL connection string + public MySqlConnection connMySQL; + public bool bStatus; - public static void SendToMySql(string strRawUDPFrame) + public void SendToMySql(string strRawUDPFrame) { // Main function to send data to mysql dynamic strUDPFrame = JsonConvert.DeserializeObject(strRawUDPFrame); // Deserialize raw data @@ -84,12 +86,12 @@ internal class DatabaseController } // Connect to mysql and execute sql - MySqlConnection connMySQL = new MySqlConnection(DatabaseController.strMySQLConnectionString); + connMySQL = new MySqlConnection(strMySQLConnectionString); try { Console.WriteLine("Sending data to MySQL - Begin"); connMySQL.Open(); - + bStatus = true; MySqlCommand cmdMySQL = new MySqlCommand(strSQLQueryTxt, connMySQL); MySqlDataReader rdrMySQL = cmdMySQL.ExecuteReader(); @@ -105,6 +107,7 @@ internal class DatabaseController // General exception found Console.WriteLine(a_ex.ToString()); PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "ERROR MySQL - package type: " + strUDPFrameType); + bStatus = false; } catch (MySqlException m_ex) { @@ -122,6 +125,7 @@ internal class DatabaseController PerunHelper.LogHistoryAdd(ref Globals.arrLogHistory, "ERROR MySQL - " + m_ex.Number); break; } + bStatus = false; } connMySQL.Close(); Console.WriteLine("Sending data to MySQL - Done"); diff --git a/02_Windows_App/Perun_v1/01_Classes/Globals.cs b/02_Windows_App/Perun_v1/01_Classes/Globals.cs index 2ccb6ec..8dc2cf2 100644 --- a/02_Windows_App/Perun_v1/01_Classes/Globals.cs +++ b/02_Windows_App/Perun_v1/01_Classes/Globals.cs @@ -1,7 +1,10 @@ -// This class gathers all global variables +// This class gathers all global variable +using MySql.Data.MySqlClient; internal class Globals { public static string strPerunVersion = "DEBUG"; // Helper for pulling version definition public static string[] arrLogHistory = new string[10]; // Log history for GUI -} \ No newline at end of file + +} + diff --git a/02_Windows_App/Perun_v1/01_Classes/TCPController.cs b/02_Windows_App/Perun_v1/01_Classes/TCPController.cs index bfdc889..e093bca 100644 --- a/02_Windows_App/Perun_v1/01_Classes/TCPController.cs +++ b/02_Windows_App/Perun_v1/01_Classes/TCPController.cs @@ -46,12 +46,9 @@ internal class TCPController { try { - // Start listening to UDP - + // Start listening to TCP tcpServer = new TcpListener(IPAddress.Any, intListenPort); - string strReceivedData; - byte[] arrReceiveByteArray; // Start the main loop TCPController.boolDone = false; diff --git a/02_Windows_App/Perun_v1/02_Forms/form_Main.Designer.cs b/02_Windows_App/Perun_v1/02_Forms/form_Main.Designer.cs index ee6e051..6ff0e75 100644 --- a/02_Windows_App/Perun_v1/02_Forms/form_Main.Designer.cs +++ b/02_Windows_App/Perun_v1/02_Forms/form_Main.Designer.cs @@ -65,18 +65,18 @@ this.con_txt_dcs_instance = new System.Windows.Forms.MaskedTextBox(); this.label7 = new System.Windows.Forms.Label(); this.con_txt_dcs_server_port = new System.Windows.Forms.MaskedTextBox(); - this.con_img_db = new System.Windows.Forms.PictureBox(); - this.con_img_dcs = new System.Windows.Forms.PictureBox(); - this.con_img_srs = new System.Windows.Forms.PictureBox(); this.con_img_lotATC = new System.Windows.Forms.PictureBox(); + this.con_img_srs = new System.Windows.Forms.PictureBox(); + this.con_img_dcs = new System.Windows.Forms.PictureBox(); + this.con_img_db = new System.Windows.Forms.PictureBox(); this.con_GroupBox_1.SuspendLayout(); this.con_GroupBox_2.SuspendLayout(); this.con_GroupBox_3.SuspendLayout(); this.groupBox1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.con_img_db)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.con_img_dcs)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.con_img_srs)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.con_img_lotATC)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.con_img_srs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.con_img_dcs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.con_img_db)).BeginInit(); this.SuspendLayout(); // // con_List_Received @@ -383,37 +383,42 @@ this.con_txt_dcs_server_port.Size = new System.Drawing.Size(207, 20); this.con_txt_dcs_server_port.TabIndex = 3; // - // con_img_db + // con_img_lotATC // - this.con_img_db.Location = new System.Drawing.Point(12, 335); - this.con_img_db.Name = "con_img_db"; - this.con_img_db.Size = new System.Drawing.Size(29, 28); - this.con_img_db.TabIndex = 10; - this.con_img_db.TabStop = false; - // - // con_img_dcs - // - this.con_img_dcs.Location = new System.Drawing.Point(47, 335); - this.con_img_dcs.Name = "con_img_dcs"; - this.con_img_dcs.Size = new System.Drawing.Size(29, 28); - this.con_img_dcs.TabIndex = 11; - this.con_img_dcs.TabStop = false; + this.con_img_lotATC.Location = new System.Drawing.Point(307, 335); + this.con_img_lotATC.Name = "con_img_lotATC"; + this.con_img_lotATC.Size = new System.Drawing.Size(29, 28); + this.con_img_lotATC.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.con_img_lotATC.TabIndex = 13; + this.con_img_lotATC.TabStop = false; // // con_img_srs // - this.con_img_srs.Location = new System.Drawing.Point(82, 335); + this.con_img_srs.Location = new System.Drawing.Point(272, 335); this.con_img_srs.Name = "con_img_srs"; this.con_img_srs.Size = new System.Drawing.Size(29, 28); + this.con_img_srs.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; this.con_img_srs.TabIndex = 12; this.con_img_srs.TabStop = false; // - // con_img_lotATC + // con_img_dcs // - this.con_img_lotATC.Location = new System.Drawing.Point(117, 335); - this.con_img_lotATC.Name = "con_img_lotATC"; - this.con_img_lotATC.Size = new System.Drawing.Size(29, 28); - this.con_img_lotATC.TabIndex = 13; - this.con_img_lotATC.TabStop = false; + this.con_img_dcs.Location = new System.Drawing.Point(237, 335); + this.con_img_dcs.Name = "con_img_dcs"; + this.con_img_dcs.Size = new System.Drawing.Size(29, 28); + this.con_img_dcs.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.con_img_dcs.TabIndex = 11; + this.con_img_dcs.TabStop = false; + // + // con_img_db + // + this.con_img_db.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; + this.con_img_db.Location = new System.Drawing.Point(202, 335); + this.con_img_db.Name = "con_img_db"; + this.con_img_db.Size = new System.Drawing.Size(29, 28); + this.con_img_db.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.con_img_db.TabIndex = 10; + this.con_img_db.TabStop = false; // // form_Main // @@ -449,10 +454,10 @@ this.con_GroupBox_3.PerformLayout(); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.con_img_db)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.con_img_dcs)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.con_img_srs)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.con_img_lotATC)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.con_img_srs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.con_img_dcs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.con_img_db)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); diff --git a/02_Windows_App/Perun_v1/02_Forms/form_Main.cs b/02_Windows_App/Perun_v1/02_Forms/form_Main.cs index 7dc1eec..11d2797 100644 --- a/02_Windows_App/Perun_v1/02_Forms/form_Main.cs +++ b/02_Windows_App/Perun_v1/02_Forms/form_Main.cs @@ -1,5 +1,6 @@ using System; using System.Diagnostics; +using System.Drawing; using System.Threading; using System.Windows.Forms; using Newtonsoft.Json; @@ -11,6 +12,7 @@ namespace Perun_v1 // Variable definitions public string[] arrSendBuffer = new string[65534]; // Mysql send buffer public bool boolLetMeOut = false; // Helper to handle system tray + public DatabaseController dbConnection = new DatabaseController(); // ################################ Main ################################ private void form_Main_Load(object sender, EventArgs e) @@ -94,7 +96,7 @@ namespace Perun_v1 con_txt_mysql_database.Enabled = true; con_txt_mysql_username.Enabled = true; con_txt_mysql_password.Enabled = true; - //con_txt_mysql_port.Enabled = true; // TBD - protect against writting text in the port field + con_txt_mysql_port.Enabled = true; con_txt_mysql_server.Enabled = true; con_txt_3rd_lotatc.Enabled = true; con_txt_3rd_srs.Enabled = true; @@ -109,12 +111,7 @@ namespace Perun_v1 private void con_Button_Listen_ON_Click(object sender, EventArgs e) { // Start listening - //UDPController.Create(48620, ref Globals.arrLogHistory, ref arrSendBuffer); - //UDPController.thrUDPListener = new Thread(UDPController.StartListen); - //UDPController.thrUDPListener.Start(); - //UDPController.thrUDPListener.Name = "UDPThread"; - - TCPController.Create(48620, ref Globals.arrLogHistory, ref arrSendBuffer); + TCPController.Create(Int32.Parse(con_txt_dcs_server_port.Text), ref Globals.arrLogHistory, ref arrSendBuffer); TCPController.thrTCPListener = new Thread(TCPController.StartListen); TCPController.thrTCPListener.Start(); TCPController.thrTCPListener.Name = "TCPThread"; @@ -123,7 +120,7 @@ namespace Perun_v1 form_Main_SaveSettings(); // Save settings // Prepare connection string - DatabaseController.strMySQLConnectionString = "server=" + con_txt_mysql_server.Text + ";user=" + con_txt_mysql_username.Text + ";database=" + con_txt_mysql_database.Text + ";port=" + con_txt_mysql_port.Text + ";password=" + con_txt_mysql_password.Text; + dbConnection.strMySQLConnectionString = "server=" + con_txt_mysql_server.Text + ";user=" + con_txt_mysql_username.Text + ";database=" + con_txt_mysql_database.Text + ";port=" + con_txt_mysql_port.Text + ";password=" + con_txt_mysql_password.Text; // Start timmers tim_200ms.Enabled = true; @@ -136,7 +133,6 @@ namespace Perun_v1 // Stop listening try { - //UDPController.StopListen(); TCPController.StopListen(); } catch (Exception ex) @@ -283,10 +279,22 @@ namespace Perun_v1 { if (arrSendBuffer[i] != null) { - DatabaseController.SendToMySql(arrSendBuffer[i]); + dbConnection.SendToMySql(arrSendBuffer[i]); arrSendBuffer[i] = null; } } + + // Update icons + if (dbConnection.bStatus) + { + con_img_db.Image = (Image)Properties.Resources.ResourceManager.GetObject("ico_db"); + } else + { + con_img_db.Image = (Image)Properties.Resources.ResourceManager.GetObject("ico_error"); + } + con_img_dcs.Image = (Image)Properties.Resources.ResourceManager.GetObject("ico_game"); + con_img_srs.Image = (Image)Properties.Resources.ResourceManager.GetObject("ico_srs"); + con_img_lotATC.Image = (Image)Properties.Resources.ResourceManager.GetObject("ico_lotatc"); } private void tim_10000ms_Tick(object sender, EventArgs e) @@ -361,7 +369,7 @@ namespace Perun_v1 { strSRSJson = "{'type':'100','instance':'" + Int32.Parse(con_txt_dcs_instance.Text) + "','payload':{'ignore':'true'}}"; } - DatabaseController.SendToMySql(strSRSJson); + dbConnection.SendToMySql(strSRSJson); // Handle LotATC - TBD clean code for multiinstance if (con_check_3rd_lotatc.Checked) @@ -386,7 +394,7 @@ namespace Perun_v1 { strLotATCJson = "{'type':'101','instance':'" + Int32.Parse(con_txt_dcs_instance.Text) + "','payload':{'ignore':'true'}}"; // No LotATC controller connected } - DatabaseController.SendToMySql(strLotATCJson); + dbConnection.SendToMySql(strLotATCJson); } } } diff --git a/02_Windows_App/Perun_v1/Perun_v1.csproj b/02_Windows_App/Perun_v1/Perun_v1.csproj index 092ef7c..857d2d4 100644 --- a/02_Windows_App/Perun_v1/Perun_v1.csproj +++ b/02_Windows_App/Perun_v1/Perun_v1.csproj @@ -181,6 +181,12 @@ + + + + + +