Advertisement
Guest User

excel

a guest
Jan 21st, 2020
551
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 14.93 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.IO.Ports;
  11. using System.Runtime.InteropServices;
  12. using System.Diagnostics;
  13. using Excel = Microsoft.Office.Interop.Excel;
  14.  
  15. //using System.Windows.Forms.Timer;
  16.  
  17. namespace programku
  18. {
  19.     public partial class Form1 : Form
  20.     {
  21.        
  22.         public Form1()
  23.         {
  24.             InitializeComponent();          
  25.         }
  26.  
  27.         // inisialisasi  variabel yang akan digunakan
  28.         float sensor1;
  29.         float sensor2;
  30.         float sensor3;
  31.         float sensor4;
  32.         float sensor5;
  33.         float sensor6;
  34.         float sensor7;
  35.         float sensor8;
  36.         float sensor9;
  37.         float sensor10;
  38.         float suhuruang;
  39.         double tungku;
  40.         double pengujian;      
  41.         double standar;
  42.         double maksimal;
  43.         double limrata;
  44.         float m;      
  45.        
  46.         public List<string> datawaktu = new List<string>();
  47.         public List<float> datasensor1 = new List<float>();
  48.         public List<float> datasensor2 = new List<float>();
  49.         public List<float> datasensor3 = new List<float>();
  50.         public List<float> datasensor4 = new List<float>();
  51.         public List<float> datasensor5 = new List<float>();
  52.         public List<float> datasensor6 = new List<float>();
  53.         public List<float> datasensor7 = new List<float>();
  54.         public List<float> datasensor8 = new List<float>();
  55.         public List<float> datasensor9= new List<float>();
  56.         public List<float> datasensor10 = new List<float>();
  57.         public List<float> datasuhuruang= new List<float>();
  58.         public List<double> datatungku = new List<double>();
  59.         public List<double> datapengujian = new List<double>();
  60.  
  61.         Stopwatch stopwatch = new Stopwatch();
  62.  
  63.         string dataFromSerial = "";
  64.  
  65.         bool isReadyAcceptingData = false;
  66.        
  67.         float rata2,itung,hitung,ipengujian;
  68.  
  69.         private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
  70.         {
  71.             dataFromSerial = serialPort1.ReadLine();
  72.  
  73.             Console.WriteLine(dataFromSerial);
  74.  
  75.             if (isReadyAcceptingData)
  76.             {
  77.                 this.Invoke(new EventHandler(processSerialData));
  78.  
  79.                 return;
  80.             }
  81.  
  82.             if (dataFromSerial.Contains("READY"))
  83.             {
  84.                 stopwatch.Start();
  85.  
  86.                 isReadyAcceptingData = true;
  87.             }
  88.         }
  89.  
  90.         private void processSerialData(object sender, EventArgs e)
  91.         {
  92.             //String currentDateTime = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
  93.             //label14.Text = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
  94.             TimeSpan elapsed = stopwatch.Elapsed;
  95.             Int32 unixNow = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
  96.  
  97.            // parsing data
  98.            
  99.  
  100.             float xbar = (sensor6 + sensor7 + sensor8 + sensor9 + sensor10) / 5;
  101.  
  102.             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)
  103.             { }
  104.             else
  105.             {
  106.                 hitung = hitung + 5;
  107.                 ipengujian = sensor6 + sensor7 + sensor8 + sensor9 + sensor10 + ipengujian;
  108.                 pengujian = ipengujian / hitung;
  109.             }
  110.  
  111.            // datawaktu.Add(currentDateTime);
  112.             //insialisasi data excel  
  113.             datasensor1.Add(sensor1);
  114.             datasensor2.Add(sensor2);
  115.             datasensor3.Add(sensor3);
  116.             datasensor4.Add(sensor4);
  117.             datasensor5.Add(sensor5);
  118.             datasensor6.Add(sensor6);
  119.             datasensor7.Add(sensor7);
  120.             datasensor8.Add(sensor8);
  121.             datasensor9.Add(sensor9);
  122.             datasensor10.Add(sensor10);
  123.             datasuhuruang.Add(suhuruang);
  124.             datatungku.Add(tungku);
  125.             datapengujian.Add(pengujian);
  126.  
  127.             int x = (int)Math.Round(sensor1);
  128.            
  129.             //rumus standar
  130.             double standarTemp = (345.00 * Math.Log10((8.00 * elapsed.TotalMinutes) + 1.00)) + 20.00;
  131.  
  132.             if (radioButton1.Checked) { standar = standarTemp; }
  133.             if (elapsed.TotalSeconds <= 60)
  134.             {
  135.                 itung = itung + 5;
  136.                 rata2 = rata2 + sensor6 + sensor7 + sensor8 + sensor9 + sensor10;
  137.                 m = rata2 / itung;
  138.             }
  139.  
  140.             //inisialisasi rumus limit maksimal
  141.             maksimal = m + 180;
  142.             //inisialisasi rumus limit rata-rata
  143.             limrata = m + 140;
  144.  
  145.             //pemanggilan grafik
  146.             AddToGraph((ulong) unixNow * 1000, tungku, standar, pengujian, maksimal, limrata);
  147.  
  148.          
  149.             //menampilkan nilai sensor pada label    
  150.            
  151.         }
  152.         private DateTime _start;
  153.         //inisialisasi untuk serial port
  154.         private void button1_Click(object sender, EventArgs e)
  155.         {
  156.             try
  157.             {
  158.                 if (button1.Text == "Sambungkan")
  159.                 {
  160.                     serialPort1.PortName = textBox1.Text;
  161.                     serialPort1.BaudRate = 19200;
  162.                     _start = DateTime.Now;
  163.                     timer1.Start();
  164.                     serialPort1.Open();
  165.                     if (serialPort1.IsOpen)
  166.                     {
  167.                         button1.Text = "Putuskan";
  168.                         isReadyAcceptingData = false;
  169.  
  170.                         ResetGraph();
  171.                     }
  172.                 }
  173.                 else if (button1.Text == "Putuskan")
  174.                 {
  175.                     if (serialPort1.IsOpen)
  176.                     {
  177.                         serialPort1.Close();
  178.                         button1.Text = "Sambungkan";
  179.                         stopwatch.Reset();
  180.  
  181.                         isReadyAcceptingData = false;
  182.                     }
  183.                 }
  184.             }
  185.             catch(Exception)
  186.             {
  187.                 MessageBox.Show("Error, coba periksa serial port");
  188.             }
  189.         }
  190.  
  191.         private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
  192.         {
  193.             char ch = e.KeyChar;
  194.  
  195.             if (!Char.IsDigit(ch) && ch != 8 && ch != 46)
  196.             {
  197.                 e.Handled = true;
  198.             }
  199.         }
  200.         //penggunaan button untuk memanggil fungsi penyimpanan excel
  201.         private void button2_Click(object sender, EventArgs e)
  202.         {
  203.             ExcelFunction();
  204.         }
  205.         //fungsi program untuk excel
  206.         public void ExcelFunction()
  207.         {
  208.             try
  209.             {
  210.                 Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
  211.  
  212.                 if (xlApp == null)
  213.                 {
  214.                     MessageBox.Show("Excel is not properly installed!!");
  215.                     return;
  216.                 }
  217.  
  218.                 Excel.Workbook xlWorkBook;
  219.                 Excel.Worksheet xlWorkSheet;
  220.                 object misValue = System.Reflection.Missing.Value;
  221.  
  222.                 xlWorkBook = xlApp.Workbooks.Add(misValue);
  223.                 xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
  224.  
  225.  
  226.                String currentDateTime = DateTime.Now.ToString("MM_dd_yyy-H_mm_ss");
  227.              
  228.                
  229.                 xlWorkSheet.Cells[1, 1] = "Waktu";
  230.                 xlWorkSheet.Cells[1, 2] = "TC 1";
  231.                 xlWorkSheet.Cells[1, 3] = "TC 2";
  232.                 xlWorkSheet.Cells[1, 4] = "TC 3";
  233.                 xlWorkSheet.Cells[1, 5] = "TC 4";
  234.                 xlWorkSheet.Cells[1, 6] = "TC 5";
  235.                 xlWorkSheet.Cells[1, 7] = "TC 6";
  236.                 xlWorkSheet.Cells[1, 8] = "TC 7";
  237.                 xlWorkSheet.Cells[1, 9] = "TC 8";
  238.                 xlWorkSheet.Cells[1, 10] = "TC 9";
  239.                 xlWorkSheet.Cells[1, 11] = "TC 10";
  240.                 xlWorkSheet.Cells[1, 12] = "Suhu Ruang";
  241.                 xlWorkSheet.Cells[1, 13] = "Rata Tungku";
  242.                 xlWorkSheet.Cells[1, 14] = "Rata Pengujian";
  243.  
  244.  
  245.                 for (int i = 0; i < datasensor1.Count; i++)
  246.                 {
  247.                     xlWorkSheet.Cells[i+2, 1] = datawaktu[i] + "";
  248.                     xlWorkSheet.Cells[i+2, 2] = datasensor1[i]+"";
  249.                     xlWorkSheet.Cells[i+2, 3] = datasensor2[i] + "";
  250.                     xlWorkSheet.Cells[i + 2, 4] = datasensor3[i] + "";
  251.                     xlWorkSheet.Cells[i + 2, 5] = datasensor4[i] + "";
  252.                     xlWorkSheet.Cells[i + 2, 6] = datasensor5[i] + "";
  253.                     xlWorkSheet.Cells[i + 2, 7] = datasensor6[i] + "";
  254.                     xlWorkSheet.Cells[i + 2, 8] = datasensor7[i] + "";
  255.                     xlWorkSheet.Cells[i + 2, 9] = datasensor8[i] + "";
  256.                     xlWorkSheet.Cells[i + 2, 10] = datasensor9[i] + "";
  257.                     xlWorkSheet.Cells[i + 2, 11] = datasensor10[i] + "";
  258.                     xlWorkSheet.Cells[i + 2, 12] = datasuhuruang[i] + "";
  259.                     xlWorkSheet.Cells[i + 2, 13] = datatungku[i] + "";
  260.                     xlWorkSheet.Cells[i + 2, 14] = datapengujian[i] + "";
  261.  
  262.  
  263.                 }
  264.  
  265.                 datawaktu.Clear();
  266.                 datasensor1.Clear();
  267.                 datasensor2.Clear();
  268.                 datasensor3.Clear();
  269.                 datasensor4.Clear();
  270.                 datasensor5.Clear();
  271.                 datasensor6.Clear();
  272.                 datasensor7.Clear();
  273.                 datasensor8.Clear();
  274.                 datasensor9.Clear();
  275.                 datasensor10.Clear();
  276.                 datasuhuruang.Clear();
  277.                 datatungku.Clear();
  278.                 datapengujian.Clear();
  279.                
  280.                                                              
  281.                 String namafile = "d:\\data/csharp-Excel-"+currentDateTime+".xls";
  282.                 label14.Text = namafile;
  283.                 xlWorkBook.SaveAs(namafile, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
  284.                 xlWorkBook.Close(true, misValue, misValue);
  285.                 xlApp.Quit();
  286.  
  287.                 Marshal.ReleaseComObject(xlWorkSheet);
  288.                 Marshal.ReleaseComObject(xlWorkBook);
  289.                 Marshal.ReleaseComObject(xlApp);
  290.  
  291.  
  292.             }
  293.             catch { MessageBox.Show("Error"); }
  294.  
  295.            MessageBox.Show("Excel file created , you can find the file d:\\csharp-Excel.xls");
  296.         }
  297.        
  298.         //interval waktu penyimpanan dalam excel
  299.         public void InitTimer()
  300.         {
  301.             Timer myTimer = new Timer();
  302.             myTimer.Tick += new EventHandler(timer2_Tick);
  303.             myTimer.Interval = 3000; //satuan menggunakan interval 100ms
  304.             myTimer.Start();
  305.         }
  306.         //fungsi untuk stopwatch
  307.         private void timer1_Tick(object sender, EventArgs e)
  308.         {
  309.             TimeSpan duration = DateTime.Now - _start;
  310.             label14.Text = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
  311.             string text = "";
  312.             text +=
  313.                 duration.Hours.ToString("00") + ":" +
  314.                 duration.Minutes.ToString("00") + ":" +
  315.                 duration.Seconds.ToString("00");
  316.                 label18.Text = text;
  317.                 String[] pilah = dataFromSerial.Split(';');
  318.                 sensor1 = float.Parse(pilah[0]);
  319.                 sensor2 = float.Parse(pilah[1]);
  320.                 sensor3 = float.Parse(pilah[2]);
  321.                 sensor4 = float.Parse(pilah[3]);
  322.                 sensor5 = float.Parse(pilah[4]);
  323.                 sensor6 = float.Parse(pilah[5]);
  324.                 sensor7 = float.Parse(pilah[6]);
  325.                 sensor8 = float.Parse(pilah[7]);
  326.                 sensor9 = float.Parse(pilah[8]);
  327.                 sensor10 = float.Parse(pilah[9]);
  328.  
  329.                 label1.Text = "Sensor 1 = " + pilah[0] + " C";
  330.                 label2.Text = "Sensor 2 = " + pilah[1] + " C";
  331.                 label3.Text = "Sensor 3 = " + pilah[2] + " C";
  332.                 label4.Text = "Sensor 4 = " + pilah[3] + " C";
  333.                 label5.Text = "Sensor 5 = " + pilah[4] + " C";
  334.                 label6.Text = "Sensor 6 = " + pilah[5] + " C";
  335.                 label7.Text = "Sensor 7 = " + pilah[6] + " C";
  336.                 label8.Text = "Sensor 8 = " + pilah[7] + " C";
  337.                 label9.Text = "Sensor 9 = " + pilah[8] + " C";
  338.                 label10.Text = "Sensor 10 = " + pilah[9] + " C";
  339.                 label11.Text = "Suhu Ruang = " + pilah[10] + " C";
  340.                 label12.Text = "Rata - Rata = " + pilah[11] + " C";
  341.                 label13.Text = "Rata - Rata = " + pilah[12] + " C";
  342.  
  343.            
  344.         }
  345.         //mengembalikan nilai serial untuk mematikan alarm
  346.         private void button_ack_Click(object sender, EventArgs e)
  347.         {
  348.             if (serialPort1.IsOpen)
  349.             {
  350.                 serialPort1.WriteLine("ACK");
  351.             }
  352.         }
  353.         //cek apakah data serial sudah masuk
  354.         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  355.         {
  356.             if (serialPort1.IsOpen)
  357.             {
  358.                 serialPort1.Close();
  359.  
  360.                 isReadyAcceptingData = false;
  361.             }
  362.         }
  363.  
  364.         //web browser selesai loading
  365.         private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
  366.         {
  367.             webBrowser1.Document.Body.Style = "overflow:hidden";
  368.         }
  369.  
  370.         //menampilkan grafik dari coding pada web browser
  371.         private void Form1_Shown(object sender, EventArgs e)
  372.         {
  373.             string cd = System.Environment.CurrentDirectory;
  374.             Uri uri = new Uri(String.Format("file:///{0}/chart.htm", cd));
  375.  
  376.             webBrowser1.Url = uri;
  377.         }
  378.  
  379.         //reset grafik
  380.         private void ResetGraph()
  381.         {
  382.             webBrowser1.Document.InvokeScript("clearData");
  383.         }
  384.         //fungsi pemanggilan variabel grafik dan mengubah nilainya dalam bentuk string
  385.         private void AddToGraph(ulong unixMs, double rataTungku, double standarTungku, double rataBenda, double limitMaksBenda, double limitRataBenda)
  386.         {
  387.             String[] args = {
  388.                 unixMs.ToString(),
  389.                 rataTungku.ToString(),
  390.                 standarTungku.ToString(),
  391.                 rataBenda.ToString(),
  392.                 limitMaksBenda.ToString(),
  393.                 limitRataBenda.ToString()
  394.             };
  395.  
  396.             webBrowser1.Document.InvokeScript("addValue", args);
  397.         }
  398.         //menunjukkan bahwa fungsi excel menggunakan timer2 sbg timernya
  399.         private void timer2_Tick(object sender, EventArgs e)
  400.         {
  401.             ExcelFunction();
  402.         }
  403.        
  404.      
  405.        
  406.  
  407.      
  408.     }
  409. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement