程序設計論文匯總十篇

時間:2023-04-08 11:26:22

序論:好文章的創作是一個不斷探索和完善的過程,我們為您推薦十篇程序設計論文范例,希望它們能助您一臂之力,提升您的閱讀品質,帶來更深刻的閱讀感受。

程序設計論文

篇(1)

二、教法學法

1、教法:本節課的教學,貫徹了啟發式教學原則。通過游戲引入新課,由教師引導學生進行觀察思考和歸納總結,同時充分發揮多媒體的功能,通過課件演示、具體實例的分析,使抽象的事物形象化,盡可能的通俗易懂,再配以恰當的課堂提問與練習,讓學生分析、探究,更進一步的加深理解。因此本節課采用的教學方法有:游戲、引導、演示、問答、練習等。2、學法:為了充分發揮學生的主觀能動作用,在上述教學方法的指導下,引導學生運用“觀察”、“討論”、“練習”、“展示”等方法,徹底掌握if語句的使用,能夠自己分析問題,認真思考,耐心實踐。讓學生不但要學會知識,更要會學知識,會用知識。

三、教學過程

1、新課引入:采用提問的方式,復習已學習過的知識,如選擇結構的概念。并通過創設情境,引入新課內容。先編寫一個程序引導學生參與游戲,游戲內容是隨機抽取一個學生的學號作為當天的幸運星,程序會根據輸入號碼的大小,給出不同的提示。在學生被激發出興趣后立刻提出問題:為什么程序會根據輸入數據的大小,顯示出不同的提示信息?由此引入了新課:If語句。在這一環節中,主要應用了游戲法、問答法等教學方法。不但引入了新課,更激發了學生的學習興趣。

2、新課講解:課程第一部分就是本節課的重點,if語句的語法格式。為了突出重點,加深學生的印象,講解前,首先用舉例法,通過表格顯示幾個常用的自然語言中進行分支選擇的表達方法,如:如果明天是晴天,那么出去郊游,否則延期出行。然后引導學生對比幾個不同的示例仔細觀察,查找出語句中的共同點和不同點,并通過課件中的動畫引導他們進行思考分析,逐步歸納出這種句型的表達方式:如果條件成立,那么執行動作1,否則執行動作2。由此實現了由特定的自然語言表述,到通用的自然語言格式的過渡。再通過提問的方式引導學生說出if、then、else等單詞,用英文替換中文表述,結合VB命令格式中的符號約定,讓學生自己寫出VB中if語句的基本表示方式,if條件表達式then語句序列1else語句序列2,實現自然語言到vb語言的過渡。但這個格式并不完整,可再次讓學生思考,哪些項是必需的哪些是可以省略的。這里還是用表格對比法,讓學生看到,在自然語言中表述分支選擇時,比較口語化的時候,有些語句是可以省略的。對應到VB中,也是一樣,這樣就得出了最終的if語句語法格式,If<條件表達式>Then[<語句序列1>][Else<語句序列2>]。隨后,再對一些要注意的地方進行講解說明。到此,本節課的重點部分也講述完畢,在這個過程中,主要采用了舉例、比較、類推、提問、講授、動畫等教學方法,整個過程采用了“自然語言表述實例自然語言通用句型VB語法格式”的教學順序,層層深入,符合特殊到一般、具體到抽象,由淺入深,由易到難的認知規律,由此實現了重點的突出。If語句的用法是本節課的難點,這里主要利用流程圖作為突破點的。首先,給學生講解如何根據語法格式繪制它的流程圖,通過PPT動畫,將語法構造與流程圖一一對應起來,使程序的執行過程更加直觀,讓學生對程序代碼與流程圖的關系的理解更直白,更透徹。然后,通過舉例法,讓學生了解,如何將實際問題進行分解,轉換為相應的流程圖,再根據前面所學,將流程圖轉換為具體代碼。課程進行到這里,部分學生的注意力可能已經開始分散,此時可進行游戲的第一步解密,不但再次激發起學生的興趣,也進一步幫學生理解如何分解問題,由問題到流程圖,再由流程圖到程序代碼。在難點的講解中,主要采用了動畫、對比、舉例等教學方法,通過由語法流程圖,構建了語法與流程圖之間的對應關系,再根據實際問題繪制流程圖,反推代碼,實現難點的突破。

3、課堂練習:為了檢驗學生對這部分知識點的掌握情況,通過布置習題,讓學生思考解答,針對學生的完成情況做出點評,糾正學生易犯的錯誤,達到鞏固新知的目的。在這一環節中,主要采用練習法和糾錯法等教學方法。

4、課后小結:與學生一起回顧本節所學內容,加深記憶和理解,完成知識的建構。并告訴學生,將在第二學時繼續對游戲解密,完成整個程序的設計,讓他們抱著期待的心情迎接下一節課。

篇(2)

2多態性抽象類與陰陽理論

面向對象程序設計的多態性中出現的抽象類,因其定義的某些函數(陽)是純虛函數,沒有具體的代碼,實現不了常規的操作(缺失“陽”的功能),這種抽象類(含有“陰”卻無功能性的“陽”)不能夠生成對象,正符合“孤陰不生”之道。在抽象類中,接口類是一種典型的沒有數據(陰)的抽象類,它只含有純虛函數(無功能性的“陽”),從上面分析可知,該類型也是不能夠實例化對象的,正所謂“獨陽不長”。《易經》中有“天地氤氳,萬物化醇,男女構精,萬物化生”,在古籍《雪心賦》中更有“孤陰不生,獨陽不長”的名句[6]。句中的“天地”、“男女”更抽象一步可理解為“陰陽”,兩句都強調“陰陽”在萬物的構成中相互依存的對立統一性。

篇(3)

1通信協議的制定

協議是用來管理通信的法規,是網絡系統功能實現的基礎。由于DSP可以實現對網卡的直接操作,對應于OSI網絡模型,網卡包含了物理層和數據鏈路層的全部內容,因此,規定了數據鏈路層上數據幀封裝格式,就可以為基于DSP的局域網絡中任意站點之間的通信提供具體規范。因為以太網是當今最受歡迎的局域網之一,在以太網中,網卡用于實現802.3規程,其典型代表是Novell公司的NE2000和3COM公司的3C503等網卡,所以研究工作中的具體試驗平臺是以DSP為核心構成的以太局域網,主要用于語音的實時通信,所使用的網卡為Novell公司的NE2000網卡。NE2000網卡的基本組成請見參考文獻[2],其核心器件是網絡接口控制器(NIC)DP8390。該器件有三部分功能:第一是IEEE802.3MAC(媒體訪問控制)子層協議邏輯,實現數據幀的封裝和解封,CSMA/CA(帶碰撞檢測功能的載波偵聽多址接入)協議以及CRC校驗等功能;第二是寄存器堆,用戶對NE2000網卡通信過程的控制主要通過對這些寄存器堆中各種命令寄存器編程實現;第三是對網卡上緩沖RAM的讀寫控制邏輯。DP8390發送和接收采用標準的IEEE802.3幀格式。IEEE802.3參考了以太網的協議和技術規范,但對數據包的基本結構進行了修改,主要是類型字段變成了長度字段。所以,以DSP為核心的局域網內通信數據包基本格式如圖1所示。

DSP讀出數據包和打包從目的地址開始。目的地址用來指明一個數據幀在網絡中被傳送的目的節點地址。NE2000支持3種目的地址:單地址、組地址及廣播地址。單地址表示只有1個節點可以接收該幀信息;組地址表示最多可以有64個字節接收同一幀信息;而廣播地址則表示它可以被同一網絡中的所有節接收。源地址是發送幀節點的物理地址,它只能是單地址。目的地址和源地址指網卡的硬件地址,又稱物理地址。

