21
南南南南南南 南南南南南 DESP 南南南南南南南南南南南南 DATA ENGINEERING & SIGNAL PROCESSING LAB Arduino 與與與與與與與與與與 與與與 與與與 與與與與 與與與 與與2013/11/20

Arduino 與電腦端互動 設計之二

Embed Size (px)

DESCRIPTION

Arduino 與電腦端互動 設計之二. 報告人 : 洪賢麟 指導 老師:李育強 日期: 2013/11/20. 大綱. 建立介面. 1. 撰寫 Form1.CS 程式碼. 2. 建立介面 1 /5. 建立「 Windows Form 應用程式」的介面,介面編排如下列圖示:. 建立介面 2 /5. 建立「 Windows Form 應用程式」的介面,介面編排說明如下列所示: Form 1 大小:450 px * 300 px 。 Form 1 標題: SERIALPORT MONITOR 。 - PowerPoint PPT Presentation

Citation preview

Page 1: Arduino 與電腦端互動 設計之二

南台科技大學 資訊工程系

DESP資料工程暨訊號處理實驗室

DATA ENGINEERING & SIGNAL PROCESSING LAB

Arduino與電腦端互動設計之二

Arduino與電腦端互動設計之二

報告人:洪賢麟指導老師:李育強日期:2013/11/20

報告人:洪賢麟指導老師:李育強日期:2013/11/20

Page 2: Arduino 與電腦端互動 設計之二

2 DESP

大綱建立介面1

撰寫 Form1.CS 程式碼2

Page 3: Arduino 與電腦端互動 設計之二

3 DESP

建立介面 1/5建立「 Windows Form 應用程式」的介面,

介面編排如下列圖示:

Page 4: Arduino 與電腦端互動 設計之二

4 DESP

建立介面 2/5建立「 Windows Form 應用程式」的介面,

介面編排說明如下列所示: Form 1 大小:450 px * 300 px 。 Form 1 標題: SERIALPORT MONITOR 。 Form 1 事件:

Form1_FormClosing 、 Form1_Load 。 Form 1 取消最大化。 btn_startListen 大小:146 px * 23 px 。 btn_startListen 標題:開始監聽。 btn_startListen 事件:

btn_startListen_Click 。

Page 5: Arduino 與電腦端互動 設計之二

5 DESP

建立介面 3/5建立「 Windows Form 應用程式」的介面,

介面編排說明如下列所示: btn_startListen 座標:7 px * 213 px 。 lBox_serialPort 大小:146 px * 184

px 。 lBox_serialPort 座標:7 px * 22 px 。

Page 6: Arduino 與電腦端互動 設計之二

6 DESP

建立介面 4/5建立「 Windows Form 應用程式」的介面,

介面編排說明如下列所示: groupBox 1 大小:260 px * 117 px 。 groupBox 1 標題:序列埠監控視窗。 groupBox 1 座標:166 px * 12 px 。 groupBox 2 大小:260 px * 117 px 。 groupBox 2 標題:動作區。 groupBox 2 座標:166 px * 135 px 。 groupBox 3 大小:159 px * 240 px 。

Page 7: Arduino 與電腦端互動 設計之二

7 DESP

建立介面 5/5建立「 Windows Form 應用程式」的介面,

介面編排說明如下列所示: groupBox 3 標題:選擇序列埠。 groupBox 3 座標:1 px * 12 px 。

Page 8: Arduino 與電腦端互動 設計之二

8 DESP

撰寫 Form1.CS 程式碼 1/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;

Page 9: Arduino 與電腦端互動 設計之二

9 DESP

撰寫 Form1.CS 程式碼 2/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; // 必須引用

System.IO.Ports 才可以直接找到 SerialPort 。

Page 10: Arduino 與電腦端互動 設計之二

10 DESP

撰寫 Form1.CS 程式碼 3/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 namespace CS_WFAPP_SERIALPORT_MONITOR { public partial class Form1 : Form { // 定義一個序列埠元件。 protected SerialPort serialPort = new SerialPort(); // 定義一個計時器元件。 protected Timer timer = new Timer(); public Form1() { InitializeComponent(); }

Page 11: Arduino 與電腦端互動 設計之二

11 DESP

撰寫 Form1.CS 程式碼 4/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 //Form 產生後的進入點事件。 private void Form1_Load(object sender, EventArgs e) { // 將系統目前連接的序列埠列表交給 lBox_serialPort 作為資料來

源列表出來。 lBox_serialPort.DataSource = SerialPort.GetPortNames(); // 設定計時器元件的觸發間隔時間,1000毫秒等於1秒 timer.Interval = 1000; // 設定計時器元件的觸發事件 timer.Tick += new EventHandler(timer_Tick); }

Page 12: Arduino 與電腦端互動 設計之二

12 DESP

撰寫 Form1.CS 程式碼 5/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 // 計時器元件的觸發事件 private void timer_Tick(object sender, EventArgs e) { try { // 將序列埠元件所讀取到的資料行再加上一個換行符號,然後

交給 txt_monitor 顯示。 txt_monitor.Text += serialPort.ReadLine() +

System.Environment.NewLine; } catch { } }

