Pastebin

Paste #600: No description

< previous paste - next paste>

Pasted by Ivan JEnsen

Download View as text

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Data.SqlClient;


namespace Send_og_modtag_com
{

    public partial class Form1 : Form
    {
        /*Sigende navne for kommandoer*/
        private const char COMMAND_TEMP_LOW = (char)0x20;
        private const char COMMAND_TEMP_HIGH = (char)0x21;
        private const char COMMAND_HEAT_ON = (char)0x22;
        private const char COMMAND_HEAT_OFF = (char)0x23;
        private const char COMMAND_HEAT_AUTO = (char)0x24;
        private const char COMMAND_GET_ALL = (char)0x25;
        private const char COMMAND_DEACTIVATE_ALARM = (char)0x26;

        private const string ConnString = @"Data Source=.\SQLEXPRESS;AttachDbFilename='F:\Documents\Visual Studio 2005\Projects\Send og modtag com\Send og modtag com\Home.mdf';Integrated Security=True;User Instance=True";
        private SerialPort mPort;
        public Form1()
        {
            InitializeComponent();
            comboBoxCom.SelectedIndex = 0;      //sætter default comport til COM1

        }


        /*Opretter forbindelse på COM-porten og tjekker om der er valgt COM-port
         og initialliserer comporten med baudrate osv. Opretter eventhandler til receivedata
         og åbner porten. Skriver i loggen hvis fejl opstår*/
        private void btnConnect_Click(object sender, EventArgs e)
        {
            if (comboBoxCom.SelectedIndex < 0)
            {
                logmessage("Ingen Comport valgt");
                return;
            }
            mPort = new SerialPort("COM" + (comboBoxCom.SelectedIndex + 1), 9600, Parity.None, 8, StopBits.One);
            mPort.DataReceived += new SerialDataReceivedEventHandler(this.receivedata);
            mPort.Open();


            logmessage("Forbindelse oprettet");
            btnConnect.Enabled = false;
            comboBoxCom.Enabled = false;
            panelAdmin.Enabled = true;
            timerReceiveData6.Enabled = true;
            btmnDeaktiverAlarm.Enabled = true;
            // timerReceiveData.Enabled = true;


        }
        /*Sikrer at logmessage kører i samme tråd og tilføjer events i loggen*/
        private delegate void MyCallback(string message);
        private void logmessage(string message)
        {
            if (InvokeRequired)
            {
                this.Invoke(new MyCallback(logmessage), new object[] { message });
            }
            else
            {
                richTextBoxLog.AppendText(System.DateTime.Now.ToLongTimeString() + ": " + message + "\n");
                richTextBoxLog.ScrollToCaret();
            }

        }

        /*Sender kommandoer og data via COM-port til board, sikre at der er forbindelse og porten er åben.
         Skriver i loggen*/
        private void sendtoboard(char kommando, string val)
        {
            if (mPort == null)
            {
                logmessage("Ingen forbindelse oprettet");
                return;
            }

            if (mPort.IsOpen == false)
            {
                logmessage("Port ikke åben");
                return;
            }

            try
            {
                mPort.Write(((char)0x02) + "");
                mPort.Write(kommando + "");
                mPort.Write(((char)0x01) + "");
                mPort.Write(val);
                mPort.Write(((char)0x03) + "");
            }
            catch (Exception e)
            {
                logmessage(e.Message);
            }

        }