在源地址之后的2個字節表示該幀的數據長度,只表示數據部分的長度,由用戶自己填入。數據字段由46~1500字節組成。大于1500字節的數據應分為多個幀來發送;小于46字節時,必須填充至46字節。原因有兩個:一是保證從目的地址字段到幀校驗字段長度為64字節的最短幀長,以便區分信道中的有效幀和無用信息;二是為了防止一個站發送短幀時,在第一個比特尚未到達總線的最遠端時就完成幀發送,因而在可能發生碰撞時檢測不到沖突信號。NE2000對接收到的從目的地址字段后小于64字節的幀均認為是“碎片”,并予以刪除。在數據字段,根據系統的具體功能要求,用戶可以預留出若干個字節以規定相應的協議,以便通信雙方依據這些字節中包含的信息實現不同的功能。

2基于DSP的網絡通信程序設計

如果基于網絡操作系統,用戶可以利用一些軟件對網絡操作系統的支持,很容易地編寫出優秀的網絡通信程序,但這些程序必須依附于網絡操作系統。而在DSP環境下,必須深入了解網絡接口控制器(NIC)的工作原理[2],通過對網絡直接編程,實現局域網內任意站點之間的通信而完全拋開網絡操作系統。

DSP對網卡的通信過程控制就是DSP對DP8390中各種寄存器進行編程控制,完成數據分組的正確發送和接收。DP8390的所有內部寄存器都是8位,映像到4個頁面。每個頁面有16個可供讀寫的寄存器地址(RA=00H~0fH)。頁面的選擇由命令寄存器CA控制。第0頁寄存器用于收發過程,第1頁寄存器主要用于DP8390的初始化,第2頁寄存器則用于環路診斷。DSP對寄存器的操作是將寄存器作為DSP的端口設備,其實際物理端口地址(PPA)為網卡基本I/O端口地址(BIOA)與寄存器地址(RA)之和(即PPA=BIOA+RA)。應注意的是,PPA與寄存器間并不存在一一對應關系,對PPA的讀操作與寫操作并不一定是對同一寄存器進行的,這種情況在第0頁尤其明顯。用戶數據分組在DSP和網卡交互是通過網卡的數據端口實現的,既可以用DMA方式也可以用PIO方式讀入數據分組或將數據分組送至網卡RAM緩沖區。在本系統中,DSP采用DMA方式對網卡進行數據讀寫。網卡的數據端口地址(NDPA)為網卡基本I/O地址(BIOA)加偏移地址10H(即NDPA=BIOA+10H)。

網卡通信過程控制可分為網卡初始化、接收控制和發送控制。下面分別予以討論。

2.1網卡初始化

網卡初始化的主要任務是設置所需的寄存器狀態,確定發送和接收條件,并對網卡緩沖區RAM進行劃分,建立接收和發送緩沖環。具體過程請參閱參考文獻[2]。需要說明的是,每一塊網卡被賦予一個物理地址,以便通信站點的標識。這個物理地址存在網卡的PROM(存儲地址為0000~0005H)六個單元中,在網卡初始化時,通過遠程DMA讀入DSP內存中,并送入網卡物理地址寄存器。在一步的意義在于:一方面,如果能正確讀出網卡的物理地址,則說明網卡硬件基本沒有問題,網卡的上電復位和DSP對網卡的初始化順利通過;另一方面,這個物理地址可以用于DSP網絡系統中的點名、包的過濾丟棄等服務,也就是說,在鏈路層根據數據幀攜帶的源地址和目的地址確定數據報從哪里來,是否接收或丟棄。網卡初始化時另一個重要的工作就是接收緩沖環的設置,為了有效利用緩沖區,NIC將接收緩沖區RAM構成環形緩沖結構,如圖2所示。

接收緩沖區RAM分成多個256字節的緩沖區,N個(N最大為256)這樣的緩沖區通過指針控制鏈接成一條邏輯上的緩沖環。緩沖環的開始頁面地址存入PSTART寄存器,環頁面結束地址存入PSTOP寄存器。PSTART和PSTOP確定了接收緩沖環的大小和邊界。為便于緩沖環讀寫操作,還需要2個指針:當前頁面指針CURR和邊界指針BNRY。CURR確定下一包放在何處,起著緩沖環寫頁面指針作用;BNRY指向未經DSP取走處理最早到達的數據包起始頁面,新接收的數據包不可將其覆蓋,起著緩沖環讀頁面指針的作用。也就是說,CURR可以告訴用戶網卡接收的數據分組當前放到了什么位置,而BNRY則用于確定DSP讀緩沖環到了什么地方。由于接收緩沖區為環形結構,BNRY和CURR相等時,環緩沖區可能滿也可能空。為了使NIC能辨別這兩種狀態,規定當BNRY等于CURR時,才認為環緩沖區滿;當緩沖區空時,CURR比BNRY指針值大1。因此,初始化時設置:BNRY=PSTART,CURR=PSTART+1。這時讀寫指針不一致,為了保證正確的讀寫操作,引入一軟件指針NEXTPK指示下一包起始頁面。顯然,初始化時NEXTPK=CURR。這時,緩沖環的讀指針對NEXTPK,而BNRY只是存儲分組緩沖區的起始頁面邊界指示,其值為NEXTPK-1。

2.2接收控制過程

DSP完成對DP8390的初始化后,網卡就處于接收狀態,一旦收到分組,就自動執行本地DMA,將NIC中FIFO數據送入接收緩沖環,然后向主機申請“數據分組接收到”中斷請求。DSP如果響應中斷,則啟動網卡遠程DMA讀,將網卡緩沖區中的數據分組讀入學生機存儲區,然后對接收緩沖環CURR、NEXTPK、BNRY指針內容進行修改,以便網卡能從網上正確接收后續分組。DSP響應網卡接收中斷后,接收控制過程如下:

①設置遠程DMA的起始地址;RSAR0=00H,RSAR1=Nextpk。

②設置遠程DMA操作的字節數,這個長度在46~1500字節范圍內根據具體要求自己確定。

③0AH送命令寄存器CR,啟動遠程DMA讀。

④從網卡數據端口依序讀入數據分組,注意,最先讀入的4字節非數據分組內容,第1字節為接收狀態,第2字節為下一包頁地址指針,3與4字節為接收字節數。第2字節內容應該送入Nextpk,其它字節根據用戶要求處理。

⑤修改邊界指針BNRY=Nextpk-1。

⑥清除遠程DMA字節數寄存器RBCR0和RBCR1。

2.3發送控制過程

DSP先執行遠程DMA寫操作,將內存中的數據分組傳至網卡發送緩沖區,然后啟動發送命令進行數據分組發送。發送控制過程如下:

①設置遠程DMA的起始地址為網卡發送緩沖區起始地址;

②設置遠程DMA操作的字節數;

③12H送命令寄存器CR,啟動遠程DMA寫;

④依序送出數據分組至網卡發送緩沖區;

⑤清除遠程DMA字節數寄存器;

⑥設置發送字節數寄存器TBCR0和TBCR1;

⑦12H送命令寄存器CR,啟動數據分組發送。

3發送方發送頻率的控制

發送方發送頻率的正確控制主要保護兩點:一是有一個最小發送時間間隔,否則會因為接收方不能及時接收而導致系統癱瘓;二是發送頻率能夠足具體的功能實現要求。譬如在語音的實時通信中,發送頻率就取決于聲卡的采樣頻率。在8kHz采樣頻率時,聲卡每秒鐘采樣8000字節,采用1024字節需用時128ms,如果通信協議規定發送1次傳送1024字節有效數據,則必須每128ms發送一次才能保證緩沖區有新數據待發送,也才能保證接收方有新數據播放。128ms是一個理論計算數值,在實際的操作中采樣速度和發送頻率之間總是不能完全匹配,而存放數據的緩沖區大小是有限的,如果沒有良好的控制技巧來實現正確發送,就會造成聲音抖動和延時。解決的辦法是雙緩沖技術和雙指針控制,并且根據采樣速度和發送頻率之間的匹配情況送入不同的發送通信進行處理后發送。正確發送的含義有兩方面,一是每次發送的都是新數據,二是能滿足接收方總在播放新數據的需求。

