<4D F736F F D20B971B8A3AD70AEC9BEB9A4A7B24CBDCDBB50C2B2A9F6C0B3A5CE2E646F63>

Similar documents
Visual Basic D 3D

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

Microsoft PowerPoint - VB14.ppt

投影片 1

投影片 1

untitled

Microsoft Word - CX1000-HMI_程序开发_PLC通讯

Microsoft PowerPoint - 第14章.ppt

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

陳韻如 陳榮霖:陣列控制項技術之研究與應用.doc

IsPostBack 2

Microsoft Word - 小心翼翼的二十一點N.doc

Chapter 16 集合

ActiveX Control

untitled

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

2

計算機程式及實習 期末報告ppt製作 題目:南台黑心早餐店結帳系統

untitled

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

untitled

Microsoft Word - 專題製作研究報告書.doc

untitled

VB控件教程大全

新 闻 学 46 7 新 闻 传 播 学 院 广 告 学 28 4 广 播 电 视 学 23 3 新 闻 学 广 告 学 ). 级 学 生 申 请 准 入 需 修 完 或 正 在 修 2 门 专 业 准 入 课 程 并 取 得 相 应 学 分 ;2). 级 学 生 申 请 准 入 需

Microsoft PowerPoint - 13_ClassAndObj.ppt

VB程序设计教程

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政

untitled

untitled

untitled

1 1 Excel VBA 說明 ( ) (_) STEP4 Excel 2 STEP5 A1 1 B2 2 C3 3 STEP6 A1 STEP7 > > 1-11

ThreeDtunnel.doc

27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

智慧型水塔研究

投影片 1

untitled

多層次傳銷與獎金系統

untitled


【主持人】:给大家介绍一下,这次的培训是我们画刊部的第三次培训,当然今天特别有幸请来著吊的摄影家李少白老师给我们讲课

Microsoft Word - 序.DOC

