Pastebin
Paste #600: No description
< previous paste - next paste>
Pasted by Ivan JEnsen
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
Go to most recent paste.