4接收方防止數據包的丟失

篇(4)

(二)“多層次遞進式”項目設計實驗項目設計采用多層次、遞進式方式。以學生為本,從簡單到復雜、從單一到綜合、從驗證型到創新型,循序漸進地把教學內容和能力培養體現在項目中。將課程實驗分為基礎驗證型、綜合設計型和實踐創新型三個層次,根據知識模塊設計相應項目引導課程的教和學,并有側重點地體現CDIO能力的培養,項目列表及對應CDIO能力培養如表1所示。凝練優秀的教學型工程項目是基于CDIO項目學習模式成功的關鍵之一。因此表1中所列項目都是經過教學實踐反復修改完善的。實踐創新型實驗與軟件工程、數據庫課程相結合,采用一個完整的項目做載體貫穿始終。這樣設計實驗,首先可以將知識和課程有機結合,有助于學生明確它們在解決復雜工程問題中的關聯和作用;然后減少了課程之間銜接的重復、冗余;也減少了學生重復完成項目的工作量。在實踐創新型項目的凝練過程中,充分考慮學生熟悉并感興趣的項目,一類是校內項目,如網上選課系統,校園二手商品交易網站等,這樣不僅能解決教師的實際需求,也能滿足學生通過實際項目開發Web開發技能的培養;另一類是自主選擇項目,可以提高學生項目的開發熱情和興趣。

(三)基于CDIO的教學實施在具體教學過程中,按照知識模塊為教學單位進行。32學時的理論授課和作業結合,并輔以小測試加強理論知識的鞏固。每個模塊的理論授課完畢完成對應的實驗項目,共20學時,加入反思及答辯環節,最后進行期末考試。理論教學采用多種教學方式。對緒論性內容、面向對象程序設計等有一定難度的理論知識,依然采用講授教學方式;對Windows應用開發,采用啟發式案例教學法,以Windows系統自帶記事本為例,逐漸講解各種控件的應用及開發流程;對Web技術開發,綜合案例教學和任務驅動教學,對已經完成的“工程訓練中心選課系統”的項目進行精練,作為授課案例,詳細講解需求分析過程,然后引導學生概要設計、詳細設計,并以具體模塊為例進行程序編碼及調試運行。整個授課環節,板書和多媒體相結合,現場程序編寫及調試,不僅幫助學生直觀理解概念、原理和方法,也可以提高學生的興趣,形成以教師為主導,學生為主體的教學模式。實驗教學不同層次實驗區別實施。對驗證型實驗和綜合設計型實驗,每人單獨完成,旨在通過實驗使學生深入掌握基本知識、原理、編程的基本技巧,實驗過程中老師及時解決學生所遇問題并掌握進展情況,每次實驗課的最后半個小時,驗收部分學生的實驗以督促學生學習;并展示往屆有代表性的實驗報告和程序,規范學生實驗報告的撰寫,激勵學生互相學習,共同進步。對實踐創新型實驗,學生4~6人為單位形成開發小組,一人任組長,進行角色劃分。團隊按照軟件工程的開發步驟,進行需求分析、概要設計及詳細設計和測試,撰寫各個階段的開發文檔,要求團隊共同參與項目答辯。各層次實驗的考核都設有答辯和反思環節。反思不僅可以啟發學生積極進行批判性思考來深化課程學習目標,而且也有助于學生進行深層次的學與問,引導學生主動學習的興趣。

篇(5)

2溫濕度模糊控制器設計

2.1輸入與輸出變量的模糊化

根據溫室大棚的實際狀況,以溫濕度偏差及其偏差變化率為輸入變量,各輸入變量的模糊化信息如表1所示。結合研究對象實際情況,既考慮控制規則的靈活性又兼顧簡單易行。表1中,4個輸入變量模糊集均取為A,A為{NB,NS,ZE,PS,PB};模糊論域均取為B,B為{-4,-3,-2,-1,0,1,2,3,4}。模糊控制器的輸出控制變量為前窗、天窗、后窗、遮陽簾、通風機、加濕器和加熱器。這7個變量均為開關量,只有開和關(0/1)兩種狀態,分別用符號u1、u2、u3、u4、u5、u6、u7表示這7個變量。

2.2隸屬函數的確定

由于三角形隸屬度函數在輸入值變化時比正態分布或高斯型具有更高的靈活性[6],因此本研究中溫濕度偏差與偏差變化率均選取三角形隸屬度函數。圖4為各輸入變量的隸屬度函數,選擇的模糊集寬度為4。因為寬度過小會造成部分區間空缺,可能找不到相應的控制規則,收斂性不好;寬度過大會造成控制規則的重疊部分過多,相互間影響加大并且響應速度也變慢[7]。根據隸屬度函數對輸入變量量化為9個等級,其相應的隸屬度賦值如表2所示。

2.3模糊控制規則的制定

模糊控制規則的形成實質上是把操作者的經驗或專家的知識和經驗進行凝練得到的若干條模糊控制規則[8]。經對實際溫室控制系統的研究,發現溫濕度間存在一定的耦合性,即當通過某一執行機構改變溫度(濕度)時濕度(溫度)也會發生變化,因此在制定模糊控制規則時就要滲透解耦的思想。基于此,對7種執行機構的開關狀態做如下考慮:u1、u2和u3每打開一個設備降溫和降濕效果增強一點,但速度較慢;u5開通后其降溫和降濕速度明顯比u1、u2、u3快;u4降溫作用明顯,對濕度基本無影響;u6主要起加濕作用,降溫為次要作用;u7主要為增溫作用,降濕為次要作用。研究中制定了溫度與濕度之間、溫度變化率與濕度變化率之間的兩個模糊控制規則表,在此僅列出溫度與濕度之間的模糊控制規則,如表3所示。表3中,U為u1到u7這7個變量的開關狀態,開用“1”表示,關用“0”表示。

2.4反模糊化

模糊控制器輸出的是模糊語言不同取值的一種組合,由于被控對象只接受一個精確的控制量,因此需要從組合中判決出一個精確的控制量,這也就是反模糊化的過程[9]。常用的判決方法有重心法、最大隸屬度法和中位數法等,本研究采用重心法計算模糊控制輸出的精確控制量。其具體表達式為u'=∑nj=1ωjμ(ωj)/∑nj=1μ(ωj)(1)其中,n為模糊變量個數,ωj為模糊變量,μ(ωj)是對應模糊變量的隸屬度。本系統反模糊化的具體過程:首先溫濕度誤差或其誤差變化率經量化后得到相應的量化等級,根據量化等級查詢各個執行機構在控制規則表中對應的控制規則并使其激活。然后,由式(1)計算各個執行機構的輸出值,計算結果等于0.5時,執行機構保持原來狀態;計算結果大于0.5時,執行機構開;計算結果小于0.5時,執行機構關。基于這種思想,可建立各執行機構的模糊控制查詢表,放在內存中,編寫相應的PLC程序即可實現模糊控制器對執行機構的實時控制。

3溫濕度模糊控制PLC程序設計

溫濕度模糊控制PLC程序包括輸入量的采樣與模糊化程序、量化等級程序、模糊控制查詢程序、執行機構控制程序和預警程序等[10],在此僅介紹有關輸入采樣、誤差的計算和模糊控制查詢的部分程序。本研究是在STEP7編程環境下完成的模糊控制程序。

3.1輸入量采樣和ET/EH計算程序

