Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.Runtime.InteropServices;
- using System.Diagnostics;
- using Excel = Microsoft.Office.Interop.Excel;
- //using System.Windows.Forms.Timer;
- namespace programku
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- // inisialisasi variabel yang akan digunakan
- float sensor1;
- float sensor2;
- float sensor3;
- float sensor4;
- float sensor5;
- float sensor6;
- float sensor7;
- float sensor8;
- float sensor9;
- float sensor10;
- float suhuruang;
- double tungku;
- double pengujian;
- double standar;
- double maksimal;
- double limrata;
- float m;
- public List<string> datawaktu = new List<string>();
- public List<float> datasensor1 = new List<float>();
- public List<float> datasensor2 = new List<float>();
- public List<float> datasensor3 = new List<float>();
- public List<float> datasensor4 = new List<float>();
- public List<float> datasensor5 = new List<float>();
- public List<float> datasensor6 = new List<float>();
- public List<float> datasensor7 = new List<float>();
- public List<float> datasensor8 = new List<float>();
- public List<float> datasensor9= new List<float>();
- public List<float> datasensor10 = new List<float>();
- public List<float> datasuhuruang= new List<float>();
- public List<double> datatungku = new List<double>();
- public List<double> datapengujian = new List<double>();
- Stopwatch stopwatch = new Stopwatch();
- string dataFromSerial = "";
- bool isReadyAcceptingData = false;
- float rata2,itung,hitung,ipengujian;
- private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
- {
- dataFromSerial = serialPort1.ReadLine();
- Console.WriteLine(dataFromSerial);
- if (isReadyAcceptingData)
- {
- this.Invoke(new EventHandler(processSerialData));
- return;
- }
- if (dataFromSerial.Contains("READY"))
- {
- stopwatch.Start();
- isReadyAcceptingData = true;
- }
- }
- private void processSerialData(object sender, EventArgs e)
- {
- //String currentDateTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
- //label14.Text = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
- TimeSpan elapsed = stopwatch.Elapsed;
- Int32 unixNow = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
- // parsing data
- float xbar = (sensor6 + sensor7 + sensor8 + sensor9 + sensor10) / 5;
- if (Math.Abs(xbar - sensor6) > 50 || Math.Abs(xbar - sensor7) > 50 || Math.Abs(xbar - sensor8) > 50 || Math.Abs(xbar - sensor9) > 50 || Math.Abs(xbar - sensor10) > 50)
- { }
- else
- {
- hitung = hitung + 5;
- ipengujian = sensor6 + sensor7 + sensor8 + sensor9 + sensor10 + ipengujian;
- pengujian = ipengujian / hitung;
- }
- // datawaktu.Add(currentDateTime);
- //insialisasi data excel
- datasensor1.Add(sensor1);
- datasensor2.Add(sensor2);
- datasensor3.Add(sensor3);
- datasensor4.Add(sensor4);
- datasensor5.Add(sensor5);
- datasensor6.Add(sensor6);
- datasensor7.Add(sensor7);
- datasensor8.Add(sensor8);
- datasensor9.Add(sensor9);
- datasensor10.Add(sensor10);
- datasuhuruang.Add(suhuruang);
- datatungku.Add(tungku);
- datapengujian.Add(pengujian);
- int x = (int)Math.Round(sensor1);
- //rumus standar
- double standarTemp = (345.00 * Math.Log10((8.00 * elapsed.TotalMinutes) + 1.00)) + 20.00;
- if (radioButton1.Checked) { standar = standarTemp; }
- if (elapsed.TotalSeconds <= 60)
- {
- itung = itung + 5;
- rata2 = rata2 + sensor6 + sensor7 + sensor8 + sensor9 + sensor10;
- m = rata2 / itung;
- }
- //inisialisasi rumus limit maksimal
- maksimal = m + 180;
- //inisialisasi rumus limit rata-rata
- limrata = m + 140;
- //pemanggilan grafik
- AddToGraph((ulong) unixNow * 1000, tungku, standar, pengujian, maksimal, limrata);
- //menampilkan nilai sensor pada label
- }
- private DateTime _start;
- //inisialisasi untuk serial port
- private void button1_Click(object sender, EventArgs e)
- {
- try
- {
- if (button1.Text == "Sambungkan")
- {
- serialPort1.PortName = textBox1.Text;
- serialPort1.BaudRate = 19200;
- _start = DateTime.Now;
- timer1.Start();
- serialPort1.Open();
- if (serialPort1.IsOpen)
- {
- button1.Text = "Putuskan";
- isReadyAcceptingData = false;
- ResetGraph();
- }
- }
- else if (button1.Text == "Putuskan")
- {
- if (serialPort1.IsOpen)
- {
- serialPort1.Close();
- button1.Text = "Sambungkan";
- stopwatch.Reset();
- isReadyAcceptingData = false;
- }
- }
- }
- catch(Exception)
- {
- MessageBox.Show("Error, coba periksa serial port");
- }
- }
- private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
- {
- char ch = e.KeyChar;
- if (!Char.IsDigit(ch) && ch != 8 && ch != 46)
- {
- e.Handled = true;
- }
- }
- //penggunaan button untuk memanggil fungsi penyimpanan excel
- private void button2_Click(object sender, EventArgs e)
- {
- ExcelFunction();
- }
- //fungsi program untuk excel
- public void ExcelFunction()
- {
- try
- {
- Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
- if (xlApp == null)
- {
- MessageBox.Show("Excel is not properly installed!!");
- return;
- }
- Excel.Workbook xlWorkBook;
- Excel.Worksheet xlWorkSheet;
- object misValue = System.Reflection.Missing.Value;
- xlWorkBook = xlApp.Workbooks.Add(misValue);
- xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
- String currentDateTime = DateTime.Now.ToString("MM_dd_yyy-H_mm_ss");
- xlWorkSheet.Cells[1, 1] = "Waktu";
- xlWorkSheet.Cells[1, 2] = "TC 1";
- xlWorkSheet.Cells[1, 3] = "TC 2";
- xlWorkSheet.Cells[1, 4] = "TC 3";
- xlWorkSheet.Cells[1, 5] = "TC 4";
- xlWorkSheet.Cells[1, 6] = "TC 5";
- xlWorkSheet.Cells[1, 7] = "TC 6";
- xlWorkSheet.Cells[1, 8] = "TC 7";
- xlWorkSheet.Cells[1, 9] = "TC 8";
- xlWorkSheet.Cells[1, 10] = "TC 9";
- xlWorkSheet.Cells[1, 11] = "TC 10";
- xlWorkSheet.Cells[1, 12] = "Suhu Ruang";
- xlWorkSheet.Cells[1, 13] = "Rata Tungku";
- xlWorkSheet.Cells[1, 14] = "Rata Pengujian";
- for (int i = 0; i < datasensor1.Count; i++)
- {
- xlWorkSheet.Cells[i+2, 1] = datawaktu[i] + "";
- xlWorkSheet.Cells[i+2, 2] = datasensor1[i]+"";
- xlWorkSheet.Cells[i+2, 3] = datasensor2[i] + "";
- xlWorkSheet.Cells[i + 2, 4] = datasensor3[i] + "";
- xlWorkSheet.Cells[i + 2, 5] = datasensor4[i] + "";
- xlWorkSheet.Cells[i + 2, 6] = datasensor5[i] + "";
- xlWorkSheet.Cells[i + 2, 7] = datasensor6[i] + "";
- xlWorkSheet.Cells[i + 2, 8] = datasensor7[i] + "";
- xlWorkSheet.Cells[i + 2, 9] = datasensor8[i] + "";
- xlWorkSheet.Cells[i + 2, 10] = datasensor9[i] + "";
- xlWorkSheet.Cells[i + 2, 11] = datasensor10[i] + "";
- xlWorkSheet.Cells[i + 2, 12] = datasuhuruang[i] + "";
- xlWorkSheet.Cells[i + 2, 13] = datatungku[i] + "";
- xlWorkSheet.Cells[i + 2, 14] = datapengujian[i] + "";
- }
- datawaktu.Clear();
- datasensor1.Clear();
- datasensor2.Clear();
- datasensor3.Clear();
- datasensor4.Clear();
- datasensor5.Clear();
- datasensor6.Clear();
- datasensor7.Clear();
- datasensor8.Clear();
- datasensor9.Clear();
- datasensor10.Clear();
- datasuhuruang.Clear();
- datatungku.Clear();
- datapengujian.Clear();
- String namafile = "d:\\data/csharp-Excel-"+currentDateTime+".xls";
- label14.Text = namafile;
- xlWorkBook.SaveAs(namafile, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
- xlWorkBook.Close(true, misValue, misValue);
- xlApp.Quit();
- Marshal.ReleaseComObject(xlWorkSheet);
- Marshal.ReleaseComObject(xlWorkBook);
- Marshal.ReleaseComObject(xlApp);
- }
- catch { MessageBox.Show("Error"); }
- MessageBox.Show("Excel file created , you can find the file d:\\csharp-Excel.xls");
- }
- //interval waktu penyimpanan dalam excel
- public void InitTimer()
- {
- Timer myTimer = new Timer();
- myTimer.Tick += new EventHandler(timer2_Tick);
- myTimer.Interval = 3000; //satuan menggunakan interval 100ms
- myTimer.Start();
- }
- //fungsi untuk stopwatch
- private void timer1_Tick(object sender, EventArgs e)
- {
- TimeSpan duration = DateTime.Now - _start;
- label14.Text = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
- string text = "";
- text +=
- duration.Hours.ToString("00") + ":" +
- duration.Minutes.ToString("00") + ":" +
- duration.Seconds.ToString("00");
- label18.Text = text;
- String[] pilah = dataFromSerial.Split(';');
- sensor1 = float.Parse(pilah[0]);
- sensor2 = float.Parse(pilah[1]);
- sensor3 = float.Parse(pilah[2]);
- sensor4 = float.Parse(pilah[3]);
- sensor5 = float.Parse(pilah[4]);
- sensor6 = float.Parse(pilah[5]);
- sensor7 = float.Parse(pilah[6]);
- sensor8 = float.Parse(pilah[7]);
- sensor9 = float.Parse(pilah[8]);
- sensor10 = float.Parse(pilah[9]);
- label1.Text = "Sensor 1 = " + pilah[0] + " C";
- label2.Text = "Sensor 2 = " + pilah[1] + " C";
- label3.Text = "Sensor 3 = " + pilah[2] + " C";
- label4.Text = "Sensor 4 = " + pilah[3] + " C";
- label5.Text = "Sensor 5 = " + pilah[4] + " C";
- label6.Text = "Sensor 6 = " + pilah[5] + " C";
- label7.Text = "Sensor 7 = " + pilah[6] + " C";
- label8.Text = "Sensor 8 = " + pilah[7] + " C";
- label9.Text = "Sensor 9 = " + pilah[8] + " C";
- label10.Text = "Sensor 10 = " + pilah[9] + " C";
- label11.Text = "Suhu Ruang = " + pilah[10] + " C";
- label12.Text = "Rata - Rata = " + pilah[11] + " C";
- label13.Text = "Rata - Rata = " + pilah[12] + " C";
- }
- //mengembalikan nilai serial untuk mematikan alarm
- private void button_ack_Click(object sender, EventArgs e)
- {
- if (serialPort1.IsOpen)
- {
- serialPort1.WriteLine("ACK");
- }
- }
- //cek apakah data serial sudah masuk
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (serialPort1.IsOpen)
- {
- serialPort1.Close();
- isReadyAcceptingData = false;
- }
- }
- //web browser selesai loading
- private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
- {
- webBrowser1.Document.Body.Style = "overflow:hidden";
- }
- //menampilkan grafik dari coding pada web browser
- private void Form1_Shown(object sender, EventArgs e)
- {
- string cd = System.Environment.CurrentDirectory;
- Uri uri = new Uri(String.Format("file:///{0}/chart.htm", cd));
- webBrowser1.Url = uri;
- }
- //reset grafik
- private void ResetGraph()
- {
- webBrowser1.Document.InvokeScript("clearData");
- }
- //fungsi pemanggilan variabel grafik dan mengubah nilainya dalam bentuk string
- private void AddToGraph(ulong unixMs, double rataTungku, double standarTungku, double rataBenda, double limitMaksBenda, double limitRataBenda)
- {
- String[] args = {
- unixMs.ToString(),
- rataTungku.ToString(),
- standarTungku.ToString(),
- rataBenda.ToString(),
- limitMaksBenda.ToString(),
- limitRataBenda.ToString()
- };
- webBrowser1.Document.InvokeScript("addValue", args);
- }
- //menunjukkan bahwa fungsi excel menggunakan timer2 sbg timernya
- private void timer2_Tick(object sender, EventArgs e)
- {
- ExcelFunction();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement