Code của giao diện và kết nối máy tính

Một phần của tài liệu Luận văn thạc sĩ Vật lý kỹ thuật: Thiết kế và chế tạo máy đo độ ồn dựa trên cảm biến âm microphone electret (Design and make a sound level meter by using a transducer electret microphone) (Trang 94 - 111)

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

// Thư viện để sài SerialPort using System.IO;

using System.IO.Ports;

using System.Xml;

//Dùng Excel using Excel = Microsoft.Office.Interop.Excel;

using CrystalDecisions.CrystalReports.Engine;

using CrystalDecisions.Shared;

using System.Diagnostics;

// chú ý : Khai báo thư viện này using ZedGraph;

// Bắt đầu code chính namespace GTMT_SOUND {

publicpartialclassForm1 : Form {

//Khai bao bien toan cuc SerialPort P = newSerialPort(); // Khai báo 1 Object SerialPort mới.

string InputData = String.Empty; // Khai báo string buff dùng cho hiển thị dữ liệu sau này.

delegatevoidSetTextCallback(string text); // Khai bao delegate SetTextCallBack voi tham so string

staticint counter = 0, sosanh_dem = 1000;

staticDataTable dt = newDataTable();

SetTextCallback d;

//static string strArray;

staticstring thoigian, file_thoigian;

staticint hang, cot;

staticbool ketnoi = false,bien_pause=true, pause_time=true;

int tickStart = 0;

string luudb;

double time=0;

double delay=0.5;

double[] GiaTriDeLay = newdouble[9] { 0.5, 1, 2, 5, 10, 15, 20, 25, 30 };

//Khia báo biến ch đồ thị GraphPane myPane;

RollingPointPairList list;

LineItem curve;

LineItem curve1;

IPointListEdit list1;

Scale xScale;

double luugiatri;

bool convert;

public Form1() {

InitializeComponent();

// Cài đặt các thông số cho COM // Mảng string port để chứ tất cả các cổng COM đang có trên máy tính string[] ports = SerialPort.GetPortNames();

// Thêm toàn bộ các COM đã tìm được vào combox cbCom cbCom.Items.AddRange(ports); // Sử dụng AddRange thay vì dùng foreach P.ReadTimeout = 1000;

// Khai báo hàm delegate bằng phương thức DataReceived của Object SerialPort;

// Cái này khi có sự kiện nhận dữ liệu sẽ nhảy đến phương thức DataReceive P.DataReceived += newSerialDataReceivedEventHandler(DataReceive);

// Cài đặt cho BaudRate //string[] BaudRate = { "76800", "57600", "14400" };

string[] BaudRate = { "57600"};

cbRate.Items.AddRange(BaudRate);

string[] Bien_Delay = { "0.5 s", "1 s", "2 s", "5 s", "10 s", "15 s", "20 s", "25 s", "30 s"};

cbDelay.Items.AddRange(Bien_Delay);

}

//=============================================================

//Sự kiện gán PortName cho COM privatevoid cbCom_SelectedIndexChanged(object sender, EventArgs e) {

if (P.IsOpen) { P.Close(); // Nếu đang mở Port thì phải đóng lại

} P.PortName = cbCom.SelectedItem.ToString(); // Gán PortName bằng COM đã chọn

}

//=============================================================

//Sự kiện gán Tốc độ Baud cho BaudRate privatevoid cbRate_SelectedIndexChanged(object sender, EventArgs e) {

if (P.IsOpen) { P.Close();

} P.BaudRate = Convert.ToInt32(cbRate.Text);

}

//==============================

//Sự kiện gán Delay cho cbDelay privatevoid cbDelay_SelectedIndexChanged(object sender, EventArgs e) {

if (P.IsOpen) { P.Write((cbDelay.SelectedIndex + 1).ToString());

} delay = GiaTriDeLay[cbDelay.SelectedIndex];

if (ketnoi == true) time = time - delay;

else time = - delay;

}

//=============================================================

// Hàm này được sự kiện nhận dữ liệu gọi đến. Mục đích để hiển thị privatevoid DataReceive(object obj, SerialDataReceivedEventArgs e) {