Page 13: Arduino 與電腦端互動 設計之二

13 DESP

撰寫 Form1.CS 程式碼 6/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 //Form 關閉時的事件 private void Form1_FormClosing(object sender,

FormClosingEventArgs e) { // 判斷序列埠連線狀態是否為連線中 if (serialPort.IsOpen) { // 關閉連線 serialPort.Close(); } // 釋放序列埠元件 serialPort.Dispose(); }

Page 14: Arduino 與電腦端互動 設計之二

14 DESP

撰寫 Form1.CS 程式碼 7/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 // 按下開始監聽 / 停止監聽按鈕的事件。 private void btn_startListen_Click(object sender, EventArgs e) { // 當按鈕的標題為停止監聽時。 if (btn_startListen.Text == " 停止監聽 ") { // 當序列埠列表致能被取消時。 if (lBox_serialPort.Enabled == false) { // 將序列埠列表設為致能。 lBox_serialPort.Enabled = true; // 將 groupBox1 的標題回復成「序列埠監控視窗」。 groupBox1.Text = " 序列埠監控視窗 ";

Page 15: Arduino 與電腦端互動 設計之二

15 DESP

撰寫 Form1.CS 程式碼 8/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 try { // 判斷序列埠連線狀態是否為連線中。 if (serialPort.IsOpen) { // 關閉連線。 serialPort.Close(); } } catch { }

Page 16: Arduino 與電腦端互動 設計之二

16 DESP

撰寫 Form1.CS 程式碼 9/13建立「 Windows Form 應用程式」 ,

「 Form1.CS 」的程式碼。 // 停止計時器元件。 timer.Enabled = false; // 將 btn_startListen 標題回復為「開始監聽」。 btn_startListen.Text = " 開始監聽 "; } }

Page 17: Arduino 與電腦端互動 設計之二

17 DESP

撰寫 Form1.CS 程式碼 10/13建立「 Windows Form 應用程式」,

「 Form1.CS 」的程式碼。 // 當按鈕狀態為開始監聽時。 else { // 當序列埠列表有選擇一個項目時。 if (lBox_serialPort.SelectedIndex > -1) { // 將序列埠列表所選的項目作為序列埠元件監聽的對象。 serialPort.PortName =

lBox_serialPort.SelectedValue.ToString(); // 設定序列埠元件的傳輸鮑率為9600,要跟 Arduino 的

傳輸鮑率一樣。 serialPort.BaudRate = 9600;

Page 18: Arduino 與電腦端互動 設計之二

18 DESP

撰寫 Form1.CS 程式碼 11/13建立「 Windows Form 應用程式」,

「 Form1.CS 」的程式碼。 // 將 groupBox1 的標題設定為「序列埠監控視窗 - 連接埠名稱」提示使

用者目前所選的連接埠是什麼。 groupBox1.Text = string.Format(" 序列埠監控視窗 - {0}",

lBox_serialPort.SelectedValue.ToString()); // 將 txt_monitor 的內容設定為「序列埠監控視窗 - 連接埠

名稱」再加上一個換行符號,提示使用者目前所選的連接埠是什麼。 txt_monitor.Text = string.Format(" 選擇序列埠: {0} ,開始

監控。 {1}", lBox_serialPort.SelectedValue.ToString(), System.Environment.NewLine);

// 取消序列埠列表的致能。 lBox_serialPort.Enabled = false;

Page 19: Arduino 與電腦端互動 設計之二

19 DESP

撰寫 Form1.CS 程式碼 12/13建立「 Windows Form 應用程式」,

「 Form1.CS 」的程式碼。 try { // 判斷序列埠連線狀態是否為關閉中。 if (!serialPort.IsOpen) { // 開啟連線。 serialPort.Open(); } } catch { }

Page 20: Arduino 與電腦端互動 設計之二

20 DESP

撰寫 Form1.CS 程式碼 13/13建立「 Windows Form 應用程式」,

「 Form1.CS 」的程式碼。 // 開啟計時器元件。 timer.Enabled = true; // 將 btn_startListen 標題設定為「停止監聽」。 btn_startListen.Text = " 停止監聽 "; } } }

} }

Page 21: Arduino 與電腦端互動 設計之二

南台科技大學 資訊工程系

DESP資料工程暨訊號處理實驗室

DATA ENGINEERING & SIGNAL PROCESSING LAB