研究中應用的溫濕度傳感器的變送單元分別取0~50℃、0~100%RH,線性對應電流均為4~20mA,因此在編寫PLC程序前需把溫濕度的值與PLC中的數字量關系建立起來。具體過程如下:以溫度為例,用I表示電流值,T表示溫度值,X表示實時溫度轉換為PLC中的數字量值。由于0~50℃與4~20mA對應,4~20mA又與PLC中的數字量為6400~32000對應,因此可得曲線方程如式(2)與式(3)所示。根據式(4)即可計算0~50℃對應PLC內部的數字量值。如22℃對應數字量值為17664。同理,可求得濕度值與PLC中數字量的對應關系如式(5)所示。其中,H表示濕度。下面以溫度為22℃和濕度為70%RH的情況編寫相應的PLC程序,70%RH對應的數字量為24320。

3.2模糊控制查詢程序

由反模糊化得到的模糊控制查詢表實質上是一個9×9的二維數組,存在以VW200開始的81個字單元中。在此把數組的首地址指針設定為VD48,根據(VW20×9+WV18)×2即可計算偏移值,在查詢表中定位并把相應值賦予WV28。

4系統實際運行測試

控制系統投入運行后,任選某一天對控制效果進行實際測試。測試時的起始溫度和濕度分別為32℃和52%RH,控制設定值分別為22℃和70%RH。對溫濕度采樣時間間隔均為5min,根據采集數據繪制的曲線如圖5所示。由圖5可知30min左右時溫濕度值均達到設定值,再經10min左右溫濕值即達到預設的穩定狀態值,達到了較滿意的控制效果。控制系統達到穩態的時間可通過增減有關設備進行調節。

篇(6)

(1)程序應最大限度的調用前期設計數據,減少人工輸入,程序需通過制作數據接口,從前期設計軟件中有選擇性的調入全橋總信息及每個墩臺的墩臺號、墩臺里程、基礎類型、初始樁長、基頂基底標高、基礎尺寸、樁基布置等信息,減少設計者重復輸入,同時降低操作錯誤率。(2)樁基展開布置時要求對每根樁的數據進行操作,現有的每個橋墩樁基數據中樁基數據需通過一定轉換,以圖形形式清晰明了的展現出來,同時還能夠提供一定格式的數據供其他程序進行計算等。(3)設計者對全橋每個橋墩基礎數據修改編輯后,程序需將數據存儲起來,以備進行下一步操作和下次查詢。但由于全橋信息量較大,需研究有效的數據存儲形式,以便設計者能快速調用和修改。

1.2數據在不同的坐標系進行坐標轉換

(1)在程序默認樁坐標、地質提供的樁坐標以及橋梁樁基計算程序樁坐標3者之間進行轉換,提供給設計者便捷的修改方式,滿足各種不同的坐標系統之間進行靈活的的轉換。(2)地質展開剖面圖的不確定性決定了基礎展開形式的多樣性,樁與樁之間的相互位置關系變化多樣,程序應能適用各種不同的情況,快速計算各樁位之間的相互位置關系。

1.3程序的繪圖及讀圖功能

(1)根據地質剖面圖的展開路徑繪制基礎展開布置圖時,程序通過讀取地質剖面圖中的信息,校核地質剖面圖的比例,定位每個鉆孔的位置,根據每根樁與各鉆孔之間的位置關系來繪制基礎展開布置圖。展開圖能按照一定的縱橫向比例繪制,每個樁位標明相應的編號等。程序應根據地質剖面圖的形式,靈活采用單點定位和多點定位,同一樁基靈活拆分,提供多樣的繪圖方式。(2)程序需對地質柱狀圖逐孔進行識別提取各地層信息后,根據專業要求將地層詳細的描述轉換到地質剖面圖中,完善各地層的地質描述。根據縱橫向比例將地層名稱、承載力值等描述添加到地質剖面圖中。(3)程序應有完善的圖面清理及圖面排版布局功能,以及樁長反讀及校核功能便于進行后續計算等。

1.4橋梁基礎的數量計算及匯總功能

(1)程序應根據全橋工程數量計算模板衍生出單墩數量計算模板進行展開后的樁基計算,以統一數量計算格式,提高程序自動轉換、批量處理效率。(2)根據每根樁的鉆孔資料進行各鉆孔土層進行分析,歸類匯總各土層的數量,盡可能精確計算單墩的基礎數量。(3)程序應將全橋各橋墩的單墩基礎數量進行匯總,生成全橋總數量。

2關鍵技術

2.1數據接口及轉換

(1)基礎的設計需要前期數據的調出量大,種類雜,數據調入調出時盡量減少對象中數據轉換,采用數組進行內部運算完成后,再將運算結果與表格進行對接,將對表格對象的操作次數降低到最少,提高運行速度。(2)設定3套坐標系統進行靈活的轉換,將數據圖形化,直觀化,如圖1所示。樁基礎設計中,地質樁號又能根據實際鉆孔路徑任意編排,樁間距能迅速計算導出,對部分數據進行監控,當數據修改時,能迅速響應,調出數據,展示圖形,操作相當方便,顯示也很直觀明了。程序計算完成后,能自動進行存儲,數據更新及時,靈活方便。任意路徑展開樁基的計算,如圖2所示。對于樁基礎,程序處理流程如圖3所示。

2.2樁基坐標轉換的實現

前期的數據收集后,通過校核補齊后轉換成程序默認的坐標系統,樁號順序按照從上到下和從左到右的順序編排的開來,這樣編排符合一般的標號習慣。橋梁設計軟件中樁排列一般是按x坐標從小到大,然后y坐標從小到大的順序排列的,這種排列方式便于程序計算。地質專業進行地質鉆孔時,形成相應鉆孔順序和坐標系統。于是程序內部需要建立3套坐標系統的相互關系網,以便能快速在各坐標系統之間進行轉換,快速與外部數據進行導入導出操作。程序內部各坐標之間的轉換關系如圖4所示。繪制展布圖時,承臺、樁及地層信息等在CAD圖中的縱橫向定位是比較棘手的問題。縱向定位主要有每根樁的樁頂高程、樁長、樁底高程、地層描述信息等,橫向定位主要是樁與鉆孔之間關系、樁與樁之間的關系定位等。縱向定位關鍵是確定定位標尺后計算高程標定縱向元素,橫向定位的關鍵是定位鉆孔按繪圖比例計算距離在定位樁位。樁基縱向定位的基本的流程如圖5所示。

2.3添加地質鉆孔信息

地層信息由地質鉆孔柱狀圖提取后展示到地質剖面圖中前,需要對地質柱狀圖進行分析過濾提取各地層信息,再在地質剖面圖中定位到鉆孔編號后根據地層上下界面高程縱向定位到各地層中去。添加地質鉆孔信息后如圖7所示。2.5單墩樁基及全橋樁基工程數量的計算計算單墩樁基工程數量時,程序通過全橋工程數量表衍生出單墩工程數量表,保持基礎工程數量計算相關工作表中各項目的完整,利用其固定性而又適應其靈活性,繼承全橋工程數量表的計算方法和特點。設計者對單墩工程數量計算完成后,程序將各墩數量匯總起來,再經過設計者復核,程序再將其與全橋工程數量整合在一起。其間的計算步驟均允許設計者參與修改,同時程序進行邏輯性校核等。匯總各墩數據到全橋工程數量表中的流程圖如圖8所示。

篇(7)

Abstract:VisualBasicprogrammingasapublicnon-professionalcomputer-basedlessons,theoryandpracticestrong,andteachingdifficult.Thearticleonhowtoimprovethequalityofteachingandtrainingstudentsinanintegratedapplicationdevelopmentcapabilitiesandexplorereformsweremade.

Keywords:VB;programming;reform;practice

1引言

VisualBasic(下面簡稱VB)程序設計是我校非計算機專業學生的必修課,然而VB語言枯燥、難以理解,學生缺乏相應的知識背景,導致學生對這門課有恐懼心理,缺乏興趣。這就要求我們教師在教學中分析、摸索出一些較為行之有效的教學方法,才有可能培養學生程序設計能力,掌握一門技能,激發學生對程序設計的興趣。筆者在近幾年的教學實踐中進行了如下改革探索,取得了良好的教學效果。