InputData = P.ReadExisting();

if (InputData != String.Empty) // Neus InputData khac ky tu trang, Empty: troongs {

if (ketnoi == true&& bien_pause == true) {

//txtIn.Text = InputData; // Ko dùng đc như thế này vì khác threads . SetText(InputData); // Chính vì vậy phải sử dụng ủy quyền tại đây. Gọi delegate đã khai báo trước đó.

} } }

//=============================================================

// Hàm DataReceive: Nhận dữ liệu privatevoid SetText(string text) {

if (this.txtadc.InvokeRequired) //InvokeRequired: goij yeeu caauf {

try

{ d = newSetTextCallback(SetText); // khởi tạo 1 delegate mới gọi đến SetText

this.Invoke(d, newobject[] { text });

} catch (Exception ex)

{ MessageBox.Show("Lỗi Hệ Thống, Vui Lòng Thử Kết Nối Lại", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);

} } else

{ if (text == "\n") { this.txtadc.Text = "";

counter++;

if ((counter <= sosanh_dem)) {

// Add thêm hàng cho dataGridView1 dataGridView1.Rows.Add();

} } elseif (text == "\t") { DrawChart(20, 0);

} else

{ //kiểm tra và nhận giá trị Delay từ phần cứng gửi đến if (text == "A")

cbDelay.SelectedIndex = 0;

elseif (text == "B") cbDelay.SelectedIndex = 1;

elseif (text == "C") cbDelay.SelectedIndex = 2;

elseif (text == "D") cbDelay.SelectedIndex = 3;

elseif (text == "E") cbDelay.SelectedIndex = 4;

elseif (text == "F") cbDelay.SelectedIndex = 5;

elseif (text == "G") cbDelay.SelectedIndex = 6;

elseif (text == "H") cbDelay.SelectedIndex = 7;

elseif (text == "I") cbDelay.SelectedIndex = 8;

///////////

else this.txtadc.Text += text;

}

//Đưa dữ liệu lưu vào dataGridView1 if (counter > sosanh_dem)

{ counter = sosanh_dem;

for (int i = 0; i < sosanh_dem - 1; i++) {

dataGridView1.Rows[i].Cells[1].Value = dataGridView1.Rows[i + 1].Cells[1].Value;

dataGridView1.Rows[i].Cells[2].Value = dataGridView1.Rows[i + 1].Cells[2].Value;

} dataGridView1.Rows[sosanh_dem - 1].Cells[1].Value = thoigian;

dataGridView1.Rows[sosanh_dem - 1].Cells[2].Value = txtadc.Text;

} elseif (counter <= sosanh_dem + 2) {

dataGridView1.Rows[counter - 1].Cells[0].Value = counter;

dataGridView1.Rows[counter - 1].Cells[1].Value = thoigian;

dataGridView1.Rows[counter - 1].Cells[2].Value = txtadc.Text;

this.dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.Rows.Count - 1;

} } txtCounter.Text = counter.ToString();

try { luudb = dataGridView1.Rows[counter - 1].Cells[2].Value.ToString();

} catch (Exception ex) {

MessageBox.Show("Lỗi Hệ Thống, Vui Lòng Thử Kết Nối Lại", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);

} }

//=============================================================

//Khởi tạo khi Load Form privatevoid Form1_Load(object sender, EventArgs e) // sẽ được gọi khi mở chương trình.

{ cbCom.SelectedIndex = 0;

cbRate.SelectedIndex = 0;

cbDelay.SelectedIndex = 4;

// Hiện thị Status cho Pro tís status.ForeColor = Color.Red;

status.Text = "Hãy chọn 1 cổng COM để kết nối.";

btNgat.Enabled = false;

btDeleteGraph.Enabled = false;

btExportGraph.Enabled = false;

//btXoa.Enabled = false;

checkPause.Enabled = false;

dataGridView1.RowHeadersVisible = true;

dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

txtSampling.Text = sosanh_dem.ToString();

progressBar1.Minimum = 0;

txtCounter.Text = counter.ToString();

aboutToolStripMenuItem.Visible = false;

timer1.Enabled = true;

KhoiTaoZedGraph();

} //==================

