Huong Dan Ve Do Thi Voi VC

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

Ng ng Hin Hc Vin Hi Qun 2011

HNG DN V TH VI VISUAL STUDIO C# 2008


Hm nay, ngy 05/08/2011 ng l 1 ngy bun nh ch cht ( con ch nh bn cnh b nu d cy ^_^ ), li ngi vit TUT cho anh em engineer mi vo ngh. 1. Gii thiu Trong TUT u ti hng dn cc bn giao tip COM vi vi iu khin. Giao tip nh vy coi nh l xong ri. Nhng m chng ta thy y nhn c d liu tt ri nhng phi v c Graph th mi gii quyt c bi ton. Trong 1 ln tnh c thy 1 ng anh v th vi VB6 nhn thy m thm c ngh ng ny tht l P-r-fc-sn-n. Nhng sau khi tm hiu th ha ra ng ta si phn mm v teachar g ( hic khng nh! ). Ti mi mon men ln mng tm cho C# th c cng kh nhiu cng c mnh m cho v th, nhn rt chuyn nghip c nh l dng Excel v y. K n l c ZedGraph, Component one Trong khun kh ti liu ny ti s c gng hng dn chi tit v th vi ZedGraph, tuy khng p v pro bng Component One nhng l cng c mnh v code nn rt d lm ch code ca mnh. Hi vng ti liu s gip ch c anh em mi vo ngh chi vi iu khin v tp code vi C# 2. To Project

File / New / Project. V t tn cho n

Ng ng Hin Hc Vin Hi Qun 2011

s dng c control ZedGraph chng ta phi add n vo Toolbox bng cch

Nhp phi chut vo khu vc trng, chn Choose Items.

Hin ra 1 ca s mi v bn phi nhn Brownse ch ra ng dn n ZedGraph.dll

Ng ng Hin Hc Vin Hi Qun 2011

Ng ng Hin Hc Vin Hi Qun 2011


Khi ToolBox c Control nh bn di l OK ri.

Em n y, ch vic ko th vo Form l OK

Sau khi ko th v thm cc button c nh hnh bn di.

Vy l phn giao din l n ri, by gi ko thm timer ra, mc ch to thi gian chy trong phn th.

Ng ng Hin Hc Vin Hi Qun 2011

Timer th hin y l c.

3. Vit CODE - Trc ht thm th vin vo


// ch : Khai bo th vin ny using ZedGraph;

Khai bo trc Form1

// Khai bo 1 bin dng cho timer, chy ct thi gian tnh bng ms int tickStart = 0; public Form1() { InitializeComponent(); }

p vo tiu ly s kin Load v xem code Form1_Load bn di.

private void Form1_Load(object sender, EventArgs e) { // khi khi ng s c chy GraphPane myPane = zedGraphControl1.GraphPane; // Khai bo sa dng Graph loi GraphPane; // Cc thng tin cho th ca mnh myPane.Title.Text = "y l title trn cng, bn thay i cho ph hp vi chng trnh"; myPane.XAxis.Title.Text = "Thi gian ct X"; myPane.YAxis.Title.Text = "Tiu ct Y"; // nh ngha list v th. cc bn hiu r c ch lm vic y khai bo 2 list im <=> 2 ng th RollingPointPairList list1 = new RollingPointPairList(1200);

Ng ng Hin Hc Vin Hi Qun 2011


// y s dng list vi 1200 im (c th thm nhiu liu ti y) RollingPointPairList list2 = new RollingPointPairList( 1200 ); // dng di l nh ngha curve v. LineItem curve1 = myPane.AddCurve("ng 1", list1, Color.Red, SymbolType.None); // Color mu , c trng cho ng 1 // SymbolType l kiu biu th th : im, ng trn, tam gic .... LineItem curve2 = myPane.AddCurve("ng 2", list2, Color.Blue, SymbolType.None); // Color mu Xanh, c trng cho ng 2 // v d khong cch l 50ms 1 ln timer1.Interval = 50; //timer1.Enabled = true; // Kch hot cho timer1 //timer1.Start(); // Chy Timer1 // nh hin th cho trc thi gian (Trc X) myPane.XAxis.Scale.Min = 0; // Min = 0; myPane.XAxis.Scale.Max = 30; // M = 30; myPane.XAxis.Scale.MinorStep = 1; // n v chia nh nht 1 myPane.XAxis.Scale.MajorStep = 5; // n v chia ln 5 // Gi hm xc nh c trc zedGraphControl1.AxisChange(); // Khi ng timer v v tr ban u tickStart = Environment.TickCount; }

// tin cho vic s dng chng ta s xy dng 1 hm draw phc v cho vic v th public void draw(double setpoint1, double setpoint2) // v d ny chng ta c 2 ng { if (zedGraphControl1.GraphPane.CurveList.Count <= 0) return; // Kim tra vic khi to cc ng curve // a v im xut pht LineItem curve1 = zedGraphControl1.GraphPane.CurveList[0] as LineItem; LineItem curve2 = zedGraphControl1.GraphPane.CurveList[1] as LineItem; if (curve1 == null) return; if (curve2 == null) return; // list cha cc im. // Get the PointPairList IPointListEdit list1 = curve1.Points as IPointListEdit; IPointListEdit list2 = curve2.Points as IPointListEdit;

Ng ng Hin Hc Vin Hi Qun 2011


if (list1 == null) return; if (list2 == null) return; // Time c tnh bng ms double time = (Environment.TickCount - tickStart) / 1000.0; // Tnh ton gi tr hin th // Mun hin th ci g th ch vic thay vo setpointx list1.Add(time, setpoint1); // y chnh l hm hin th d liu ca mnh ln th // list2.Add(time, setpoint2); // y chnh l hm hin th d liu ca mnh ln th // Ko v setpoint2 m th v th hnh sin vi 3 seconds per cycle list2.Add(time, Math.Sin(2.0 * Math.PI * time / 3.0)); // on chng trnh thc hin v th Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale; if (time > xScale.Max - xScale.MajorStep) { //xScale.Max = time + xScale.MajorStep; // xScale.Min = xScale.Max - 30.0; // Timer chy qua 30 s t ng dch chuyn tnh tin sang tri // Nu ko mun dch chuyn m chy bt u t 0 th : xScale.Min = 0; if (button3.Text == "COMPACT") { xScale.Max = time + xScale.MajorStep; xScale.Min = xScale.Max - 30.0; } else { xScale.Max = time + xScale.MajorStep; xScale.Min = 0; } } // V th zedGraphControl1.AxisChange(); // Force a redraw zedGraphControl1.Invalidate(); }

gi hm v chng ta s kch hot cho Timer1 chy, p vo Timer1 ly s kin, sau vit code nh code tham kho bn di.
private void timer1_Tick(object sender, EventArgs e) { draw(5,20); }

Ng ng Hin Hc Vin Hi Qun 2011


cc bn hiu hn v c ch lm vic, ti thm cc Button iu khin mc ch ca n l : Cho m Timer bt u v th bng START, cho hin th 2 dng chy thi gian bng button COMPACT v thot chng trnh bng Exit

Cc bn c th tham kho code mu.


int check = 0; // cho khi nhn Start l s bt u t im 0 private void button1_Click(object sender, EventArgs e) { if (button1.Text == "START") { timer1.Enabled = true; button1.Text = "STOP"; // Khi ng timer v v tr ban u if (check == 0) { tickStart = Environment.TickCount; check = 1; } } else { timer1.Enabled = false; button1.Text = "START"; } } private void button2_Click(object sender, EventArgs e) { this.Close(); } private void button3_Click(object sender, EventArgs e) { if (button3.Text == "COMPACT") button3.Text = "SROLL"; else button3.Text = "COMPACT"; } private void tcGiToolStripMenuItem_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.ShowDialog(); }

4. Full CODE tham kho


using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Linq; System.Text; System.Windows.Forms;

Ng ng Hin Hc Vin Hi Qun 2011


// ch : Khai bo th vin ny using ZedGraph; namespace DOTHI_HIENCLUBVN { public partial class Form1 : Form { // Khai bo 1 bin dng cho timer, chy ct thi gian tnh bng ms int tickStart = 0; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // khi khi ng s c chy GraphPane myPane = zedGraphControl1.GraphPane; // Khai bo sa dng Graph loi GraphPane; // Cc thng tin cho th ca mnh myPane.Title.Text = "y l title trn cng, bn thay i cho ph hp vi chng trnh"; myPane.XAxis.Title.Text = "Thi gian ct X"; myPane.YAxis.Title.Text = "Tiu ct Y"; // nh ngha list v th. cc bn hiu r c ch lm vic y khai bo 2 list im <=> 2 ng th RollingPointPairList list1 = new RollingPointPairList(1200); // y s dng list vi 1200 im (c th thm nhiu liu ti y) RollingPointPairList list2 = new RollingPointPairList( 1200 ); // dng di l nh ngha curve v. LineItem curve1 = myPane.AddCurve("ng 1", list1, Color.Red, SymbolType.None); // Color mu , c trng cho ng 1 // SymbolType l kiu biu th th : im, ng trn, tam gic .... LineItem curve2 = myPane.AddCurve("ng 2", list2, Color.Blue, SymbolType.None); // Color mu Xanh, c trng cho ng 2 // v d khong cch l 50ms 1 ln timer1.Interval = 50; //timer1.Enabled = true; // Kch hot cho timer1 //timer1.Start(); // Chy Timer1 // nh hin th cho trc thi gian (Trc X) myPane.XAxis.Scale.Min = 0; // Min = 0; myPane.XAxis.Scale.Max = 30; // M = 30; myPane.XAxis.Scale.MinorStep = 1; // n v chia nh nht 1 myPane.XAxis.Scale.MajorStep = 5; // n v chia ln 5 // Gi hm xc nh c trc zedGraphControl1.AxisChange(); // Khi ng timer v v tr ban u tickStart = Environment.TickCount; }

Ng ng Hin Hc Vin Hi Qun 2011


// tin cho vic s dng chng ta s xy dng 1 hm draw phc v cho vic v th public void draw(double setpoint1, double setpoint2) // v d ny chng ta c 2 ng { if (zedGraphControl1.GraphPane.CurveList.Count <= 0) return; // Kim tra vic khi to cc ng curve // a v im xut pht LineItem curve1 = zedGraphControl1.GraphPane.CurveList[0] as LineItem; LineItem curve2 = zedGraphControl1.GraphPane.CurveList[1] as LineItem; if (curve1 == null) return; if (curve2 == null) return; // list cha cc im. // Get the PointPairList IPointListEdit list1 = curve1.Points as IPointListEdit; IPointListEdit list2 = curve2.Points as IPointListEdit; if (list1 == null) return; if (list2 == null) return; // Time c tnh bng ms double time = (Environment.TickCount - tickStart) / 1000.0; // Tnh ton gi tr hin th // Mun hin th ci g th ch vic thay vo setpointx list1.Add(time, setpoint1); // y chnh l hm hin th d liu ca mnh ln th // list2.Add(time, setpoint2); // y chnh l hm hin th d liu ca mnh ln th // Ko v setpoint2 m th v th hnh sin vi 3 seconds per cycle list2.Add(time, Math.Sin(2.0 * Math.PI * time / 3.0)); // on chng trnh thc hin v th Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale; if (time > xScale.Max - xScale.MajorStep) { //xScale.Max = time + xScale.MajorStep; // xScale.Min = xScale.Max - 30.0; // Timer chy qua 30 s t ng dch chuyn tnh tin sang tri // Nu ko mun dch chuyn m chy bt u t 0 th : xScale.Min = 0; if (button3.Text == "COMPACT") { xScale.Max = time + xScale.MajorStep; xScale.Min = xScale.Max - 30.0; } else {

10

Ng ng Hin Hc Vin Hi Qun 2011


xScale.Max = time + xScale.MajorStep; xScale.Min = 0; } } // V th zedGraphControl1.AxisChange(); // Force a redraw zedGraphControl1.Invalidate(); } private void timer1_Tick(object sender, EventArgs e) { draw(5,20); } int check = 0; // cho khi nhn Start l s bt u t im 0 private void button1_Click(object sender, EventArgs e) { if (button1.Text == "START") { timer1.Enabled = true; button1.Text = "STOP"; // Khi ng timer v v tr ban u if (check == 0) { tickStart = Environment.TickCount; check = 1; } } else { timer1.Enabled = false; button1.Text = "START"; } } private void button2_Click(object sender, EventArgs e) { this.Close(); } private void button3_Click(object sender, EventArgs e) { if (button3.Text == "COMPACT") button3.Text = "SROLL"; else button3.Text = "COMPACT"; } private void tcGiToolStripMenuItem_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.ShowDialog(); } } }

5. Mt s hnh nh v giao din

11

Ng ng Hin Hc Vin Hi Qun 2011

Hnh trn l thi gian chy ( th dch tnh tin), hnh bn di bt u t 0 (dn li)

12

You might also like