2教學改革與實施

2.1對課本原有知識進行整合,激發學生的學習興趣

大部分的教材總是先講VB語言的基本語法,然后再講VB中對象的使用。但在講授時不宜將兩者分開,要把VB面向對象的程序設計方法,事件驅動的編程機制貫穿于整個教學過程中。VB中的對象主要用于構建界面,而具體程序功能的實現則要編寫代碼行,因此任何一個完整的應用程序都不可能只用對象或只用語法。這兩塊內容可進行穿插講解。這樣就避免了讓學生在毫無知識背景的情況下去理解抽象難懂的概念,挫傷他們編程的積極性。在教學過程中,我始終堅持以學生已有的知識程度為基礎,打破原有的以課本知識的邏輯結構為順序組織課堂教學的模式,先不講基本概念,改用從簡單的實例人手,通過讓學生觀看、模仿,在實際操作中去探究和領悟這些概念,并適時地加以歸納總結,讓學生在輕松愉快的氣氛中接受新知識。比如,在講到循環結構中DO——LOOP語句和FOR——NEXT語句的用法時,我用DO——LOOP語句的4種形式和FOR——NEXT語句實現求解N!的過程,讓學生去觀察、領悟它們的異同。

2.2教學方法多樣化

筆者在教學實踐中,除了采用傳統的教學方法如:提問法、小組討論法外,主要采用以下教學方法:

1)錯例分析法

學生對變量、類型、運算符、表達式這些基本概念和語言規則的掌握需要一個過程,對算法和數據結構的知識需要不斷積累。學習過程中,能聽懂老師授課的內容,但自己編制的程序往往錯誤百出。課堂上,我經常將容易出錯的概念以反例形式展示給學生,讓他們找錯誤,通過運行。比如錯誤使用邏輯運算符。

假設a、b和c是三個變量。如果已知a<c,要判斷b的值是否在a與c之間,可以使用以下表達式:a<bAndb<c

不能寫成:a<b<c。

很多學生會錯誤延用數學上的概念,寫成后一種形式。

例OptionExplicit

PrivateSubCommand1_Click()

DimaAsInteger,bAsInteger,cAsInteger

a=-3:b=-2:c=-1

Printa<bAndb<c’顯示True

Printa<b<c’顯示False

EndSub

為什么a<b<c會得False?因為,VB在計算這個表達式時,先計算“a<b”部分,得True;再計算“True<c”,并將True轉換為一1,-1<-1?最終得False。

通過諸如此類的反例教學,使學生豁然開朗,印象深刻。

2)零散實例和核心實例結合

零散實例教學法,對每個知識點的運用和理解是非常行之有效的,但對前后知識的貫穿缺乏說服力。筆者在教學改革實踐中體會到,除經典的零散實例外,將一個規模較大的、典型的、有實用價值的、學生感興趣的核心實例貫穿于教學全過程,對提高學生的編程能力非常幫助。所謂核心實例是指,實例從小到大、隨章節的展開而逐步成長,呈現為逐步進化的多個版本。比如引入一個貫串全書的問題:設計一個“圖書管理系統”。首先,用最基本的概念和最簡單的結構,給出該系統的第一個(也是最簡單的)版本,以后的每一次課,都對該系統提出新的功能和結構上的要求,并用本次課介紹的新概念和新方法對它進行功能上的擴充和結構上的改進。每次得到該系統的一個增強的新版本。為達到設計目標,學生隨著教學的進程,可以積極投入到對實例系統的調試、改進的實踐中,逐漸掌握了所學的基本知識,同時也提高了編程能力。

2.3重視實踐教學,培養學生綜合應用程序開發能力

VB是一門實踐性很強的課程,如果只紙上談兵,不上機練習,是不可能真正掌握VB程序開發的。實踐教學主要注意抓住以下幾點:

(1)模仿階段,對課堂核心實例系統的調試、改進。核心實例的每次增強版是全面反映教學內容的,學生通過模仿、知識再現達到在實踐中領悟知識,開拓編程思路。

(2)分層次階段,在教學過程實施的開始,和核心實例同步,我就給出了幾個類似核心實例的課程設計內容,供學生選擇。對核心實例的調試比較成功的,可以同步實施自己所學的課程設計內容,達到培養學生分析問題和解決問題的能力。對掌握核心實例有困難的學生,針對教學內容重新布置實驗,強化知識鞏固。課程設計內容課后上機完成。

要掌握上面兩個階段的具體情況,教師應親自指導,與學生一起上機實驗,隨時監控學生實驗過程。對學生提出的問題及時予以指導,而發現學生常犯的共性錯誤,可在理論課上進行點評。

2.4培養學生使用標準編碼,養成良好編程習慣

在程序設計過程中,使用標準編碼可以避免一些不必要的錯誤。筆者在授課過程當中使用標準編碼的實例,在講解實例過程中對學生進行適當地引導,讓學生養成一個良好的編程習慣。

程序書寫規范是非常重要問題,不僅書寫格式應該結構層次分明,而且程序里面應添加起碼的注釋。不按照標準書寫程序會增加別人查看程序的難度,同時也不利于自己以后上機調試修改。強調學生避免使用VisualBasic中的隱式操作,養成顯式編碼的習慣。比如永遠使用OptionExplicit,嚴格執行變量先定義后使用的原則。避免使用缺省屬性,明確指出是在引用對象還是在引用對象屬性。

3結束語

一門課程的教學是一個復雜的系統工程,筆者將以上一些改革和探索用在課堂教學和實踐教學中,取得了一些效果,但教學有法,教無定法,只要教學得法。在教學實踐中,合理運用多種教學方法,靈活地、創造性地掌握教學過程,激發學生的興趣,培養學生的創造性思維和綜合應用程序開發能力。

參考文獻

篇(8)

1.1《VB程序設計》課程中項目的設計

1.1.1章節項目

在整個教學過程當中,采用了“大項目、小案例、任務驅動不斷”的教學模式,設計并選取與生活相聯系的合理的能夠調動學生學習積極性的項目。針對課程教學的最終目的,設計了一個比較完整的圖書館管理系統綜合項目,但是這門課程知識點較多,要想完成這個綜合項目,學生首先必須熟悉VB開發環境、掌握VB程序設計的基本概念和基礎知識、各章節的知識點內容。為了配合整個課程最后綜合項目的完成,在具體的教學中按照教學內容由易到難,針對教學中的重點和難點安排了13個章節項目,幫助學生更好地學習教材各章節中的知識點。項目一:由現實生活中的漢諾塔游戲、交換兩個杯子中飲料的問題,引入一個利用VB程序解決兩幅圖片對換位置的具體案例,使學生熟悉VB集成開發環境以及各種窗口的使用、掌握常用控件對象的建立以及布局、利用VB開發簡單應用程序的步驟、并初步引入程序設計思想,引導學生思考兩數互換的問題,使學生通過觀察、思考、總結得出兩數互換的問題和兩幅圖片互換位置是一類問題。項目二:編寫一程序,在屏幕上顯示“歡迎來到VB世界!”,并輸入自己的名字。使學生熟悉VB編程四部曲———界面設計、相關對象的屬性設置、相關對象的代碼編寫、調試運行,尤其注意程序的調試過程。項目三:設計一個華氏溫度與攝氏溫度之間轉換的程序。通過這個項目熟悉VB的數據類型及其運算,掌握VB的常用標準函數、變量以及常量的使用等語法知識點。項目四:利用輸入函數輸入一元二次方程的系數a、b、c,編寫程序計算一元二次方程的兩個實根或虛根,用輸出語句輸出結果。熟悉常用的輸入輸出控件、掌握Print方法、Inputbox()函數、Msgbox()函數和Msgbox過程的使用方法。項目五:設計一個賬號和密碼的輸入檢驗程序。規范整理英文文章,即對輸入的任意大小寫的英文文章進行整理,規則是:所有句子開頭應為大寫字目(句子是以符號“?”、“.”、“!”作為結束符的),其他都是小寫字母。使學生熟練掌握程序三大結構中的選擇和循環結構。項目六:對一個班級的學生成績進行輸入統計,找出所有成績中的最高分和最低分、全班成績的平均分等。使學生掌握數組的使用。項目七:編寫一個函數,在已知的字符串中找出最長的單詞。假定已知字符串中只含有字符和空格,空格用來分隔不同的單詞。通過該項目的學習使學生掌握過程程序的設計、實參、形參等基本概念。項目八:常用控件的使用。設計一個類似Win-dows記事本的應用程序,并完善其各項功能。通過該項目使學生掌握菜單、對話框和多重窗體程序設計。項目九:導入手機號碼文件,編寫一個手機選號程序,比如說選出手機尾號后四位相同的手機號碼等。要求學生通過學習,掌握文件的相關操作,利用文件能夠建立簡單的應用程序。項目十:建立本班同學信息庫,具體包括:學號、姓名、性別、出生日期、寢室電話、手機號碼,并用數據控件及綁定控件實現對同學信息的瀏覽,并實現按姓名查詢相關人員的基本信息。通過該項目掌握VB數據庫的相關技術。項目十一:設計多文檔應用程序,熟悉VB高級界面的設計。項目十二:用MMControl控件設計一個錄音機,用API函數設計一個用戶化的CD播放器。通過學習,使學生掌握VB多媒體程序設計。