privatevoid KhoiTaoZedGraph() {

// khi khởi động sẽ được chạy biểu đồ myPane = zedGraphControl1.GraphPane; // Khai báo sửa dụng Graph loại GraphPane;

// Các thông tin cho đồ thị của mình myPane.Title.Text = "Biểu Đồ Độ Ồn Đo Được";

myPane.XAxis.Title.Text = "Thời Gian (s)";

myPane.YAxis.Title.Text = "dB";

//Màu nền cho biểu đồ

zedGraphControl1.GraphPane.Chart.Fill = newFill(Color.DarkSlateBlue, Color.DarkBlue, 90.0f); //màu nền như nhau cho tát cả

// Định nghĩa list để vẽ đồ thị. Để các bạn hiểu rõ cơ chế làm việc ở đây khai báo 2 list điểm <=> 2 đường đồ thị

list = newRollingPointPairList(1000000);

// dòng dưới là định nghĩa curve để vẽ.

curve = myPane.AddCurve("Dạng Sóng", list, Color.Yellow, SymbolType.None);

// Color màu đỏ, đặc trưng cho đường 1 // SymbolType là kiểu biểu thị đồ thị : điểm, đường tròn, tam giác ....Color màu Xanh, đặc trưng cho đường 2

// ví dụ khoảng cách là 50ms 1 lần timer1.Interval = 1;

// Định hiện thị cho trục thời gian (Trục X) myPane.XAxis.Scale.Min = 0; // Min = 0;

myPane.XAxis.Scale.Max = 200; // Mã = 30;

myPane.XAxis.Scale.MinorStep = 1; // Đơn vị chia nhỏ nhất 1 myPane.XAxis.Scale.MajorStep = 10; // Đơn vị chia lớn 5

myPane.YAxis.Scale.Min = 0;

myPane.YAxis.Scale.Max = 140;

myPane.YAxis.Scale.MinorStep = 2;

myPane.YAxis.Scale.MajorStep = 10;

// Gọi hàm xác định cỡ trục zedGraphControl1.AxisChange();

// Khởi động timer về vị trí ban đầu tickStart = Environment.TickCount;

}

//=============================================================

// Sự kiện khi nhấn nút Kết Nối //int check = 0;

privatevoid btKetNoi_Click(object sender, EventArgs e) {

try { pause_time = false;

P.Open();

if (P.IsOpen) { P.Write((cbDelay.SelectedIndex + 1).ToString());

}

// Hiện thị Status

status.ForeColor = Color.DarkMagenta;

status.Text = "Đang kết nối với cổng " + cbCom.SelectedItem.ToString();

btNgat.Enabled = true;

btKetNoi.Enabled = false;

btUpdate.Enabled = false;

cbCom.Enabled = false;

cbRate.Enabled = false;

btDeleteGraph.Enabled = true;

btExportGraph.Enabled = true;

ketnoi = true;

checkPause.Enabled = true;

txtSampling.Text = sosanh_dem.ToString();

btSamLing.Enabled = false;

txtSampling.ReadOnly = true;

//timer1.Enabled = true;

//if (check == 0) { tickStart = Environment.TickCount; check = 1; } if (P.IsOpen)

{ P.Write("a");

} } catch (Exception ex) {

status.ForeColor = Color.Red;

MessageBox.Show("Không Kết Nối Được, Vui Lòng Kiểm Tra Cổng "+

cbCom.SelectedItem.ToString(), "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);

btNgat.Enabled = false;

btKetNoi.Enabled = true;

} } //=============================================================

//Sự kiện khi nhấn nút ngắt kết nối privatevoid btNgat_Click(object sender, EventArgs e) {

pause_time = true;

NgatKetNoi();

}

//====================================

//Chương trình con Ngắt Kết Noí publicvoid NgatKetNoi()