        /*Modtager data fra AVR-boardet linie for linie og splitter strengen op
         så data er klar til indsættelse i databasen*/
        private void receivedata(object sender, EventArgs eventArgs)
        {            try
            {
                if (mPort.BytesToRead < 1)
                    return;

                string data;
                data = mPort.ReadLine();
                char[] split = { ';' };
                string[] info;
                info = data.Split(split);

                float temp1, temp2;
                int a, b, H, L;
                char digi;

                temp1 = System.Convert.ToSingle(info[0]);
                temp2 = System.Convert.ToSingle(info[1]);

                a = System.Convert.ToInt32(info[2]);
                b = System.Convert.ToInt32(info[3]);
                H = System.Convert.ToInt32(info[4]);
                L = System.Convert.ToInt32(info[5]);
                digi = System.Convert.ToChar(info[6]);

                SqlParameter paramTid = new SqlParameter();
                paramTid.ParameterName = "@Tid";
                paramTid.Value = System.DateTime.Now.ToString();

                SqlParameter paramTEMP1 = new SqlParameter();
                paramTEMP1.ParameterName = "@Temp1";
                paramTEMP1.Value = temp1;

                SqlParameter paramTEMP2 = new SqlParameter();
                paramTEMP2.ParameterName = "@Temp2";
                paramTEMP2.Value = temp2;

                SqlParameter paramAlarm = new SqlParameter();
                paramAlarm.ParameterName = "@Alarm";
                paramAlarm.Value = a;

                SqlParameter paramBatteri = new SqlParameter();
                paramBatteri.ParameterName = "@Batteri";
                paramBatteri.Value = b;

                SqlParameter paramMax = new SqlParameter();
                paramMax.ParameterName = "@MaxTemp";
                paramMax.Value = H;

                SqlParameter paramMin = new SqlParameter();
                paramMin.ParameterName = "@MinTemp";
                paramMin.Value = L;

                SqlParameter paramDigi = new SqlParameter();
                paramDigi.ParameterName = "@Digi";
                paramDigi.Value = digi;

                SqlConnection conn = new SqlConnection(ConnString);

                string InsertStr = @"Insert into Home (Tid, Temp1, Temp2, Alarm, Batteri, MaxTemp, MinTemp, Digi) Values(@Tid, @Temp1, @Temp2, @Alarm, @Batteri, @MaxTemp, @MinTemp, @Digi)";

                SqlCommand cmdInsert = new SqlCommand(InsertStr, conn);

                cmdInsert.Parameters.Add(paramTid);
                cmdInsert.Parameters.Add(paramTEMP1);
                cmdInsert.Parameters.Add(paramTEMP2);
                cmdInsert.Parameters.Add(paramAlarm);
                cmdInsert.Parameters.Add(paramBatteri);
                cmdInsert.Parameters.Add(paramMax);
                cmdInsert.Parameters.Add(paramMin);
                cmdInsert.Parameters.Add(paramDigi);

                conn.Open();
                cmdInsert.ExecuteNonQuery();
                conn.Close();

                SqlCommand cmd = new SqlCommand("SELECT AVG(Temp1) FROM Home WHERE Alarm = 0", conn);

                conn.Open();
                decimal averageTemp = Convert.ToDecimal(cmd.ExecuteScalar());
                conn.Close();


                //if (b == 1)
                //    checkBoxBatteri.Checked = true;
                //else checkBoxBatteri.Checked = false;
                //if (a == 1)
                //    checkBoxTemp.Checked = true;
                //else
                //    checkBoxTemp.Checked = false;
                //textBoxTemp.Text = temp1.ToString();
                //textBoxGennemsnit.Text = Math.Round(averageTemp, 1).ToString();

                logmessage(info[0] + " - " + info[1] + " - " + info[2] + " - " + info[3] + " - " + info[4] + " - " + info[5] + " - " + printBinary(digi).ToString());
            }
            catch (Exception e)
            {
                logmessage(e.Message);
            }
        }
        /*Sender data til AVR-board og stiller Max og Min temperatup på AVR-Boardet*/
        private void btnTempSet_Click(object sender, EventArgs e)
        {

            int H;
            int L;

            if (!System.Int32.TryParse(textBoxTempMin.Text, out L))
            {
                logmessage("Indtast et heltal!");
                return;
            }
            if (!System.Int32.TryParse(textBoxTempMax.Text, out H))
            {
                logmessage("Indtast et heltal!");
                return;
            }
            if (L >= H)
            {
                logmessage(" Max. temp. er mindre end Min.!");
                return;
            }
            sendtoboard(COMMAND_TEMP_LOW, L + "");
            sendtoboard(COMMAND_TEMP_HIGH, H + "");
            logmessage("Nye temperaturer er: Min " + L + ", Max " + H);
        }
        /*Sender kommando hvert 6. minut og datareceive behandler dataen*/
        private void timerReceiveData6_Tick(object sender, EventArgs e)
        {
            sendtoboard(COMMAND_GET_ALL, "");
        }
        /*Følgende funktioner sender bare en kommando til AVR-boardet og receivedata modtager og behandler så senere*/
        private void radioBtnHeatOn_CheckedChanged(object sender, EventArgs e)
        {
            sendtoboard(COMMAND_HEAT_ON, "");
            if (radioBtnHeatOn.Checked == true)
                logmessage("Varme manuelt tændt");
        }

        private void radioBtnHeatOff_CheckedChanged(object sender, EventArgs e)
        {
            sendtoboard(COMMAND_HEAT_OFF, "");
            if (radioBtnHeatOff.Checked == true)
                logmessage("Varme Manuelt slukket");
        }

        private void radioBtnHeatAuto_CheckedChanged(object sender, EventArgs e)
        {
            sendtoboard(COMMAND_HEAT_AUTO, "");
            if (radioBtnHeatAuto.Checked == true)
                logmessage("Varme kører på automatik");
        }

        private void btmnDeaktiverAlarm_Click(object sender, EventArgs e)
        {
            sendtoboard(COMMAND_DEACTIVATE_ALARM, "");
            logmessage("Alarmer deaktiveret");
        }
        /*Omregner til binært til brug for visning af status for digitaleindgange*/
        string printBinary(char value)
        {
            string s = "";
            for (int i = 4; i >= 0; --i)
            {

                int pow2 = 1;
                for (int j = 0; j < i; j++)
                {
                    pow2 *= 2;
                }
                if ((value & pow2) == pow2)
                    s = s + "1";
                else
                    s = s + "0";
            }
            return s;
        }
    }
}

New Paste


Do not write anything in this field if you're a human.

Go to most recent paste.