1.1.2階段項目

為了使整個學期的教學內容具有連貫性,糅合各章節零散的知識點,使教學實踐具有可操作性,將整個學期的教學實踐分成了三個階段,每個階段選用一個打破章節限制的階段項目,使學生對所學知識內容有一個階段性較完整的認識。這三個階段依次是實踐的開始階段、實踐的展開階段、實踐的結束階段,分別對應階段項目一、階段項目二和階段項目三。每個階段中抓住關鍵教學環節,按照“大項目、小案例、任務驅動不斷”的具體教學流程組織教學。階段項目一:選用簡單的項目,如蝴蝶飛舞、字幕滾動的項目。由于是初次接觸計算機編程語言,所以對于非計算機專業的學生來說,這門課程的入門學習很關鍵,如果按照常規授課方法,依據書本上的章節內容安排依次講授VB語言發展史、VB語言特點以及編程環境等內容的話,學生很難接受,往往是聽得稀里糊涂,不知道學習VB究竟有什么實際作用,從而會產生畏難情緒,最終導致學生對VB知識學習失去興趣和信心。為消除初學者的畏難情緒,第一階段主要以激發學生的學習興趣為主,讓學生對VB有一個直觀的認識,同時讓學生在輕松的氣氛中了解VB的編程環境和編程步驟,以及VB面向對象、事件驅動的編程機制。萬事開頭難,一旦學生對VB產生了興趣,就有利于后續知識的學習。階段項目二:難度稍微加大,選用計算器項目。通過本項目,一方面讓學生理解控件數組的含義和設計使用方法,以及簡單下拉菜單、常用數學函數的使用、過程函數的編寫等,進一步加強學生對概念的理解。另一方面讓學生注意可視化界面的設計,因為友好美觀的人機交互界面,給人賞心悅目感覺的同時是軟件的門面。階段項目三:選用綜合項目———學生信息管理系統。通過這個項目讓學生真正了解掌握軟件的開發過程。雖然這個項目比較難,但是有了前面知識的鋪墊,會變得容易接受理解,也是對前面所學知識點的一次鞏固和進一步更深入的理解,更是對前面知識的綜合應用,讓學生由淺入深、由易到難,逐步領會掌握編程的基本思想、基本方法和開發一個軟件的完整步驟。三個階段通過運用“大項目、小案例”,每個階段讓學生帶著具體任務去學習,把枯燥的理論知識與生動形象的教學方式相結合,以清晰簡明的表達方式深入淺出地向學生傳授VB程序設計語言課程的知識,使學生在完成具體任務的實踐過程中不斷加深對面向對象程序設計思想和知識的理解。

1.2《VB程序設計》課程中的案例選取

有了已經準備好的各模塊的項目,并展示給學生,學生有了興趣后,就會想這些項目是怎么完成的,任務就落到各個模塊項目里面具體的案例上了。由于VB程序設計授課內容多,授課時間緊張,按各知識模塊劃分選取項目后,在每個項目里面,按項目選取具體案例或是進行設計各項目的各功能模塊,各功能模塊實際就是一個個案例。在教學過程中應循序漸進,可以在原有案例的基礎上逐步改變或增加一些條件,將應用進行引申,啟發學生思維,讓學生對知識點的理解更透徹,掌握各知識點之間的聯系,提高學生發現問題、解決問題的能力,并在教學中兼顧學生生活經驗與知識趣味性,達到事半功倍的教學效果。

1.3任務設計

圍繞每一知識模塊的教學內容、教學知識點,設計相關的項目,并在各個項目中采用了系列案例以及完成各功能模塊的案例,為了讓學生更加熟練、更好地掌握教學內容,在各知識模塊的學習中設置學習情景,給學生留有感興趣的任務,讓學生去完成。同時根據各知識模塊提出了單元任務,單元任務設置兩個層次———基本任務和提高任務。由于學生自身水平有差異,對于基礎好、學有余力的學生,要求他們不但要完成基本任務,還要完成提高任務;對于大多數學生,只要求他們完成基本任務。由于時間的限制,可以讓學生在課余時間分析任務,在上機實踐課以及課余時間去完成任務,最后做任務的總結。有了興趣和任務的驅使,學生為了完成任務,就會利用各種方式和手段積極主動地去解決問題,他們會通過查閱相關書本、瀏覽網絡資源、同學之間互相協作等方式解決問題,充分調動了學生的主觀能動性,在完成任務的過程中學生分析問題、解決問題、實際開發應用程序的能力得到了鍛煉,為學生知識的創新奠定良好的基礎,同時知識面也更廣、更大了。學生不會再覺得教學只是教師一個人的“獨角戲”,而是教師和學生的“二人轉”。在相互的配合以及友好和諧的師生關系中,教學順利完成的同時學生個人的知識庫也得到了構建。

篇(9)

要擁有一臺Pentium90以上、16MBRAM、520MB以上硬盤容量的PC機以及一臺43cm以上的大屏幕監視器和一塊OpenGL三維圖形加速卡組成的系統,就能與圖形工作站相媲美,但價格卻便宜數十倍。

本文作者一直從事計算機圖形應用開發工作。原來是在SGI工作站上利用OpenGL開發圖形程序,后來又首先在國內第一塊三維圖形加速卡AGC-3D上基于WindowsNT的VisualC++2.0環境下繼續進行開發。在開發過程中,同一OpenGL程序幾乎不用修改就能在兩個平臺間來回移植,效果甚好。

一、OpenGL特點及功能

OpenGL是一個開放的三維圖形軟件包,它獨立于窗口系統和操作系統,能十分方便地在各平臺間移植。

OpenGL具有七大功能。

(1)建模OpenGL圖形庫除了提供基本的點、線、多邊形的繪制函數外,還提供了復雜的三維物體(如球、錐、多面體、茶壺等)以及復雜曲線和曲面(如Bezier、Nurbs等曲線或曲面)繪制函數。

(2)變換OpenGL圖形庫的變換包括基本變換和投影變換。基本變換有平移、旋轉、變比和鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投影兩種變換。

(3)顏色模式設置OpenGL顏色模式有兩種,即RGBA模式和顏色索引(ColorIndex)。

(4)光照和材質設置OpenGL光有輻射光(EmittedLight)、環境光(AmbientLight)、漫反射光(DiffuseLight)和鏡面光(SpecularLight)。材質是用光反射率來表示。場景(Scene)中物體最終反映到人眼的顏色是光的紅綠藍分量與材質紅綠藍分量的反射率相乘后形成的顏色。