{ if (P.IsOpen) { P.Write("b");

P.Close();

}

status.ForeColor = Color.DarkMagenta;

status.Text = "Đã ngắt kết nối";

ketnoi = false;

checkPause.Enabled = false;

checkPause.Checked = false;

btKetNoi.Enabled = true;

btNgat.Enabled = false;

btUpdate.Enabled = true;

cbCom.Enabled = true;

cbRate.Enabled = true;

btExport.Enabled = true;

btXoa.Enabled = true;

btSamLing.Enabled = true;

txtSampling.ReadOnly = false;

txtadc.Text = "";

}

//=============================================================

//Không cần quan tâm đến cái này privatevoid aboutToolStripMenuItem_Click(object sender, EventArgs e) {

Form2 frm = newForm2();

frm.ShowDialog();

}

//============================================================

//Sự kiện thoát privatevoid thoátToolStripMenuItem_Click(object sender, EventArgs e)

{ DialogResult kq = MessageBox.Show("Bạn muốn thoát chương trình?", "Thoát", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

if (kq == DialogResult.Yes) {

if (P.IsOpen) { P.Write("b");

P.Close();

} this.Close();

} } //================================================

privatevoid Form1_FormClosing(Object sender, FormClosingEventArgs e) {

if (P.IsOpen) { P.Write("b");

P.Close();

} }

//===========================

//Sự kiện Update COM privatevoid btUpdate_Click(object sender, EventArgs e) {

cbCom.Items.Clear();

string[] ports = SerialPort.GetPortNames();

cbCom.Items.AddRange(ports);

cbCom.SelectedIndex = 0;

} //==========================================

//Chương trình con xuất dữ liệu ra Excel privatevoid ExportDataGridView_Excel(DataGridView dataGridView1, string file_name, string sheet_name, string title_name)

{ progressBar1.Maximum = dataGridView1.Rows.Count;

Excel.ApplicationClass xlApp;

Excel.Worksheet xlSheet;

Excel.Workbook xlBook;

//doi tuong Trống để thêm vào xlApp sau đó lưu lại sau object missValue = System.Reflection.Missing.Value;

//khoi tao doi tuong Com Excel moi xlApp = new Excel.ApplicationClass();

xlBook = xlApp.Workbooks.Add(missValue);

//su dung Sheet dau tien de thao tac xlSheet = (Excel.Worksheet)xlBook.Worksheets.get_Item(1);

xlSheet.Name = sheet_name;

//không cho hiện ứng dụng Excel lên để tránh gây đơ máy xlApp.Visible = false;

xlApp.DisplayAlerts = false;

string path = file_name;

//--- // Tạo title đầu tiên Excel.Range title = xlSheet.get_Range("A2", "C1");

title.MergeCells = true;

title.Value2 = title_name;

title.Font.Bold = true;

title.Font.Name = "Tahoma";

title.Font.Size = "24";

title.RowHeight = 20;

title.Interior.ColorIndex = 25;//20=xanh dương nhat, 25=xanh dương dam, 30=nau,24-tim nhat nhat,23=xanh duong tuoi,22=cam,21=tim dam,15=den nhat title.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

title.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter;

//set mau chu header title.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Magenta);

//thiet lap thuoc tinh cho cac Header Excel.Range header = xlSheet.get_Range("A3", "C3");

header.Font.Name = "Tahoma";

header.Font.Bold = true;

header.Font.Size = 14;

header.Interior.ColorIndex = 20;

header.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

header.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter;

header.RowHeight = 30;

// Kẻ viền header header.Borders.LineStyle = Excel.Constants.xlSolid;

//Freeze Top Row : Cố định dòng trong Excel Excel.Range myCell = (Excel.Range)xlSheet.Cells[4, 1];

myCell.Activate();

myCell.Application.ActiveWindow.FreezePanes = true;

// storing header part in Excel for (cot = 0; cot < dataGridView1.Columns.Count; cot++) {

xlSheet.Cells[3, cot + 1] = dataGridView1.Columns[cot].HeaderText;

} // storing Each row and column value to excel sheet for (hang = 0; hang < dataGridView1.Rows.Count; hang++) //

