——VB教學案例一則"/>
999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?黃淑卿 廣東省佛山市南海技師學院
基于VB定時器的交通燈控制程序
——VB教學案例一則
黃淑卿 廣東省佛山市南海技師學院
對于較為枯燥的編程學習,如何提高學生學習興趣,較快掌握理論知識,是我們教師多年來面對的一個課題。選擇好的學習素材則是編程教學中一項重要環節,紅綠交通燈控制是人們日常生活中經常見到的道路場景。用VB編程語言實現交通燈控制,在編程過程中引導學生運用模塊化設計思想、圖表化設計表達工具,完成變量的設置及賦值、VB語句編寫、子程序的調用,逐步實現并完善交通燈的控制程序。這一過程使編程學習更加生動有趣,各知識點的掌握及理解更加順暢。
VB編程教學 程序設計 交通燈控制
交通燈是現代生活中常見的交通指揮工具,特別是近年來,隨著經濟的高速發展,汽車數量急速增加,交通燈的使用更加普遍,幾乎每個交通路口都有交通燈控制。合理的交通燈控制對于疏導交通、提升道路通行效率、減少交通事故有著重要意義。看似簡單易行的紅綠控制,蘊藏著很強的邏輯性,是流程控制型編程教學的佳例,雖然現實生活中交通燈控制實際采用PLC可編程邏輯控制器實現,但出于教學目的,應用VB編程實現交通燈控制,生動展示編程過程,是學生學習編程相關知識的絕好素材。
交通信號燈由紅燈、綠燈、黃燈組成。紅燈表示禁止通行,綠燈表示準許通行,黃燈表示警示。交通信號燈控制方式可以分為定時控制、感應控制、自適應控制。本文選用某處交叉路口為設計背景,通過VB編程模擬實現實際交通控制情形,從而展示VB編程從需求分析、概念設計到具體編程的實現過程。
實際操作中,通過觀察某處交叉路口交通燈控制模式,確定項目的需求,本例運用三態脈沖圖使信號燈周期性紅黃綠三態變化規律得到形象化表示,狀態轉移圖進一步把控制規律變為清晰的概念,流程圖幫助確定程序模塊的組成及調用關系,最后通過VB控件及語句,實現需求所要求的目標。總的說來,本案例涉及到的知識點包括:概念設計中圖表的運用,控制過程的流程圖表示、程序模塊設計、VB控件的運用、邏輯控制語句的編寫、變量的設置、界面制作,這些知識基本涵蓋VB編程的基礎內容,學生通過這一課題的實踐,可以初步理解VB編程的基本操作過程,并為日后完成更復雜的編程項目打下基礎。
3.1 需求分析
選擇某一路口作為本例的編程場景,通過對這一路口的觀察,確認所選定交叉路口采用的控制方式為:直行加左轉,南北西東依次通行的控制模式,即先向南方向綠燈放行,同時南向車輛可左轉,然后北向直行及左轉綠燈,接著東向,最后西向,按此順序周期循環。我們還注意到,由于從南北向進入東西向主干道的車輛較多,在南北左轉綠燈比直行綠燈多亮10秒。交通信號燈有紅黃綠三個狀態,選用三態脈沖圖可反映信號的變化規律,以上情形可用三態脈沖圖表示如下:

如圖所示,數字為信號燈編號,每盞燈有綠黃紅三個狀態,分別高中低三個電位表示,八盞燈分布在該交叉路口的四個角上,周期性地控制車輛通行。
3.2 信號燈控制模式的概念化表示
三態脈沖圖如實反映了交通信號燈周期性變化規律,但要把這一現象提升為清晰的概念,還得借助狀態轉移圖來實現,經過分析,我們將信號燈的變化規律轉化為五個狀態的循環轉換,以狀態轉移圖表示如下:

為簡化圖形表示,這里只顯示綠燈的狀態,綠燈亮時其他燈均為紅色,另外還省略了黃燈的狀態,因為綠燈轉紅燈有5秒的黃燈過渡為固定模式,逐一羅列不利于弄清信號燈的變化規律。如上圖所示,經過簡化處理后,信號燈的控制過程更為清晰,狀態轉移圖將所觀察的現象轉化為清晰的概念。圖的右上方狀態顯示這一時刻二個左轉燈同時為綠,這一設置正是為滿足較多車輛要進入東西向主干道的需求而設計。
3.3 程序設計
3.3.1 信號燈變換設計
實現單一信號燈狀態變換是實現多信號燈系統聯動的基礎,本例中制作信號燈小圖片,通過LoadPicture函數,改變image控件的picture屬性,實現信號燈紅綠變化及黃燈閃爍的效果,應用timer定時器控制信號燈的時長。本例中,模擬信號燈左轉的幾個小圖片如下:

3.3.2 子程序設計
本例中,共設置8只信號燈,按其位置分別編號1至8,圖片控件image(1)至image(8)分別控制相應的信號狀態,如下圖所示:

為了使程序簡化且便于閱讀,編寫子過程Pass(lamp_ no)、Alarm(lamp_no),通過子過程的調用實現各信號燈狀態的切換。
子過程Pass中參數lamp_no表示信號燈編號,如call Pass(4)表示4號燈切換到通行狀態,即4號信號燈亮綠燈。子過程Alarm中參數lamp_no表示信號燈編號,如call Alarm(4)即4號信號燈進入黃閃狀態。
3.3.3 程序流程圖
根據業務需求及子程序調用形式的確定,繪制程序流程圖如下:

從流程圖來看,控制流為二個部分重合的閉環組成,為此需要設立2個定時器timer1、timer2分別控制程序流,另外黃閃控制也應由各自的專用定時器timerAlarm1、timerAlarm2分別控制。
本例中,根據業務需求繪制三態脈沖圖,精確表達業務需求所述的情景,利用狀態遷移圖揭示業務表象下實質性的邏輯關系,理清頭緒,簡化問題。通過對程序流程圖的分析,得知本例控制流特性為二路控制流,從而確立設置2個定時器分別控制。在編程細節上,根據信號燈的控制特點,編寫pass(),alarm()2個子程序,通過調用子程序,實現對相應信號燈的控制。這種方式的編碼設置,實現代碼重用,提高編程效率,并使程序簡練易讀,也為日后系統維護提供方便。
[1]《Visual Basic 6.0程序設計與應用教程》李俊編著,電子工業出版社
[2]《Visual Basic開發實戰》軟件開發技術聯盟編著,清華大學出版社
[3]《Visual Basic 2015入門經典(第8版)/NET開發經典名著》[美]Bryan Newsome著;李周芳,石磊,譯.清華大學出版社