(5)紋理映射(TexureMapping)利用OpenGL紋理映射功能可以十分逼真地表達物體表面細節。

(6)位圖顯示和圖像增強圖像功能除了基本的拷貝和像素讀寫外,還提供了融合(Blending)、反走樣(Antialiasing)和霧(fog)的特殊圖像效果處理。

(7)雙緩存(DoubleBuffering)動畫雙緩存即前臺緩存和后臺緩存,簡而言之,后臺緩存計算場景、生成畫面,前臺緩存顯示后臺緩存已畫好的畫面。

此外,利用OpenGL還能實現深度暗示(DepthCue)、運動模糊(MotionBlur)等特殊效果。

二、OpenGLforWindowsNT圖形庫

OpenGL圖形庫一共有100多個函數。其中核心函數有115個,它們是最基本的函數,其前綴是gl;OpenGL實用庫(OpenGLutilitylibrary,GLU)的函數功能更高一些,如繪制復雜的曲線曲面、高級坐標變換、多邊形分割等,共有43個,前綴為glu;OpenGL輔助庫(OpenGLauxiliarylibrary,GLAUX)的函數是一些特殊的函數,包括簡單的窗口管理、輸入事件處理、某些復雜三維物體繪制等函數,共有31個,前綴為aux。

此外,還有六個WGL函數非常重要,專用于OpenGL和WindowsNT窗口系統的連接,其前綴為wgl,主要用于創建和選擇圖形操作描述表(renderingcontexts)以及在窗口內任一位置顯示字符位圖。這些功能是WindowsNT對OpenGL的唯一補充,見表1所示。

表1管理圖形操作描述表的WGL函數

另外,還有五個Win32函數用來處理像素格式(pixelformats)和雙緩存。由于它們是對Win32系統的擴展,因此不能應用在其他OpenGL平臺上,見表2所示。

表2管理像素格式Win32函數

三、OpenGLforWindowsNT程序設計

OpenGLforWindowsNT的程序設計與OpenGLforUNIX的程序設計有一點小區別,關鍵就在于如何將OpenGL與不同操作系統下的窗口系統連接起來。如果調用OpenGL輔助庫窗口管理函數,則不用考慮這些問題。下面將主要介紹在WindowsNT下OpenGL的程序設計關鍵。

1.圖形操作描述表

在WindowsNT下窗口程序必須首先處理設備描述表(DeviceContexts,DC),DC包含許多如何在窗口上顯示圖形的信息,即指定畫筆和刷子的顏色,設置繪圖模式、調色板、映射模式以及其他圖形屬性。同樣,OpenGLforWindowsNT的程序也必須使用DC,這與其他Windows程序類似。但是,OpenGLforWindowsNT必須處理特殊的DC圖形操作描述表,這是DC中專為OpenGL使用的一種。一個OpenGL應用圖形操作描述表內有OpenGL與WindowsNT窗口系統相關的各種信息。一個OpenGL應用首先必須創建一個圖形操作描述表,然后再啟動它,最后在所定義的窗口內按常規方式調用OpenGL函數繪制圖形。

一個圖形操作描述表不同于其他DC,它們調用每個GDI函數都需要一個句柄,而圖形操作描述表方式下只需一個句柄就可任意調用OpenGL函數。也就是說,只要當前啟用了某個圖形操作描述表,那么在未刪除圖形操作描述表之前可以調用任何OpenGL函數,進行各種操作。

2.像素格式

在創建一個圖形操作描述表之前,首先必須設置像素格式。像素格式含有設備繪圖界面的屬性,這些屬性包括繪圖界面是用RGBA模式還是顏色表模式,像系緩存是用單緩存還是雙緩存,以及顏色位數、深度緩存和模板緩存所用的位數,還有其他一些屬性信息。

(1)像素格式結構

每個OpenGL顯示設備都支持一種指定的像素格式號。一般用一個名為PIXELFORMATDESCRIPTOR的結構來表示某個特殊的像素格式,這個結構包含26個屬性信息。Win32定義的PIXELFORMATDESCRIPTOR如下所示:

typedefstructtagPIXELFORMATDESCRIPTOR