dataGridView1.Rows.Count-2 neu dòng cuối cùng sai giá trị neen khoong laays {

for (cot = 0; cot < dataGridView1.Columns.Count; cot++)// khong lay gia tri cua cot cuoi cung trong dataGridView1 thì dataGridView1.Columns.Count - 1

{ progressBar1.Value = hang + 1;

//dien gia tri vao cell xlSheet.Cells[hang + 4, cot + 1] =

dataGridView1.Rows[hang].Cells[cot].Value;

//autofit độ rộng cho các cột ((Excel.Range)xlSheet.Cells[hang + 4, cot + 1]).EntireColumn.AutoFit();

//Canh le cho cac hang ((Excel.Range)xlSheet.Cells[hang + 4, cot + 1]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

//font

((Excel.Range)xlSheet.Cells[hang + 4, cot + 1]).Font.Name = "Tahoma";

//Size ((Excel.Range)xlSheet.Cells[hang + 4, cot + 1]).Font.Size = 12;

//Ke duong vien ((Excel.Range)xlSheet.Cells[hang + 4, cot + 1]).Borders.LineStyle = Excel.Constants.xlSolid;

} } //--- //save file

xlBook.SaveAs(path, Excel.XlFileFormat.xlWorkbookNormal, missValue, missValue, missValue, missValue, Excel.XlSaveAsAccessMode.xlExclusive, missValue, missValue, missValue, missValue, missValue);

xlBook.Close(true, missValue, missValue);

xlApp.Quit();

// release cac doi tuong COM releaseObject(xlSheet);

releaseObject(xlBook);

releaseObject(xlApp);

} //===============================

staticpublicvoid releaseObject(object obj) {

try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);

obj = null;

} catch (Exception ex) {

obj = null;

thrownewException("Exception Occured while releasing object " + ex.ToString());

} finally { GC.Collect();

} }

//=========================

//Chương trình con Xuất file ảnh đồ thị privatevoid ExportGraph()

{ //create Bitmap recipient Bitmap bm = newBitmap(1, 1);

//measure the chart to size the bitmap using (Graphics g = Graphics.FromImage(bm)) this.zedGraphControl1.GraphPane.AxisChange(g);

//save the file of the chart on disk (PNG format) this.zedGraphControl1.GraphPane.GetImage().Save("D:\\Noise Level_" + file_thoigian+".png", System.Drawing.Imaging.ImageFormat.Png);

} //=============================================

privatevoid btExportGraph_Click(object sender, EventArgs e)

{ // Hiện thị Status progressBar1.Value = progressBar1.Minimum;

status.ForeColor = Color.Red;

status.Text = "Đang xuất file excel ... ... ... Vui lòng chờ cho đến khi hoàn thành!";

ExportGraph();

status.ForeColor = Color.DarkMagenta;

status.Text = "Đã xuất ra file ảnh đồ thị trong ổ " + "D:\\Noise Level_" + file_thoigian + ".png";

progressBar1.Value = progressBar1.Maximum;

}

//============================

//Sự kiện nhấn nút Export Excel privatevoid btExport_Click(object sender, EventArgs e) {

if (dataGridView1.Rows.Count > 0) {

if (ketnoi == true) checkPause.Checked = true;

Export();

//}

} else MessageBox.Show("Chưa Có Dữ Liệu", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);

} //=============================

publicvoid Export() {

// Hiện thị Status

status.ForeColor = Color.Red;

status.Text = "Đang xuất file excel ... ... ... Vui lòng chờ cho đến khi hoàn thành!";

ExportDataGridView_Excel(dataGridView1, "D:\\Noise Level_" + file_thoigian,

"Data", "Noise Level Meter");

status.ForeColor = Color.DarkMagenta;

status.Text = "Đã xuất ra file excel trong ổ " + "D:\\Noise Level_" + file_thoigian;

}

//=================================================

//Sự kiện khi nhấn nút xóa privatevoid btXoa_Click(object sender, EventArgs e) {