(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

untitled

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

Microsoft PowerPoint - OPVB1基本VB.ppt

Microsoft Office SharePoint Server MOSS Web SharePoint Web SharePoint 22 Web SharePoint Web Web SharePoint Web Web f Lists.asmx Web Web CAML f

<4D F736F F D20C0B3A5CEB57BA6A1B35DAD70B4C1A5BDB3F8A7692E646F63>

untitled

The golden pins of the PCI card can be oxidized after months or years

游戏厅捕鱼技巧_天天酷跑游戏技巧 2048游戏技巧,游戏厅打鱼技巧_

馬孝先

Microsoft Word - 01.DOC

MVB-1001.DOC

Microsoft Word - ACL chapter02-5ed.docx

Outline USB Application Requirements Variable Definition Communications Code for VB Code for Keil C Practice

Excel VBA Excel Visual Basic for Application

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

untitled

投影片 1

3 Driver do Microsoft Access (*.mdb) hisdata IFIX 1.4

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Visual C# 2005程式設計

穨ac3-3.PDF

untitled

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

感測訓練班 主題:數據紀錄器

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

Microsoft Word - 13院21号.doc

Microsoft PowerPoint - Chapter5

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

06 01 action JavaScript action jquery jquery AJAX CSS jquery CSS jquery HTML CSS jquery.css() getter setter.css('backgroundcolor') jquery CSS b

Microsoft Word - 應用程式設計.doc

epub 94-3

2010年3月计算机等级考试四级网络工程师笔试

書面

7 DataSet DataSet TableColumnDataSet DataSet NOTE DataSet DataAdapterDataSetDataAdapter DataSet DataSetDataSetDataSet NorthwindDataSet DataSet Dim Nor

Microsoft Word - paper.doc

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

Dynamic Layout in Android

Transcription:

篇名 : 電腦計時器之淺談與簡易應用作者 : 簡育騰 高雄高工 資訊三甲 1

壹 前言 電腦計時器之淺談與簡易應用 當初還沒學物件導向之前, 從沒想過, 在現實生活中, 我們常常會用到碼表或者鬧鐘, 可以用電腦計時器設計出來 舉例來說 : 用電腦計時器設計出來的碼表, 可以非常的精準, 甚至可以顯示到小數點後面好幾位數, 更可以儲存多筆的紀錄, 並可輕易的呼叫出需要的紀錄 電腦計時器還可以設計出很多不一樣的東西, 例如 : 倒數計時器 鬧鐘 棋類比賽鐘 等等的多種計數物件, 應用之廣泛真是不勝枚舉, 這次要探討的是一些電腦計時器的常見應用, 並理解 timer 之觀念與應用, 且理解 stopwatch 的觀念並設計碼表, 使其可計時與擷取紀錄 貳 正文一 電腦計時器物件介紹 1 timer 間隔的長短由 Interval 屬性定義, 其值是以毫秒為單位 當啟用這個元件時, 每個間隔都會引發 Tick 事件, 將程式輸入在 tick 事件下面, 當觸發 tick 事件時, 該程式就會執行一次 Timer 元件的主要方法是開啟和關閉計時器的 Start 和 Stop 當關閉計時器時, 計時器就會重設, 沒有任何方法可以暫停 Timer 元件 timer 常見的屬性 Timer.AutoReset 屬性 如果 Timer 應於每次耗盡間隔時引發 tick 事件, 則為 true; 如果應該僅於第一次耗盡間隔後引發 tick 事件一次, 則為 false 預設值為 true Timer.Enabled 屬性 設定 timer 是否被啟用, 值有 true 和 false Timer.Interval 屬性 設定 timer 每次觸發 tick 事件間隔的時間, 單位是 ms Timer.Site 屬性 timer 常見的方法 Timer.Change 2

多載 變更開始的時間和計時器的方法引動過程之間的時間間隔 Timer.Dispose 多載 將 Timer 目前的執行個體所使用的資源全部釋出 Timer 常見的事件 Timer.Disposed 加入事件處理常式來接聽 (Listen) 元件上的 Disposed 事件 Timer.Tick 發生在指定的計時器間隔已耗用, 且計時器被啟用時 2 stopwatch 傳回的 Stopwatch 執行個體已停止, 而且執行個體的已耗用時間屬性為零 請使用 Start 方法, 開始利用新的 Stopwatch 執行個體來測量已耗用時間 請使用 StartNew 方法, 初始化新的 Stopwatch 執行個體並立即啟動它 Stopwatch 常見的屬性 Stopwatch.Elapsed 取得目前執行個體所測量的已耗用時間總和 Stopwatch.ElapsedMilliseconds 取得目前執行個體所測量的已耗用時間總和, 以毫秒為單位 Stopwatch.ElapsedTicks 取得目前執行個體所測量的已耗用時間總和, 以計時器刻度為單位 Stopwatch.IsRunning 取得值, 表示 Stopwatch 計時器是否執行中 值為 true 或 false 3

Stopwatch 常見的方法 Stopwatch.Timestamp 取得計時器機制中的目前刻度數 Stopwatch.Reset 停止時間間隔測量並將已耗用時間重設為零 Stopwatch.Start 啟動或繼續測量間隔的已耗用時間 Stopwatch.Stop 停止測量間隔的已耗用時間 二 數位碼表及比賽用計時器演算法 1 計時器物件介紹及演算法 (1). 需要物件 : Timer Label Button Stopwatch Picturebox (2). 演算法 : 透過 Stopwatch 的計數功能做計數動作, 利用 Button 決定開始 停止 顯示之動作, Timer 負責更新 Label 的值,Label 則是用來顯示 Stopwatch 現在的值 三 程式實作 1 碼表 A 操作過程 第一步 : 建立可用於 Windows 應用程式的控制項專案 (Windows 控制項程式庫 ) 第二步 : 放入物件, 此程式需要 3 個 label 5 個 button 1 個 windows form 1 個 listbox, 在控制項內放入 2 個 label 3 個 button, 此時 1 個 label 是要顯示目前時間已經過了多久, 另一個 label 則是顯示目前記錄了幾筆資料 3 個按鈕分別是 " 開始 " " 顯示 " " 清除 " 在 windows form 放入 1 個 label 2 個 button 1 個 listbox, 此時 label 顯示 " 碼表記錄時間 ",2 個 botton 分別是 " 刷新 " " 關閉 ",listbox, 則是顯示每筆紀錄的時間 第三步 : 各個物件命名 4

第四步 : 寫入該程式碼於各個元件 電腦計時器之淺談與簡易應用 B 畫面 圖一 完成畫面 圖二 操作過程 圖三 操作結果 C 程式碼 & 註解 a 控制項 Public Class LichiStopWatch Private Stopwatch As New Stopwatch ' 提供一組方法和屬性 (Property), 您可以使用這些方法和屬性, 精確地測量已耗用時間 Private bstopwatchenabled As Boolean ' 決定是否要啟動碼表內部的計時裝置, 即 Stopwatch 物件 Private ncounter As Integer ' 已存多少筆紀錄 Private shistoryrecord As String ' 存每一次凍結時經過的時間, 每一筆紀錄已分號隔開 5

' 以下定義屬性 LichiStopWatchEnabled, 決定是否要啟動碼表內部的計時裝置, 即 Stopwatch 物件 Property LichiStopwatchEnabled() As Boolean Return bstopwatchenabled Set(ByVal value As Boolean) If bstopwatchenabled <> value Then Call Start_Stop_Click(Start_Stop, System.EventArgs.Empty) End Set ' 以下定義屬性 LichiStopWatchFreeze, 決定碼表的數字是否凍結在某一時間點 Property LichiStopwatchFreeze() As Boolean Return Timer1.Enabled Set(ByVal value As Boolean) If Timer1.Enabled <> value Then Call Freeze_Continue_Click(Freeze_Continue, System.EventArgs.Empty) End Set ' 以下定義屬性 LichiStopWatchUsedAmount, 傳回已存多少筆紀錄 ReadOnly Property LichiStopwatchUsedAmount() As Integer Return ncounter ' 以下定義屬性 LichiStopWatchHistoryRecord, 存每一次凍結的時間, 每一筆紀錄已分號隔開 ReadOnly Property LichiStopwatchHistoryRecord() As String Return shistoryrecord ' 以下定義屬性 LichiStopWatchIsHighResolution, 傳回內部的 Stopwatch 是否以高解析度效能計數器為基礎 ReadOnly Property LichiStopwatchIsHighResolution() As Boolean 6

Return Stopwatch.IsHighResolution ' 以下定義屬性 LichiStopWatchFrequency, 傳回內部 Stopwatch 每秒有多少的刻度數 ReadOnly Property LichiStopwatchFrequency() As Long Return Stopwatch.Frequency ' 以下定義屬性 LichiStopWatchNanosecPerTick, 傳回內部的 Stopwatch 每一刻度數有多少個奈秒 (nanosecond) ReadOnly Property LichiStopwatchNanosecPerTick() As Long Return 1000000000 / Stopwatch.Frequency ' 以下定義屬性 LichiStopWatchBackColor, 控制碼表的背景顏色 Property LichiStopwatchStopwatchBackColor() As Color ' 讀取屬性時應從何處取得 Return Me.BackColor Set(ByVal Value As Color) ' 寫入屬性值時應存於何處 Me.BackColor = Value End Set ' 以下定義屬性 LichiStopWatchForeColor, 控制碼表的數字與按鈕文字顏色 Property LichiStopwatchStopwatchForeColor() As Color Return ElapsedPanel.ForeColor Set(ByVal Value As Color) ElapsedPanel.ForeColor = Value CounterPanel.ForeColor = Value Start_Stop.ForeColor = Value Freeze_Continue.ForeColor = Value Clear.ForeColor = Value End Set ' 以下定義屬性 LichiStopWatchButtonBackColor, 控制碼表按鈕的背景顏色 Property LichiStopwatchStopwatchButtonBackColor() As Color 7

' 讀取屬性時應從何處取得 Return Start_Stop.BackColor Set(ByVal Value As Color) ' 寫入屬性值時應存於何處 Start_Stop.BackColor = Value Freeze_Continue.BackColor = Value Clear.BackColor = Value End Set ' 以下定義事件 LichiStopWatchView 事件, 於按下 CounterPanel 時觸發 Public Event LichiStopwatchView() Private Sub Start_Stop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Start_Stop.Click If Not bstopwatchenabled Then ' 開始計時並顯示經過的時間 ElapsedPanel.Text = "00.00:00:00.00" bstopwatchenabled = True Stopwatch.Start() Call Freeze_Continue_Click(sender, System.EventArgs.Empty) Start_Stop.Text = " 停止 " ' 停止計時 bstopwatchenabled = False Stopwatch.Stop() ' 判斷是否要記錄 Call Freeze_Continue_Click(sender, System.EventArgs.Empty) Stopwatch.Reset() Start_Stop.Text = " 開始 " 'ElapsedPanel.Text = "00.00:00:00.00" Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim ts As TimeSpan = Stopwatch.Elapsed ElapsedPanel.Text = String.Format("{0:00}.{1:00}:{2:00}:{3:00}.{4:00}", ts.days, ts.hours, ts.minutes, ts.seconds, ts.milliseconds / 10) Public Sub New() ' 此為 Windows Form 設計工具所需的呼叫 8

InitializeComponent() ' 在 InitializeComponent() 呼叫之後加入任何初始設定 Stopwatch.Stop() Timer1.Interval = 10 Timer1.Enabled = False bstopwatchenabled = False Me.LichiStopwatchStopwatchBackColor = Color.PaleGreen Me.LichiStopwatchStopwatchButtonBackColor = Color.AliceBlue Me.LichiStopwatchStopwatchForeColor = Color.Black If Not Timer1.Enabled Then Freeze_Continue.Text = " 顯示 " Freeze_Continue.Text = " 凍結 " If bstopwatchenabled Then Start_Stop.Text = " 停止 " Start_Stop.Text = " 開始 " ncounter = 0 CounterPanel.Text = String.Format("{0:00}", ncounter) shistoryrecord = String.Empty Private Sub Freeze_Continue_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Freeze_Continue.Click If bstopwatchenabled Then If Not Timer1.Enabled Then ' 結束凍結狀態讓經過的時間繼續顯示 Timer1.Enabled = True Freeze_Continue.Text = " 凍結 " ' 將經過的時間紀錄下來並凍結顯示的時間 Timer1.Enabled = False ncounter = ncounter + 1 CounterPanel.Text = String.Format("{0:00}", ncounter) If shistoryrecord = String.Empty Then shistoryrecord = ElapsedPanel.Text shistoryrecord = shistoryrecord & ";" & ElapsedPanel.Text 9

Freeze_Continue.Text = " 顯示 " If Timer1.Enabled Then ' 將經過的時間紀錄下來並凍結顯示的時間 Timer1.Enabled = False ncounter = ncounter + 1 CounterPanel.Text = String.Format("{0:00}", ncounter) If shistoryrecord = String.Empty Then shistoryrecord = ElapsedPanel.Text shistoryrecord = shistoryrecord & ";" & ElapsedPanel.Text Freeze_Continue.Text = " 顯示 " Private Sub Clear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Clear.Click ' 清除凍結紀錄 ncounter = 0 shistoryrecord = String.Empty CounterPanel.Text = String.Format("{0:00}", ncounter) Private Sub CounterPanel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CounterPanel.Click ' 按下凍結紀錄個數按鈕時觸發 RaiseEvent LichiStopwatchView() End Class 參 結論 想當初高一的時候, 那個時候在學 QBASIC, 卻只能做一些運算, 跟我心中所想的 寫程式 差異漫大的, 我一直以為寫程式是你想要什麼東西, 就可以寫出來, 例如做個鬧鐘 行事曆 之類的, 就這樣抱著疑問升上了二年級 上了二年級後, 我之前想像的 寫程式 終於出現了, 是用 Visual Studio 2005 來寫程式, 版面比 QBASIC 好看很多, 多出了很多的物件, 例如 :timer label 等等 10

剛開始學習的時候, 說實在的, 還滿難適應的, 因為已經習慣了 QBASIC 簡潔的畫面, 跟單純的程式碼, 一下要跳到複雜的 VB, 還有著動不動就上百行的程式碼, 真的是漫痛苦的 好在老師是用他已經寫好的程式, 讓我們跟隨他的邏輯, 慢慢的來適應並學習 VB, 之後, 老師在等我們已經適應 VB 的時候, 就叫我們用電腦計時器, 設計出碼表來 經過老師的指導, 與跟同學的討論, 終於把碼表做了出來 在這個資訊發達的時代, 電腦計時器的重要性, 已經到了一個不可取代的位置, 可以用它設計出多樣的程式, 且說不定比我們現實中的東西還要精準 還要方便, 而且還可以加入個人化的事件, 例如 : 時間到撥放一首音樂... 之類的, 在現在這個幾乎人手一台電腦的時代, 幾乎已經是大多數的電腦玩家不可或缺的物件了 肆 引註資料 莊利吉 (2008), 生活小幫手 11