{

WORDnSize;

WORDnVersion;

DWORDdwFlags;

BYTEiPixelType;

BYTEcColorBits;

BYTEcRedBits;

BYTEcRedShift;

BYTEcGreenBits;

BYTEcGreenShift;

BYTEcBlueBits;

BYTEcBlueShift;

BYTEcAlphaBits;

BYTEcAlphaShift;

BYTEcAccumBits;

BYTEcAccumRedBits;

BYTEcAccumGreenBits;

BYTEcAccumBlueBits;

BYTEcAccumAlphaBits;

BYTEcDepthBits;

BYTEcStencilBits;

BYTEcAuxBuffers;

BYTEilayerType;

BYTEbReserved;

DWORDdwLayerMask;

DWORDdwVisibleMask;

DWORDdwDamageMask;

PIXELFORMATDESCRIPTOR,

*PPIXELFORMATDESCRIPTOR,

FAR*LPPIXELFORMATDESCRIPTOR;

(2)初始化PIXELFORMATDESCRIPTOR結構

PIXELFORMATDESCRIPTOR中每個變量值的具體含義和設置可以參

考有關資料,下面舉出一個PIXELFORMATDESCRIPTOR初始化例子來簡要

說明相關變量的意義。定義PIXELFORMATDESCRIPTOR結構的pfd如下:

PIXELFORMATDESCRIPTORpfd=

{

sizeof(PIXELFORMATDESCRIPTOR),//結構尺寸

l,//結構版本

PFD-DRAW-TO-WINDOWS|PFD-SUPPORT-OPENGL,//特性標志

PFD-TYPE-RGBA,//RGBA模式

24,//24位顏色

0,0,0,0,0,0,//不涉及這些屬性

0,0,0,0,0,0,0,//沒有alpha緩存和累積緩存

32,//32位深度緩存

0,0,//沒有模板緩存和輔助緩存

PFD-MAIN-PLANE,//主層類型

0,//保留結構數

0,0,0,//不支持結構數

};

在這個結構里,前兩個變量的含義十分明顯。第三個變量dwFlags的值是PFD-DRAW-TO-WINDOWS|PFD-SUPPORT-OPENGL,表明應用程序使用OpenGL函數來繪制窗口,第四個表明當前采用RGBA顏色模式,第五個采用24位真彩色,即1.67千萬種顏色,如果是256色系統則自動實現顏色抖動;因為沒有使用alpha緩存和累積緩存,所以從變量cAlphaBits到cAccumAlphaBits都設置為0;深度緩存設置為32位,這個緩存能解決三維場景的消隱問題;變量cAuxBuffers設置為0,在WindowsNT下不支持輔助緩存;WindowsNT下針對OpenGL變量ilayerType只能設置為PFD-MAIN-PLANE,但其他平臺也許支持PFD-OVERLAY-PLANE或PFD-UNDERLA

Y-PLANE;接下來bReserved變量只能設為0,而最后三個變量WindowsNT都不支持,故全設置成0。

(3)設置像素格式

當初始化PIXELFORMATDESCRIPTOR結構后,就要設置像素格式。下面幾段從VC++2.0的MFC程序中摘出的代碼就是設置像素格式的方式。代碼如下:

CClientDCclientDC(this);

intpixelFormat=ChoosePixelFormat(clientDC.m-hDC,&pfd);

BOOLresult=SetPixelFormat(clientDC.m-hDC,pixelFormat,&p

fd);

第一行語句說明得到一個應用窗口客戶區的設置描述表。

第二行調用ChoosePixelFormat()選擇一個像素格式,并將像素格式索引號返回給pixelFormat變量;函數中第一個參數是選擇像素格式的設置描述表的句柄,第二個參數是PIXELFORMATDESCRIPTOR結構的地址。如果調用失敗則返回0;否則返回像素格式索引號。

第三行調用SetPixelFormat()設置像素格式,三個參數分別是設備描述表的句柄、像素格式索引號和PIXELFORMATDESCRIPTOR結構的地址。如果調用成功則返回TURE;否則返回FALSE。

3.創建圖形操作描述表

正如前所述,必須創建圖形操作描述表并啟用它后,才能調用OpenGL函數在窗口內進行各種圖形操作。一般說來,利用MFC中增補的管理圖形操作描述表方法來編程比較方便。下面舉一例:

intCopenglView::OnCreate(LPCREATESTRUCTlpCreateStruct

)

{

if(CView::OnCreate(lpCreateStruct)==-1)return-1;

//TODO:Addyourspecializedcreationcodehere

PIXELFORMATDESCRIPTORpfd=

{

sizeof(PIXELFORMATDESCRIPTIOR),

//structuresizel,

//structureversionnumber

PFD-DRAW-TO-WINDOWS|PFD-SUPPORT-OPENGL,//propertyflags

PFD-TYPE-RGBA,//RGBAmode

24,//24bitcolor

0,0,0,0,0,0,//notconcernedwiththese

0,0,0,0,0,0,0,//noalphaoraccumbuffer

32,//32bitdepthbuffer

0,0,//nostencilorauxbuffer

PFD-MAIN-PLANE,//mainlayertype

0,//reserved

0,0,0//unsupported

};

CClientDCclientDC(this);

intpixelFormat=ChoosePixelFormat(clientDC.m-hDC,&pfd);

BOOLresult=SetPixelFormat(clientDC.m-hDC,pixelFormat,&p

fd);

m-hRC=wglCreateContext(clientDC.m-hRC);

return0;

}

voidCOpenglView::onDraw(CDC*pDC)

{

COpenglDoc*pDoc=GetDocument();

ASSERT-VAILD(pDoc);

//TODO:adddrawcodefornativedatahere

wglMakeCurrent(pDC->m-hDC,m-hDC);

DrawMyOpenGL();

wglMakeCurrent(pDC->m-hDC,NULL);

}

voidCOpenglView::OnDestroy()

{

CView::OnDestroy();

//TODO:Addyourmessagehandlercodehere

wglDeleteContext(m-hRC);

}

篇(10)

2關鍵技術

本文將通過無線傳輸技術通訊全站儀,將全站儀傳回的數據進行分析、驗證,實時將所測點位展繪到測圖軟件中。

2.1數字化測圖軟件

國內外有不少測繪行業的相關測圖軟件,較著名的國內軟件有“威遠圖”、“開思”、“山維”等。各軟件平臺都有自己獨到的優勢和特點。如“威遠圖”和“開思”,基于AutoCAD環境作了二次開發,直接生產工程設計軟件環境需求的DWG數據。避免因數據格式兼容性而產生的數據錯誤及數據不穩定,并且在后期的圖形編輯中,還能夠直接借助AutoCAD強大的圖形編輯功能。“山維”軟件是自行設計的獨立軟件平臺,可生產DXF格式的交換數據。自主性強,不受支撐軟件平臺的制約。本文選用的測圖軟件是廣州開思軟件。

2.2電子平板與全站儀間的實時無線藍牙通訊

全站儀與計算機通常是采用RS-232串行連接[2],也就是說全站儀與計算機的通信是通過一根線來完成的。經過藍牙適配器無線解決方案(藍牙與全站儀的連接匹配),可以使儀器與全站儀之間不再受連線的限制,只要用藍牙串口適配器代替串口電纜插入兩個設備的串行端口上,就可以實現串行端口間的無線通信。再通過在計算機上的實時通訊程序控制全站儀進行測量工作,并且將全站儀傳回的數據進行分析、驗證。利用VB6.0程序中的MSComm控件,配置正確通訊參數后,設計出與便攜機間的通訊程序,通過發送數據申請,經無線藍牙虛擬出的串口連接到全站儀,再把從全站儀傳回的數據進行分析、驗證。[3]具體的實現步驟如下:

(1)安裝藍牙驅動:讓平板電腦最大效率的發揮藍牙功能,需要先安裝和藍牙適配器配套的光盤驅動程序。

(2)全站儀的設置與連接:全站儀選用的是日本拓撲康3002N,在操作界面下,將RS-232C下的[波特率]調為4800,[字符/校驗]調為8/無校驗,[停止位]調為1,[Ack模式]調為標準方式,[CR,LF]調為關,[記錄類型]調為REC-A。(3)連接藍牙串口適配器:數據線一端通過串口連接藍牙適配器,另一端通過RS-232端口連接到全站儀,這樣儀器的設置與連接工作準備完畢。(4)藍牙與全站儀的匹配:電子筆記本上打開藍牙,搜索適配器并進行匹配。至此,筆記本與全站儀間的藍牙無線連通已經完成,藍牙在筆記本上虛擬出一個串口,通過該串口與全站儀的藍牙適配器連接,就如同在筆記本與全站儀間用數據線連接是一樣的。下面就需要一個控制程序,發出命令,通過建立的藍牙關系驅動全站儀,進而操作全站儀。[4]

2.3全站儀與筆記本間的數據發送與接收全站儀與筆記本間的數據通訊利用的是VB中的MSComm通信控件。程序實現步驟與方法如下:

(1)創建通訊窗體:在VB環境下創造一個窗體,用于驅動全站儀和接收來自全站儀的數據。

(2)設定通訊參數:將全站儀與程序的通訊參數輸入一致,否則兩者之間無法聯通。

(3)數據的發送與接受命令:向全站儀發出測量指令[5]。a.向全站儀發出測量指令,測量指令參考各全站儀指令說明書內容。b.從緩沖區得到全站儀傳回的數據,例如:006?+00001772m3252048+1751349d+00001008*60+00+00061c.發送命令,告知全站儀數據接收完畢。d.進行數據正確性驗證:首先從上述數據中提取垂直角(V1),利用正弦函數得出數值A。例如:A=Sin(V1),其次提取斜距(SD)、平距(HD),利用平距除以斜距計算數值B。例如:B=HD/SD,最后計算C=A-B。如果C在一個允許的限差內,則說明從全站儀傳過來的數據是正確的。

2.4實時展繪點位程序

(1)讀取設站數據,寫出觀測數據:首先讀取設站信息并記錄在變量中,提取出設站坐標X1、Y1、Z1,后視坐標X2、Y2,后視定向值以及儀器高。然后創建觀測數據文本,將上面提到的7個參數加上觀測后得到的斜距、平距、垂直角、水平角一起存儲在其中。

(2)計算前、后視方位角:前視方位角=(水平角讀數-后視歸零值)+后視方位角后視方位角=Atn(橫軸坐標差/縱軸坐標差)

(3)計算前視點坐標:前視點橫軸坐標=設站橫坐標+水平距離*Sin(前視方位角)前視點縱軸坐標=設站縱坐標+水平距離*Cos(前視方位角)前視高程=設站點高程+儀器高+(平距*Ctn(垂直角))-棱鏡高(4)插入高程點和高程注記:首先在計算出的前視點位置插入高程點圖塊,然后在前視點位固定的位置插入前視高程值的注記文本。至此,外業利用藍牙連接全站儀,實時計算并驗證碎步數據信息正確性,展繪點位工作完畢。

上一篇: 大學生本科論文 下一篇: 限額管理論文
相關精選
相關期刊
久久久噜噜噜久久中文,精品五月精品婷婷,久久精品国产自清天天线,久久国产一区视频
亚洲香蕉免费有线视频 | 亚洲日本成年在线看 | 亚洲激情在线视頻 | 日本欧美大码aⅴ在线播放 在线免费播放AV片 亚洲欧美综合香蕉 | 中文字幕亚洲小综合 | 又爽又猛又粗国产免费 |