if (dataGridView1.Rows.Count > 0) {

DialogResult kq = MessageBox.Show("Bạn muốn xóa tất cả dữ liệu!", "Cảnh Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

if (kq == DialogResult.Yes) {

if (ketnoi == true) checkPause.Checked = true;

status.ForeColor = Color.Red;

status.Text = "Đang xóa dữ liệu ... ... ...Vui lòng chờ cho đến khi xóa xong!";

//btExport.Enabled = false;

Remove_DataGridView();

//btXoa.Enabled = false;

txtadc.Text = "";

counter = 0;

txtSampling.Text = sosanh_dem.ToString();

txtCounter.Text = counter.ToString();

status.ForeColor=Color.DarkMagenta;

status.Text = "Xóa dữ liệu thành công!";

} } else

{ MessageBox.Show("Chưa Có Dữ Liệu", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);

} }

//============================================

//Chương trình con xóa dữ liệu publicvoid Remove_DataGridView() {

progressBar1.Maximum = dataGridView1.Rows.Count;

while (dataGridView1.Rows.Count >= 1) {

dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 1);

if (dataGridView1.Rows.Count > 1) progressBar1.Value = dataGridView1.Rows.Count - 1;

} progressBar1.Value = 0;

} //===============================

//Sự kiện lấy mẫu privatevoid btSamLing_Click(object sender, EventArgs e) {

if (txtSampling.Text != sosanh_dem.ToString()) {

bool kiemtra; int tam;

kiemtra = Int32.TryParse(txtSampling.Text, out tam);

if (kiemtra == false || tam < 2 || tam > 2000000000) {

MessageBox.Show("Giá Trị Nhập Phải Nằm Trong Khoảng [2 - 2000000000]", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);

txtSampling.Text = sosanh_dem.ToString();

} else

{ DialogResult kq = MessageBox.Show("Bạn Muốn Cập Nhật Số Lượng Lấy Mẫu Tối Đa Là: " + tam.ToString()+" Mẫu", "Thông Báo", MessageBoxButtons.YesNo,

MessageBoxIcon.Question);

if (kq == DialogResult.Yes) {

sosanh_dem = tam;

txtSampling.Text = tam.ToString();

progressBar1.Minimum = 0;

//giam so dong dataGridView1 progressBar1.Maximum = dataGridView1.Rows.Count;

while (dataGridView1.Rows.Count > sosanh_dem) {

dataGridView1.Rows.RemoveAt(dataGridView1.Rows.Count - 1);

counter--;

if (dataGridView1.Rows.Count > 1) progressBar1.Value = dataGridView1.Rows.Count - 1;

} progressBar1.Value = 0;

txtCounter.Text = counter.ToString();

txtSampling.Text = sosanh_dem.ToString();

} else

{ txtSampling.Text = sosanh_dem.ToString();

} }

} } //================================

//Sự kiện tạm dừng nhận dữ liệu privatevoid checkPause_CheckedChanged(object sender, EventArgs e) {

txtSampling.Text = sosanh_dem.ToString();

if (checkPause.Checked == true) {

checkPause.ForeColor = Color.Red;

bien_pause = false;

btSamLing.Enabled = true;

txtSampling.ReadOnly = false;

txtadc.Text = "";

if (P.IsOpen) {

P.Write("b");

} status.ForeColor = Color.DarkMagenta;

status.Text = "Tạm dừng nhận dữ liệu";

} else

{ btSamLing.Enabled = false;

txtSampling.ReadOnly = true;

checkPause.ForeColor = Color.Blue;

bien_pause = true;

btExportGraph.Enabled = true;

btSamLing.Enabled = false;

txtSampling.ReadOnly = true;

txtadc.Text = "";

if (P.IsOpen) { P.Write("a");

} status.ForeColor = Color.DarkMagenta;

status.Text = "Đang kết nối với cổng " + cbCom.SelectedItem.ToString();

} }

////////////////////////////////////////////////////////////////

//Sự kiện mở thư mục chứa file Excel lưu dữ liệu privatevoid openToolStripMenuItem_Click(object sender, EventArgs e) {

string Path = "D:\\"; // tên đường dẫn tơi thư mục bạn muốn mở Process.Start(@"D:\", Path);

}

//======================================

// Để tiện cho việc sử dụng chúng ta sẽ xây dựng 1 hàm draw phục vụ cho việc vẽ đồ thị publicvoid DrawChart(double setpoint1, double setpoint2) // Ở ví dụ này chúng ta có 2 đường

