using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;

namespace SendData
{
    public partial class Form1 : Form
    {
        string port;
        string log, period, total;        
        string dataSent, data, dataConfirm;
        string logID, perID, totID;
        char[] received_data = new char[10];

        public Form1()
        {
            InitializeComponent();
            string[] portsList = SerialPort.GetPortNames(); // Dostupné COM porty
            string[] totalList = new string[] { "6", "12", "24", "48" };
            string[] logList = new string[] { "1", "5", "10", "15", "Nepřetržitě" };
            string[] periodList = new string[] { "5", "20", "30", "60", "Nepřetržitě" };
            Status.Text = "";
            this.Controls.Add(this.comboBoxPort);
            comboBoxPort.Items.AddRange(portsList); //Naplnění dostupnými porty
            comboBoxTotal.Items.AddRange(totalList);
            comboBoxLog.Items.AddRange(logList);
            comboBoxPeriod.Items.AddRange(periodList);            
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int ok = 1;
            int i = 2;
            port = comboBoxPort.Text;
            log = comboBoxLog.Text;
            period = comboBoxPeriod.Text;
            total = comboBoxTotal.Text;
            Status.Text = "";
            data = "";
            if (log == "" || period == "" || total == "" || port == "")
            {                
                ok = 0;
                Status.Text = "Vyplňte všechny pole";
            }

            if (ok == 1 && (log == "5" || log == "10" || log == "15") && period == "5")
            {                
                ok = 2;
                log = "255";
                period = "255";
            }

            if (ok == 1 && ((log == "Nepřetržitě" && period != "Nepřetržitě") || (log != "Nepřetržitě" && period == "Nepřetržitě")))
            {
                ok = 2;
                log = "255";
                period = "255";
            }

            if (ok == 1 && (log == "Nepřetržitě" || period == "Nepřetržitě"))
            {
                log = "255";
                period = "255";
            }

            if ( ok == 1 || ok == 2)
            {
                switch (log)
                {
                    case "1":
                        logID = "1";
                        i = i + 1;
                        break;
                    case "5":
                        logID = "2";
                        i = i + 1;
                        break;
                    case "10":
                        logID = "3";
                        i = i + 2;
                        break;
                    case "15":
                        logID = "4";
                        i = i + 2;
                        break;
                    case "255":
                        logID = "5";
                        i = i + 3;
                        break;
                }
                switch (period)
                {
                    case "5":
                        perID = "1";
                        i = i + 1;
                        break;
                    case "20":
                        perID = "2";
                        i = i + 2;
                        break;
                    case "30":
                        perID = "3";
                        i = i + 2;
                        break;
                    case "60":
                        perID = "4";
                        i = i + 2;
                        break;
                    case "255":
                        perID = "5";
                        i = i + 3;
                        break;
                }
                switch (total)
                {
                    case "6":
                        totID = "1";
                        i = i + 1;
                        break;
                    case "12":
                        totID = "2";
                        i = i + 2;
                        break;
                    case "24":
                        totID = "3";
                        i = i + 2;
                        break;
                    case "48":
                        totID = "4";
                        i = i + 2;
                        break;
                }
                dataSent = "x" + logID + perID + totID;
                try
                    {
                        serialPort.PortName = comboBoxPort.Text;
                        serialPort.Open();          // Inicializace portu
                        serialPort.Write(dataSent);     // Reset připojeného obvodu       
                        Thread.Sleep(2000);            // Čeká na provedení
                        serialPort.ReceivedBytesThreshold = 10;
                        serialPort.Read(received_data, 0, 10); // Uložení přijatých dat
                        data = new string(received_data); // Převod přijatých dat na řetězec                        
                        serialPort.Close();
                    }
                    // Oznámení při chybě připojení
                    catch
                    {
                        Status.Text = "Chyba připojení";
                        serialPort.Close();
                    }
                dataConfirm = log + "," + period + "," + total;
                data = data.Substring(0, i);

                if (ok == 1 && dataConfirm == data)
                {

                    Status.Text = "Data se nahrály v pořádku";
                }
                else if (ok == 2 && dataConfirm == data)
                {
                    Status.Text = "Délka záznamu a periody nesouhlasí: Záznam bude nepřetržitý!";
                }
                else
                {
                    Status.Text = "Chybně nahrány data";
                }
            }

            
                
           
        }        
        
    }
}