{

if (zedGraphControl1.GraphPane.CurveList.Count <= 0)

return;

// Kiểm tra việc khởi tạo các đường curve // Đưa về điểm xuất phát

curve1 = zedGraphControl1.GraphPane.CurveList[0] asLineItem;

if (curve1 == null) return;

// list chứa các điểm.

// Get the PointPairList list1 = curve1.Points asIPointListEdit;

//IPointListEdit list2 = curve2.Points as IPointListEdit;

if (list1 == null)

return;

// Time được tính bằng ms if (pause_time == false) time = time+delay;

// Tính toán giá trị hiện thị

// Muốn hiện thị cái gì thì chỉ việc thay vào setpointx //list1.Add(time, setpoint1); // Đây chính là hàm hiển thị dữ liệu của mình lên đồ thị // list2.Add(time, setpoint2); // Đây chính là hàm hiển thị dữ liệu của mình lên đồ thị

// Ko vẽ setpoint2 mà thử vẽ đồ thị hình sin với 3 seconds per cycle convert = Double.TryParse(luudb, out luugiatri);

if (convert != false) {

list1.Add(time, luugiatri);

}

// đoạn chương trình thực hiện vẽ đồ thị xScale = zedGraphControl1.GraphPane.XAxis.Scale;

if (time > xScale.Max - xScale.MajorStep)

{ // Nếu ko muốn dịch chuyển mà chạy bắt đầu từ 0 thì : xScale.Min = 0;

if (btCompactScroll.Text == "Compact") {

xScale.Max = time + xScale.MajorStep;

xScale.Min = xScale.Max - 200.0;

} else

{ xScale.Max = time + xScale.MajorStep;

xScale.Min = 0;

}

} // Vẽ đồ thị zedGraphControl1.AxisChange();

// Force a redraw zedGraphControl1.Invalidate();

} //=================================

//=================================

privatevoid btCompactScroll_Click(object sender, EventArgs e) {

if (btCompactScroll.Text == "Compact") btCompactScroll.Text = "Scroll";

else btCompactScroll.Text = "Compact";

} //===============================

//Đồng hồ thời gian

privatevoid timer1_Tick(object sender, EventArgs e) {

thoigian = DateTime.Now.ToString("dd/MM/yyyy_HH:mm:ss:fff");

file_thoigian = DateTime.Now.ToString("dd-MM-yyyy_HH-mm-ss");

textBox1.Text = DateTime.Now.ToString("HH:mm:ss");

}

privatevoid btDeleteGraph_Click(object sender, EventArgs e) {

if (zedGraphControl1.GraphPane.CurveList.Count <= 0)

{ MessageBox.Show("Chưa Vẽ Đồ Thị", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);

} else

{ DialogResult kq = MessageBox.Show("Bạn muốn xóa đồ thị !", "Cảnh Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

if (kq == DialogResult.Yes) {

if (ketnoi == true) checkPause.Checked = true;

btExportGraph.Enabled = false;

status.ForeColor = Color.Red;

status.Text = "Đang xóa đồ thị ...Vui lòng chờ cho đến khi xóa xong!";

progressBar1.Value = progressBar1.Minimum;

time = -delay;

list1.Clear();

//list.Clear();

myPane.XAxis.Scale.Min = 0;

myPane.XAxis.Scale.Max = 200;

// Gọi hàm xác định cỡ trục // Khởi động timer về vị trí ban đầu tickStart = Environment.TickCount;

DrawChart(20, 0);

//zedGraphControl1.Invalidate();

//KhoiTaoZedGraph();

status.ForeColor = Color.DarkMagenta;

status.Text = "Xóa đồ thị thành công!";

progressBar1.Value = progressBar1.Maximum;

} } } } }

Một phần của tài liệu Luận văn thạc sĩ Vật lý kỹ thuật: Thiết kế và chế tạo máy đo độ ồn dựa trên cảm biến âm microphone electret (Design and make a sound level meter by using a transducer electret microphone) (Trang 94 - 111)

Tải bản đầy đủ (PDF)

(113 trang)