畢業(yè)設(shè)計(論文)基于C++的無線表決系統(tǒng)控制端設(shè)計_第1頁
畢業(yè)設(shè)計(論文)基于C++的無線表決系統(tǒng)控制端設(shè)計_第2頁
畢業(yè)設(shè)計(論文)基于C++的無線表決系統(tǒng)控制端設(shè)計_第3頁
畢業(yè)設(shè)計(論文)基于C++的無線表決系統(tǒng)控制端設(shè)計_第4頁
畢業(yè)設(shè)計(論文)基于C++的無線表決系統(tǒng)控制端設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、目錄摘要iabstractii第一章 緒論11.2 無線網(wǎng)絡(luò)技術(shù)11.2.1 無線網(wǎng)絡(luò)技術(shù)的優(yōu)點11.2.2 無線網(wǎng)絡(luò)技術(shù)面臨的一些問題21.3無線網(wǎng)絡(luò)的應(yīng)用21.4 研究無線表決系統(tǒng)的意義21.5 無線表決系統(tǒng)的現(xiàn)狀31.6 本文的研究內(nèi)容3第二章 無線表決系統(tǒng)控制端軟件的研究12.1 無線表決系統(tǒng)控制端軟件12.2 應(yīng)用程序軟件的設(shè)計12.2.1事件驅(qū)動的程序設(shè)計12.2.2消息循環(huán)與輸入22.2.3 圖形輸出22.2.4 資源共享22.2.5結(jié)構(gòu)化程序設(shè)計和面向?qū)ο蟮某绦蛟O(shè)計32.3 無線表決系統(tǒng)軟件的可行性分析3第三章 無線表決系統(tǒng)控制端軟件界面的設(shè)計43.1 軟件界面介紹43.1.1

2、 程序流程圖43.1.2 軟件界面53.2 windows控件73.2.1 windows控件73.2.2 系統(tǒng)使用控件83.3 軟件控件功能的實現(xiàn)93.3.1建立mfc應(yīng)用程序93.3.2 windows標(biāo)準(zhǔn)控件使用103.3.3 activex控件12第四章 串口通信和虛擬硬件連接134.1 串口通信的實現(xiàn)134.1.1 添加mscomm控件134.1.2 初始化串口134.1.3 串口的讀寫數(shù)據(jù)144.2 串口的虛擬硬件連接15第五章 軟件各部分的關(guān)聯(lián)和美化165.1 軟件各部分的關(guān)聯(lián)165.1.1 參數(shù)選擇和顯示165.1.2 開始投票和參數(shù)選擇165.1.3 投票開始和數(shù)據(jù)顯示175

3、.2 軟件界面的美化175.3 程序運行結(jié)果18第六章 全文總結(jié)20參考文獻(xiàn)22致謝23摘要隨著我國社會民主化進(jìn)程的不斷發(fā)展,投票表決在各類會議中的應(yīng)用越來多,傳統(tǒng)的投票表決方式已不能滿足現(xiàn)代會議快節(jié)奏、高效率、自動化的要求。而數(shù)字無線投票表決系統(tǒng)的出現(xiàn)有效的滿足了這種現(xiàn)代會議的要求,具有重要的實用意義。本文主要通過對傳統(tǒng)無線表決系統(tǒng)基本工作原理的研究,具體說明了無線表決系統(tǒng)各個分系統(tǒng)的功能以及硬件電路的實現(xiàn)和軟件編程部分的實現(xiàn)。通過對現(xiàn)有表決系統(tǒng)的分析與研究,提出了比較適合當(dāng)前會議要求的設(shè)計方案。文章詳細(xì)的闡述了無線表決系統(tǒng)控制端的設(shè)計方案以及具體實現(xiàn)方法,該設(shè)計方案主要包括一下兩個方面:程

4、序界面的設(shè)計與實現(xiàn),串口通信部分的設(shè)計與實現(xiàn)。在本文的前半部分主要介紹的是無線數(shù)據(jù)表決系統(tǒng)控制端的程序控制界面的設(shè)計與實現(xiàn),主要通過visual c+來進(jìn)行程序的編寫;本文的后半部分主要介紹程序功能的實現(xiàn)和串口通信的實現(xiàn),也是使用visual c+來進(jìn)行程序的編寫。文章結(jié)尾簡單闡述了軟件部分和無線表決系統(tǒng)硬件部分連接原理。關(guān)鍵詞:visual c+ ;mfc;串口通信;abstractwith the development of our countrys democracy,the voting system has been used in differents conventions,n

5、ow the traditional voting system can not catch up with the development of modern way.so a new voting system appeared.we called it digital voting system. according to some technology of the traditional voting system the new one become more prefect.the thesis tell us some detail things of the voting s

6、ystem control centre.the control centre are make up of ui and serial comunications.the whole system was build by the visual c+ program.at the last part of the thesis there is a brief introduction about the link between the control centre and the terminal.we used the wireless technology to link the c

7、omputer and the terminal.there are so many wireless technology to finish the system,such as wifi and bluetooth. key words: visual c+ ;mfc; serial comunications第一章 緒論1.1 引言在科技迅猛發(fā)展的今天,信息技術(shù)的飛速發(fā)展,促進(jìn)了信息化社會的形成。隨著信息傳遞的充分發(fā)展出現(xiàn)了超越時空的互聯(lián)網(wǎng)技術(shù),隨著信息表示的發(fā)展出現(xiàn)了如聲像視頻這樣的多媒體技術(shù),而信息的收集、處理、加工的發(fā)展也出現(xiàn)了數(shù)字化手持移動技術(shù)、智能技術(shù),如搜索技術(shù),數(shù)據(jù)挖掘等

8、,這一系列的新技術(shù)的出現(xiàn)給整個社會的運行方式帶來了巨大的影響。隨著我國社會民主化進(jìn)程的不斷發(fā)展,投票表決的方式在各類會議中的應(yīng)用越來多,傳統(tǒng)的投票表決方式已不能滿足現(xiàn)代會議快節(jié)奏、高效率、自動化的要求。而數(shù)字無線投票表決系統(tǒng)的出現(xiàn)有效地解決了這些問題:代表們在自己的座位上就能投票決,省去了以往排隊投票的步驟;即可輕松地完成從簽到到各類議案的電子表決工作;在不記名模式下,系統(tǒng)特有的保密功能使得代表按鍵能最大限度地反映其真實意愿,而不用擔(dān)心被人窺視或記錄追查;投票系統(tǒng)會即時統(tǒng)計并在會場投影顯示出投票表決結(jié)果,它從根本上改變了各類會議傳統(tǒng)發(fā)、填、收、計票的表決方式,節(jié)省了收集統(tǒng)計的人工與時間、避免了

9、人為錯誤的發(fā)生、節(jié)省了與會代表等待結(jié)果的時間。 1.2 無線網(wǎng)絡(luò)技術(shù)無線網(wǎng)絡(luò)技術(shù)是一種柔性的數(shù)據(jù)交換系統(tǒng),是對局域網(wǎng)技術(shù)的一種延伸和補(bǔ)充。它通過采用無線通信技術(shù),在計算機(jī)與計算機(jī)或有無線模塊的設(shè)備之間實現(xiàn)無線通信,實現(xiàn)數(shù)據(jù)、資源的共享。管理人員不需要重新進(jìn)行連線,配置網(wǎng)絡(luò)。無線網(wǎng)絡(luò)與普通的局域網(wǎng)相比有以下幾個特點。1.2.1 無線網(wǎng)絡(luò)技術(shù)的優(yōu)點1、移動性無線網(wǎng)絡(luò)可以為用戶提供實時的、移動性的數(shù)據(jù)通信,這是普通的局域有線網(wǎng)無法企及的。由于無線網(wǎng)絡(luò)沒有了通信光纜的限制,用戶可以在任何覆蓋了無線信號的地點進(jìn)行工作或瀏覽資訊,極大的方便了人們的日常生活。2、解決了布線問題傳統(tǒng)的有線局域網(wǎng)存在著一個布線

10、的問題,不同的建筑有不同的風(fēng)格,在進(jìn)行有線網(wǎng)絡(luò)的安裝工作的時候必須根據(jù)建筑的形式和風(fēng)格進(jìn)行布局。這樣給網(wǎng)絡(luò)的普及及使用帶來了一定的問題,而無線網(wǎng)絡(luò)技術(shù)幾乎避免了這樣一個問題,還為網(wǎng)絡(luò)的建設(shè)節(jié)省了大量的費用。3、可靠實用性有線網(wǎng)絡(luò)的有線是布局有一個不可克服的弊端,就是任何電纜在使用的過程中都存在著損壞或者是老化的問題,這些問題的出現(xiàn)必將會影響網(wǎng)絡(luò)傳輸?shù)男剩绊憘鬏斝盘柕膹?qiáng)度以及傳輸數(shù)據(jù)的完整性。無線技術(shù)也很好的避免了通信受損的問題,在適當(dāng)范圍內(nèi)先進(jìn)的無線編碼技術(shù),先進(jìn)的無線通信協(xié)議幾乎可以避免受損問題的出現(xiàn),具有極高的可靠性。4、易安裝和低成本性無線網(wǎng)絡(luò)技術(shù)如今已經(jīng)非常成熟,無線設(shè)備生產(chǎn)制造的

11、技術(shù)也已經(jīng)非常的成熟,統(tǒng)一的標(biāo)準(zhǔn)使得無線設(shè)備以及無線網(wǎng)絡(luò)的安裝工作都變得非常的容易。1.2.2 無線網(wǎng)絡(luò)技術(shù)面臨的一些問題由于無線技術(shù)與生俱來的優(yōu)勢,受到了很多部門和組織的歡迎,但在實際的使用中也遇到了一些問題。1、無線電信號的問題由于無線電使用的通信技術(shù)的特點,信號在空氣傳播途中或多或少會受到大氣噪聲干擾和其他發(fā)射系統(tǒng)的影響。而且無線網(wǎng)絡(luò)的使用也會受到附近其他無線網(wǎng)絡(luò)和無線設(shè)備的干擾。發(fā)射系統(tǒng)的諧波或者其他使用相近無線電波段的產(chǎn)品,都會使無線網(wǎng)絡(luò)受到干擾而影響通信效果。2、健康危害由于無線網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)的傳輸?shù)臅r候使用的是電磁波的形式,這其中必然有輻射的產(chǎn)生。雖然這樣的輻射量比較小,但是長時間

12、處于這樣的電磁環(huán)境下還是會對人的身體健康造成一定的損害。1.3無線網(wǎng)絡(luò)的應(yīng)用隨著社會的進(jìn)步,各類數(shù)據(jù)信息的傳遞量飛速增長,網(wǎng)絡(luò)的使用率也增長很快。從目前應(yīng)用的情況來看,無線網(wǎng)絡(luò)技術(shù)是對普通網(wǎng)絡(luò)的一種延伸。它為移動辦公的用戶和網(wǎng)絡(luò)之間提供實時連接的手段,現(xiàn)已在許多行業(yè)都取得了成功應(yīng)用。1.4 研究無線表決系統(tǒng)的意義現(xiàn)在許多公司或企業(yè)都已經(jīng)感受到了辦公空間緊張帶來的壓力,尤其是在一些經(jīng)濟(jì)發(fā)達(dá)的大中城市,公司或企業(yè)每年都必須為辦公空間支付不菲的費用。因此這些公司都在竭盡所能提高辦公空間的使用效率,減少占用空間。大多數(shù)公司和企業(yè)都沒有在公司內(nèi)部設(shè)立大型的會議室,在已有的會議室無法滿足會議規(guī)模時,就需要

13、外出租借會議室,不僅要支付租金,同時還要浪費時間,會議組織也非常麻煩。其實基于局域網(wǎng)絡(luò)的會議系統(tǒng)就完全可以解決上述問題。在使用網(wǎng)絡(luò)會議系統(tǒng)后,參加會議的人員完全可以分散到各個小的會議室或者某些辦公區(qū)域通過網(wǎng)絡(luò)會議系統(tǒng)同時參加同一會議。不僅節(jié)省了會議場地的費用,而會議召集也可以節(jié)省時間,大大提高了會議效率。但是在會議現(xiàn)場,往往因為建筑沒有為會議現(xiàn)場預(yù)留布線通道,而造成已經(jīng)裝修好的會議現(xiàn)場重新安排布線,既浪費布線時間又浪費一次裝修經(jīng)費。有線局域網(wǎng)絡(luò)接口變動造成網(wǎng)絡(luò)不能穩(wěn)定運行。種種問題造成有線會議系統(tǒng)在實際應(yīng)用時的不便。而使用無線方式的系統(tǒng)。將無線局域網(wǎng)技術(shù)用于無線會議系統(tǒng)可以避免有線會議系統(tǒng)帶來

14、的節(jié)點固定,布線困難,對建筑物的破壞等缺點,可以帶來無線局域網(wǎng)的可移動性,布線時間短,使用方便等優(yōu)點,并可以降低成本,提高工作效率,解決了有線網(wǎng)絡(luò)線纜故障等造成的網(wǎng)絡(luò)癱瘓問題。無線網(wǎng)絡(luò)技術(shù)在網(wǎng)絡(luò)會議系統(tǒng)中的應(yīng)用還避免了網(wǎng)絡(luò)會議系統(tǒng)的復(fù)雜的連線和安裝過程,不僅系統(tǒng)安裝和拆除方便,而且也大大增加了與會者的可移動性,對于一些臨時會議的進(jìn)行非常方便。同時對于那些還沒有建設(shè)網(wǎng)絡(luò)環(huán)境的會議室或辦公室,或者鋪設(shè)線纜有困難的場所,同樣可以通過無線網(wǎng)絡(luò)系統(tǒng)搭建無線會議系統(tǒng)。1.5 無線表決系統(tǒng)的現(xiàn)狀在無線技術(shù)的推動下,無線表決技術(shù)也日趨成熟和完善,從原先的單一功能發(fā)展到現(xiàn)在的多功能智能投票系統(tǒng)。隨著信息技術(shù)的發(fā)

15、展無線表決器擁有了高速數(shù)據(jù)采集處理,穩(wěn)定的操作系統(tǒng),和更加漂亮的外觀。新一代無線表決系統(tǒng)產(chǎn)品,是世界上非常豪華、精致的一個產(chǎn)品。目前比較好的系統(tǒng)可以在美國聯(lián)邦通訊委員會規(guī)定的免執(zhí)照許可的2.4ghz下工作,采用新的調(diào)頻技術(shù),使得系統(tǒng)能夠提供卓越的射程,即使在惡劣的環(huán)境中,依然能保持通信信號的穩(wěn)定性及保密性。與其他射頻設(shè)備比如wlan,pda,移動電話等共存的情況下,系統(tǒng)仍可可靠運行,以確保數(shù)據(jù)精確度和增強(qiáng)安全性。無線表決系統(tǒng)容量也從最先的幾十上百個發(fā)展到現(xiàn)在的支持上萬個無線表決器,并且以最快速度實現(xiàn)數(shù)據(jù)的統(tǒng)計和顯示。1.6 本文的研究內(nèi)容本文主要通過對傳統(tǒng)無線表決系統(tǒng)基本工作原理的研究,簡單了

16、解了無線表決系統(tǒng)各個分系統(tǒng)的組成部分。主要闡述了無線表決系統(tǒng)控制端的基本工作原理及其主要功能,通過設(shè)計方案來完成無線表決系統(tǒng)控制端的軟件編程,文中結(jié)合實際工作需要從以下三個方面完成工作:1、無線表決系統(tǒng)控制端軟件可行性的分析。2、無線表決系統(tǒng)的程序界面設(shè)計與實現(xiàn)。3、程序部分和硬件部分串口通信的實現(xiàn)。第二章 無線表決系統(tǒng)控制端軟件的研究2.1 無線表決系統(tǒng)控制端軟件在本系統(tǒng)中,表決系統(tǒng)控制端的程序的編制由visual c+ 程序語言來完成。這不僅因為vc 語言簡單易學(xué)、操作方便,同時具有強(qiáng)大的圖形控件編輯功能,既提供工程設(shè)計所需的組件,又是制作友好程序交互界面的向?qū)?,而且鑒于vc 語言的特點,

17、它還提供了豐富的數(shù)據(jù)庫編輯功能,因此,visual c+ 程序語言已經(jīng)越來越成為廣大程序開發(fā)人員愛不釋手的設(shè)計工具,利用它,程序開發(fā)人員可以直接進(jìn)入開發(fā)狀態(tài),開發(fā)出滿足需求的各種應(yīng)用程序。而掛與其上的mfc提供了更為簡單的編程方案,mfc的主要優(yōu)點是可以用面向?qū)ο蟮姆椒▉碚{(diào)用windows api,以及應(yīng)用程序開發(fā)的便捷。mfc將很多應(yīng)用程序開發(fā)中常用的功能自動化,并且提供了文檔框架視圖結(jié)構(gòu)和活動文檔這樣的便于自定義的應(yīng)用程序框架。同時,在visual c+內(nèi)部也內(nèi)建了很多對mfc的例如類向?qū)н@樣的支持以減少軟件開發(fā)的時間,使用類向?qū)Э梢陨蓮膆ello world這樣的簡單程序到活動文檔服務(wù)

18、器這樣的復(fù)雜程序。mfc的消息映射機(jī)制也避免了使用性能較低的龐大虛函數(shù)表。所以用visual c+ 語言完成本無線表決系統(tǒng)控制端的控制、通信、數(shù)據(jù)處理、數(shù)據(jù)管理等功能。2.2 應(yīng)用程序軟件的設(shè)計所謂控制端軟件就是一個基于winapi與c+的結(jié)合的可視化程序界面,和所有的windows應(yīng)用程序一樣,軟件的設(shè)計必須以一定的思維方式來進(jìn)行軟件設(shè)計,同時遵循一定的規(guī)律可以提升軟件的質(zhì)量也能縮短軟件的設(shè)計周期。如前所述,windows操作系統(tǒng)具有ms-dos操作系統(tǒng)無可比擬的優(yōu)點,因而受到了廣大軟件開發(fā)人員的親睞。但是,熟悉dos環(huán)境下軟件開發(fā)的程序員很快就會發(fā)現(xiàn),windows編程與dos環(huán)境下編程相

19、比有很大的不同。windows要求以一種全新的思維方式進(jìn)行程序設(shè)計,主要表現(xiàn)為以下幾點:2.2.1事件驅(qū)動的程序設(shè)計傳統(tǒng)的ms-dos程序主要采用順序的、關(guān)聯(lián)的、過程驅(qū)動的程序設(shè)計方法。一個程序是一系列預(yù)先定義好的操作序列的組合,它具有一定的開頭、中間過程和結(jié)束。程序直接控制程序事件和過程的順序。這樣的程序設(shè)計方法是面向程序而不是面向用戶的,交互性差,用戶界面不夠友好,因為它強(qiáng)迫用戶按照某種不可更改的模式進(jìn)行工作。事件驅(qū)動程序設(shè)計是一種全新的程序設(shè)計方法,它不是由事件的順序來控制,而是由事件的發(fā)生來控制,而這種事件的發(fā)生是隨機(jī)的、不確定的,并沒有預(yù)定的順序,這樣就允許程序的的用戶用各種合理的順

20、序來安排程序的流程。對于需要用戶交互的應(yīng)用程序來說,事件驅(qū)動的程序設(shè)計有著過程驅(qū)動方法無法替代的優(yōu)點。它是一種面向用戶的程序設(shè)計方法,它在程序設(shè)計過程中除了完成所需功能之外,更多的考慮了用戶可能的各種輸入,并針對性的設(shè)計相應(yīng)的處理程序。它是一種“被動”式程序設(shè)計方法,程序開始運行時,處于等待用戶輸入事件狀態(tài),然后取得事件并作出相應(yīng)反應(yīng),處理完畢又返回并處于等待事件狀態(tài)。2.2.2消息循環(huán)與輸入事件驅(qū)動圍繞著消息的產(chǎn)生與處理展開,一條消息是關(guān)于發(fā)生的事件的消息。事件驅(qū)動是靠消息循環(huán)機(jī)制來實現(xiàn)的。消息是一種報告有關(guān)事件發(fā)生的通知。消息類似于dos下的用戶輸入,但比dos的輸入來源要廣,window

21、s應(yīng)用程序的消息來源有以下四種:1.輸入消息:包括鍵盤和鼠標(biāo)的輸入。2.控制消息:用來與windows的控制對象,如列表框、按鈕、檢查框等進(jìn)行雙向通信。當(dāng)用戶在列表框中改動當(dāng)前選擇或改變了檢查框的狀態(tài)時發(fā)出此類消息。這類消息一般不經(jīng)過應(yīng)用程序消息隊列,而是直接發(fā)送到控制對象上去。3.系統(tǒng)消息:對程序化的事件或系統(tǒng)時鐘中斷作出反應(yīng)。4.用戶消息:這是程序員自己定義并在應(yīng)用程序中主動發(fā)出的,一般由應(yīng)用程序的某一部分內(nèi)部處理。2.2.3 圖形輸出windows程序不僅在輸入上與dos程序不同,而且在程序輸出上也與dos有著很大不同,主要表現(xiàn)為:1.dos程序獨占整個顯示屏幕,其他程序在后臺等待。2.

22、windows程序的所有輸出都是圖形。3.windows下的輸出是設(shè)備無關(guān)的。windows下的應(yīng)用程序使用圖形設(shè)備接口(gdi)來進(jìn)行圖形輸出。gdi屏蔽了不同設(shè)備的差異,提供了設(shè)備無關(guān)的圖形輸出能力,windows應(yīng)用程序只要發(fā)出設(shè)備無關(guān)的gdi請求(如調(diào)用rectangle畫一個矩形),由gdi去完成實際的圖形輸出操作。對于一臺具有打印矩形功能的postscript打印機(jī)來說,gdi可能只需要將矩形數(shù)據(jù)傳給驅(qū)動程序就可以了,然后由驅(qū)動程序產(chǎn)生postscript命令繪制出相應(yīng)的矩形;而對于一臺沒有矩形輸出功能的點陣打印機(jī)來說,gdi可能需要將矩形轉(zhuǎn)化為四條線,然后向驅(qū)動程序發(fā)出畫線的指令

23、,在打印機(jī)上輸出矩形。2.2.4 資源共享對于dos程序來說,它運行時獨占系統(tǒng)的全部資源,包括顯示器、內(nèi)存等,在程序結(jié)束時才釋放資源。而windows是一個多任務(wù)的操作系統(tǒng),各個應(yīng)用程序共享系統(tǒng)提供的資源,常見的資源包括:設(shè)備上下文,畫刷,畫筆,字體,對話框控制,對話框,圖標(biāo),定時器,插入符號,通信端口,電話線等。2.2.5結(jié)構(gòu)化程序設(shè)計和面向?qū)ο蟮某绦蛟O(shè)計面向?qū)ο蠹夹g(shù)是目前流行的系統(tǒng)設(shè)計開發(fā)技術(shù),它包括面向?qū)ο蠓治龊兔嫦驅(qū)ο蟪绦蛟O(shè)計。面向?qū)ο蟪绦蛟O(shè)計技術(shù)的提出,主要是為了解決傳統(tǒng)程序設(shè)計方法結(jié)構(gòu)化程序設(shè)計所不能解決的代碼重用問題。結(jié)構(gòu)化程序設(shè)計從系統(tǒng)的功能入手,按照工程的標(biāo)準(zhǔn)和嚴(yán)格的規(guī)范將系

24、統(tǒng)分解為若干功能模塊,系統(tǒng)是實現(xiàn)模塊功能的函數(shù)和過程的集合。由于用戶的需求和軟、硬件技術(shù)的不斷發(fā)展變化,按照功能劃分設(shè)計的系統(tǒng)模塊必然是易變的和不穩(wěn)定的。這樣開發(fā)出來的模塊可重用性不高。面向?qū)ο蟪绦蛟O(shè)計是一種圍繞真實世界的概念來組織模型的程序設(shè)計方法,它采用對象來描述問題空間的實體。一般的認(rèn)為,對象是包含現(xiàn)實世界物體特征的抽象實體,它反映了系統(tǒng)為之保存信息和(或)與它交互的能力。它是一些屬性及服務(wù)的一個封裝體,在程序設(shè)計領(lǐng)域,可以用“對象=數(shù)據(jù)+作用于這些數(shù)據(jù)上的操作”這一公式來表達(dá)。在windows中,程序的基本單位不是過程和函數(shù),而是窗口。一個窗口是一組數(shù)據(jù)的集合和處理這些數(shù)據(jù)的方法和窗口

25、函數(shù)。從面向?qū)ο蟮慕嵌葋砜?,窗口本身就是一個對象。windows程序的執(zhí)行過程本身就是窗口和其他對象的創(chuàng)建、處理和消亡過程。windows中的消息的發(fā)送可以理解為一個窗口對象向別的窗口對象請求對象的服務(wù)過程。因此,用面向?qū)ο蠓椒▉磉M(jìn)行windows程序的設(shè)計與開發(fā)是極其方便的和自然的。2.3 無線表決系統(tǒng)軟件的可行性分析綜上所述,在了解了windows應(yīng)用程序設(shè)計的一般思維方法及基本設(shè)計流程之后,對無線表決系統(tǒng)軟件的設(shè)計有了一個大體的框架構(gòu)想。對比設(shè)計方案之中的控制端的軟件功能以及軟件界面的設(shè)計方案,刪除了部分不符合windows應(yīng)用程序要求的一些功能模塊,增加了在設(shè)計方案中不包含且擁有更高質(zhì)

26、量的功能模塊。最終可以實現(xiàn)應(yīng)用程序的編寫。第三章 無線表決系統(tǒng)控制端軟件界面的設(shè)計3.1 軟件界面介紹開始3.1.1 程序流程圖成功失敗否否是是結(jié)束投票結(jié)束程序主頁面結(jié)束投票統(tǒng)計顯示投票結(jié)果統(tǒng)計投票顯示結(jié)果投票開始投票開始錯誤正確正確錯誤多人投票模式選擇參數(shù)選擇參數(shù)單人投票模式投票模式連接圖1 程序流程圖3.1.2 軟件界面無線表決系統(tǒng)控制端軟件同所有的windows應(yīng)用程序一樣采用交互式可視化窗口的形式,擁有友好的操作界面,給予操作人員良好的操作體驗??刂贫塑浖蔡峁┝巳齻€相互聯(lián)系的軟件界面,分別為如下三個界面:1、主界面該程序界面為控制端應(yīng)用程序的第一個窗口界面,是整個軟件的控制中心。該界

27、面提供了表決模式選擇、串口連接測試、打開和關(guān)閉串口等功能,是整個應(yīng)用程序運行時的出發(fā)點,如圖-2所示:圖2 主界面圖2、單人投票模式在主程序界面選擇了單人投票模式后,程序跳轉(zhuǎn)到單人模式界面運行。單人投票模式分為三個模塊:參數(shù)選擇和數(shù)據(jù)顯示區(qū)、操作功能區(qū)、數(shù)據(jù)存儲和讀取區(qū)。參數(shù)選擇和數(shù)據(jù)顯示區(qū)主要功能時給操作員提供一個選擇投票參數(shù)的界面,如參加選舉的的對象的號碼等屬性,數(shù)據(jù)顯示區(qū)則是顯示手持端設(shè)備發(fā)送回來的數(shù)據(jù)結(jié)果的實時顯示。操作功能區(qū)提供在單人投票模式下可以實現(xiàn)的各種功能,如開始投票、暫停投票、結(jié)束投票、清除參數(shù)選擇和數(shù)據(jù)顯示區(qū)的數(shù)據(jù)。數(shù)據(jù)存儲和讀取區(qū)的功能主要是完成對投票統(tǒng)計結(jié)果的存儲和讀取

28、。單人投票模式程序界面如圖-3所示:圖3 單人投票模式界面圖3、多人投票模式多人投票模式和單人投票模式基本相同也由三個不同的模塊構(gòu)成,功能基本相同,主要不同的部分主要集中在參數(shù)選擇和數(shù)據(jù)的顯示區(qū)域。單人投票模式選擇的參數(shù)主要只是針對單個對象,而多人投票模式針對的就是多個對象,所以在參數(shù)選擇的區(qū)域就出現(xiàn)了兩個界面的差異。多人投票模式的程序界面如圖-4所示:圖4 多人投票模式界面圖3.2 windows控件3.2.1 windows控件1、windows標(biāo)準(zhǔn)控件windows標(biāo)準(zhǔn)控件由windows操作系統(tǒng)提供,在windows 95中還提供了一些新增的控件。所有這些控件對象都是可編程的,我們可以

29、使用visual c+提供的對話框編輯器把它們添加到對話框中。microsoft基礎(chǔ)類庫(mfc)提供了封裝這些控件的類,它們列于表3.1。表3.1 windows標(biāo)準(zhǔn)控件控件mfc類描述動畫canimatectrl顯示連續(xù)的avi視頻剪輯按鈕cbutton用來產(chǎn)生某種行為的按鈕,以及復(fù)選框、單選鈕和組框組合框ccombobox編輯框和列表框的組合編輯框cedit用于鍵入文本標(biāo)題頭cheaderctrl位于某一行文本之上的按鈕,可用來控制顯示文件的寬度熱鍵chotkeyctrl用于通過按下某一組合鍵來很快的執(zhí)行某些常用的操作圖象列表cimagelist一系列圖象(典型情況下是一系列圖標(biāo)或位圖)

30、的集合。圖象列表本身不是一種控件,它常常是和其它控件一起工作,為其它控件提供所用的圖象列表列表clistctrl顯示文本及其圖標(biāo)列表的窗口列表框clistbox包括一系列字符串的列表進(jìn)度cprogressctrl用于在一較長操作中提示用戶所完成的進(jìn)度多格式文本編輯cricheditctrl提供可設(shè)置字符和段落格式的文本編輯的窗口滾動條cscrollbar為對話框提供控件形式的滾動條滑塊csliderctrl包括一個有可選標(biāo)記的滑塊的窗口旋轉(zhuǎn)按鈕cspinbuttonctrl提供一對可用于增減某個值的箭頭靜態(tài)文本cstatic常用于為其它控件提供標(biāo)簽狀態(tài)條cstatusbarctrl用于顯示狀態(tài)

31、信息的窗口,同mfc類cstatusbar類似控件mfc類描述選項卡ctabctrl在選項卡對話框或?qū)傩皂撝刑峁┚哂蓄愃乒P記本中使用的分隔標(biāo)簽的外觀的選項卡工具條ctoolbarctrl具有一系列命令生成按鈕的窗口,同mfc類ctoolbar類似工具提示ctooltipctrl一個小的彈出式窗口,用于提供對工具條按鈕或其它控件功能的簡單描述樹ctreectrl用于顯示一系列的項的繼承結(jié)構(gòu)2、activex控件activex控件可用于對話框中,也可用于html文檔中。這種控件過去被稱為ole控件。本書將在專門的章節(jié)中來講述關(guān)于activex控件的知識。這里僅指出activex控件使用了與標(biāo)準(zhǔn)控件

32、完全不同的接口和實現(xiàn)方法。3、其它mfc控件類除了windows標(biāo)準(zhǔn)控件和自己編寫的或者來自于第三方軟件開發(fā)商的activex控件以外,mfc還提供了另外三種控件,它們由下面的三個類進(jìn)行封裝:(1) 類cbitmapbutton用于創(chuàng)建以位圖作為標(biāo)簽的按鈕,位圖按鈕最多可以包括四個位圖圖片,分別代表按鈕的四種不同狀態(tài)。(2) 類cchecklistbox用于創(chuàng)建選擇列表框,這種列表框中的每一項前面有一個復(fù)選框,以決定該項是否被選中。 (3) 類cdraglistbox用于創(chuàng)建一種特殊的列表框,這種列表框允許用戶移動列表項。 3.2.2 系統(tǒng)使用控件在前面的章節(jié)中我們提到,控件是一些行為標(biāo)準(zhǔn)化了

33、的窗口,一般用于對話框或其它窗口中充當(dāng)與用戶交互的元素。本系統(tǒng)控制端軟件是一個的交互式窗口軟件,windows控件給我們提供了豐富的控件資源來實現(xiàn)軟件的功能,鑒于本軟件相對叫簡單,所以只是用了windows控件中的幾個比較常用的控件:1、cbutton按鈕控件 產(chǎn)生某種行為的按鈕,以及復(fù)選框、單選鈕和組框。2、ccombobox組合框控件 在控制端軟件界面的參數(shù)選擇區(qū)提供表決參數(shù)的選擇功能。3、cedit編輯框 提供數(shù)據(jù)的輸入和顯示,在控制端軟件界面中只提供數(shù)據(jù)的中轉(zhuǎn)和顯示。4、cstatic 靜態(tài)文本框 提供數(shù)據(jù)的顯示功能及相關(guān)控件的功能說明。5、mscomm控件 visual c+為我們提

34、供了一種好用的activex控件microsoft communications control(即mscomm)來支持應(yīng)用程序?qū)Υ诘脑L問,在應(yīng)用程序中插入mscomm控件后就可以較為方便地實現(xiàn)對通過計算機(jī)串口收發(fā)數(shù)據(jù)。鑒于本系統(tǒng)軟件的實際功能需求,我們只使用了以上功能的控件,只是windows控件的一部分,各個控件的詳細(xì)功能我們將在下節(jié)分析。3.3 軟件控件功能的實現(xiàn)3.3.1建立mfc應(yīng)用程序打開vc應(yīng)用程序,在“文件”菜單中選擇“新建”命令,在彈出的新建對話框中選擇“工程”標(biāo)簽,然后選中“mfc appwizard(exe)”,再在對話框的右側(cè)輸出工程名,選擇工程存放的位置。如圖5所示

35、:圖5 創(chuàng)建mfc工程應(yīng)用程序的類型有“單文檔”、“多文檔”、“基本對話框”三種,根據(jù)我們的實際需要我們選擇“基本對話框”類型,得到如圖-6所示的界面:圖6 mfc基本對話框界面在完成了以上步驟后可以開始自己程序的界面設(shè)計,選擇自己需要的控件按鈕放置以基本對話框上。3.3.2 windows標(biāo)準(zhǔn)控件使用1.按鈕控件按鈕控件是在本軟件中使用最多的一種控件,貫穿于整個程序之中。在控制端軟件的三個界面中多大量的使用按鈕控件,鑒于不同按鈕的功能不同,主要從以下兩個方面來了解按鈕控件的使用。(1) 通過按鈕在主界面和兩個分界面之間進(jìn)行聯(lián)系 在主頁面中有兩個選擇投票模式的按鈕“單人投票模式”和“多人投票模

36、式”,為了實現(xiàn)在單擊相關(guān)按鈕時程序界面自動彈至選擇的界面,我們分別給兩個按鈕添加變量m_button1和m_button2(m_button1為“單人投票模式”按鈕的變量名m_button2為“多人投票模式”按鈕的變量名),將兩個變量的類型改為cbutton類型。在message maps選項卡下的message選項卡下選擇bn_clicked類型,這個消息響應(yīng)的意思是在單擊該按鈕的時候響應(yīng)該按鈕的相關(guān)代碼,其代碼為:單人投票模式按鈕下代碼為:shellexecute(null,open,f:/program files/microsoft visual studio/myprojects/單

37、人模式/單人投票模式/debug/單人投票模式.exe,null,null,sw_shownormal);多人投票模式按鈕下代碼為:shellexecute(null,open,f:/program files/microsoft visual studio/myprojects/多人模式/多人投票模式/debug/多人投票模式.exe,null,null,sw_shownormal);這樣在兩個按鈕的消息響應(yīng)函數(shù)中加入以上兩條代碼則實現(xiàn)了程序從主界面像兩個分界面的跳轉(zhuǎn)。(2)其他功能按鈕我們知道按鈕的點擊方式分為單擊和雙擊兩種方式,而兩種方式的實現(xiàn)主要是在于message選擇的類型,如果選擇

38、的類型是bn_clicked那么點擊方式就是單擊,如果選擇的類型是bn_doubleclicked那么點擊的方式就是雙擊,在本軟件系統(tǒng)中我們的按鈕全部使用單擊的方式來實現(xiàn)功能。主界面中其他功能的按鈕主要有“打開串口”,“關(guān)閉串口”,“連接測試”和“about”如圖-7所示:圖7 其他功能按鈕 如同選擇投票模式按鈕一樣,在主界面繪出了這些按鈕的圖形之后我們逐一給這些按鈕添加成員變量,為了方便記憶和管理我們賦予其具有特殊意義的變量名,如在為“打開串口”按鈕命名變量名時可以使用m_openck作為變量名,既簡單又明了。接下來就是添加各個按鈕的消息響應(yīng)代碼,“打開串口”,“關(guān)閉串口”,“連接測試”三個

39、按鈕的消息響應(yīng)代碼涉及到串口通信的mscomm控件在下一章詳細(xì)分析?!癮bout”按鈕是一個關(guān)于本軟件的闡述,我們使用簡單的彈窗口的模式呈現(xiàn),在這里使用的是messagebox()這個函數(shù)來實現(xiàn)代碼如下:messagebox (本投票系統(tǒng)有舒墨,劉英爽,矣剛共同開發(fā)完成! n 無線表決系統(tǒng)1.00, 關(guān)于系統(tǒng)0, 0) ;具體效果如圖-8所示:圖8 about窗口界面2.編輯框和靜態(tài)文本框編輯框和靜態(tài)文本框的使用也是使用比較普遍的兩個控件,通常這兩個控件在程序中的使用主要是用于顯示數(shù)據(jù),編輯框相對于靜態(tài)文本框多了一個可輸入的功能。編輯框在本軟件中的功能主要是實現(xiàn)數(shù)據(jù)的顯示和在串口通信中實現(xiàn)數(shù)據(jù)

40、的傳遞工作,靜態(tài)文本框在整個程序中實現(xiàn)的只是顯示功能即用于對相關(guān)控件的功能說明。在編輯框和靜態(tài)文本框下一般不用編寫代碼,兩者都是被動響應(yīng),也就是說在其他控件(如按鈕)中的代碼將相關(guān)數(shù)據(jù)傳遞給編輯框和靜態(tài)文本框顯示,所以這兩者在使用的時候注意兩者id的名稱。如“連接”按鈕被按下時在靜態(tài)文本框“連接狀態(tài)”上顯示“連接中”字樣的代碼如下:getdlgitem(idc_static)- setwindowtext(連接中.0);idc_static為靜態(tài)文本框“連接狀態(tài)”id號,此語句的意思為在id號為idc_static的靜態(tài)文本框中顯示“連接中”字樣。3. 組合框控件ccombobox組合框控件在

41、控制端軟件界面的參數(shù)選擇區(qū)提供表決參數(shù)的選擇功能,為投票參數(shù)的選擇帶來了極大的方便(如圖-9和圖-10所示)。在單人投票模式和多人投票模式下均使用了ccombobox組合框控件,控件的選擇數(shù)據(jù)可以在控件屬性中手動輸入,在單人模式下賦予組合框控件變量名m_combo,多人投票模式下為m_como。兩者的變量類型都為ccombobox類型,在message類型中選擇cbn_selchange類型即選中下拉菜單時候響應(yīng)該控件是的函數(shù),以單人投票模式下組合框消息響應(yīng)代碼為例:cstring m_strtemp; /存放得到的編輯框內(nèi)容int nindex=m_combo.getcursel(); /得

42、到被選中內(nèi)容索引m_combo.getlbtext(nindex,m_strtemp); /得到被選中內(nèi)容的名字getdlgitem(idc_static11)- setwindowtext(m_strtemp); /被選中的內(nèi)容在編輯框里顯示圖10 多人模式組合框界面圖9 單人模式組合框界面 3.3.3 activex控件visual c+為我們提供了一種好用的activex控件microsoft communications control(即mscomm)來支持應(yīng)用程序?qū)Υ诘脑L問,在應(yīng)用程序中插入mscomm控件后就可以較為方便地實現(xiàn)對通過計算機(jī)串口收發(fā)數(shù)據(jù),詳細(xì)的串口通信在第四章完成

43、。第四章 串口通信和虛擬硬件連接4.1 串口通信的實現(xiàn)32位下串口通信程序可以用兩種方法來實現(xiàn):利用activex控件;使用api 通信函數(shù)。本無線表決系統(tǒng)控制端的串口通信的實現(xiàn)使用的是第一種方法,即使用activex控件。visual c+為我們提供了一種好用的activex控件microsoft communications control(即mscomm)來支持應(yīng)用程序?qū)Υ诘脑L問,在應(yīng)用程序中插入mscomm控件后就可以較為方便地實現(xiàn)對通過計算機(jī)串口收發(fā)數(shù)據(jù)。4.1.1 添加mscomm控件在visual c+創(chuàng)建的mfc工程,其中的控件選擇版面并沒有mscomm控件,得在當(dāng)前的wor

44、kspace中添加。具體流程為:project菜單-add to project-components and controls-registered activex controls-選擇components: microsoft communications control.成功添加后在控件版面出現(xiàn)圖標(biāo)。4.1.2 初始化串口所謂串口的初始化就是對串口的參數(shù)進(jìn)行設(shè)置,比如串口號、傳輸數(shù)據(jù)的類型及波特率等串口的屬性的預(yù)設(shè)置。在開始初始化之前對mscomm控件屬性進(jìn)行設(shè)置,確定控件的變量名和變量類型,在軟件編程中以m_mscomm為控件的變量名,選擇變量類型為cmscomm型。這個時候可以開始

45、串口的初始化,在classview選項卡中的cmydlg下的oninitdialog()下編寫初始化代碼如下:if(m_mscomm.getportopen() m_mscomm.setportopen(false);/如果串口是打開的,那么關(guān)閉串口m_mscomm.setcommport(3); /選擇串口號com3if( !m_mscomm.getportopen() m_mscomm.setportopen(true);/打開串口 else afxmessagebox( cannot open serial port ); m_mscomm.setsettings( 9600,n,8,1

46、 ); /波特率9600,無校驗,8個數(shù)據(jù)位,1個停止位 m_mscomm.setinputmode(1); /1:表示以二進(jìn)制方式檢取數(shù)據(jù) m_mscomm.setrthreshold(1); /參數(shù)1表示每當(dāng)串口接收緩沖區(qū)中有多于或等于1個字符時將引發(fā)一個接收數(shù)據(jù)的oncomm事件 m_mscomm.setinputlen(0); /設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長度為0 m_mscomm.getinput();/先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)至此串口初始化完成,在程序運行時首先執(zhí)行的就是oninitdialog()下的初始化程序,實現(xiàn)串口的各項設(shè)置。4.1.3 串口的讀寫數(shù)據(jù)mscomm 類的讀寫函數(shù)比

47、較簡單:getinput()和setoutput()。函數(shù)原形分別為variant getinput()和void setoutput(const variant newvalue),均使用variant類型。但pc機(jī)發(fā)送和接收數(shù)據(jù)時習(xí)慣用字符串形式。msdn中查閱variant類型,可以用bstr表示字符串,但所有的bstr都包含寬字符,而只有windows nt支持寬字符,windows 9x并不支持。所以要完成一個適應(yīng)各平臺的串口應(yīng)用程序必須解決這個問題。在對mscomm控件進(jìn)行變量定義命名的時候以m_mscomm為控件的變量名,選擇變量類型為cmscomm型,message則為onco

48、mm類型。完成以上工作后開始對mscomm控件進(jìn)行消息代碼的寫入: variant variant_inp; colesafearray safearray_inp; long len,k; byte rxdata2048; /設(shè)置byte數(shù)組 an 8-bit integerthat is not signed. cstring strtemp; if(m_mscomm.getcommevent()=2) /事件值為2表示接收緩沖區(qū)內(nèi)有字符 variant_inp=m_mscomm.getinput(); /讀緩沖區(qū) safearray_inp=variant_inp; /variant型變

49、量轉(zhuǎn)換為colesafearray型變量 len=safearray_inp.getonedimsize(); /得到有效數(shù)據(jù)長度 for(k=0;k len;k+) safearray_inp.getelement(&k,rxdata+k);/轉(zhuǎn)換為byte型數(shù)組 for(k=0;k setwindowtext(m_strtemp); /被選中的內(nèi)容在編輯框里顯示程序開始運行時可以看到如下情況:程序運行后程序運行前 圖12 程序運行前后的對比5.1.2 開始投票和參數(shù)選擇在按下開始按鈕的時候,開始執(zhí)行預(yù)先編碼的代碼,代碼主要的功能是掃描參數(shù)選擇部分的組合框,通過幾個if語句跳轉(zhuǎn)至不同的程序段

50、并向串口發(fā)送不同的數(shù)據(jù),如代碼段:int nindex=m_combo.getcursel(); /得到被選中內(nèi)容索引m_combo.getlbtext(nindex,m_strtemp); /得到被選中內(nèi)容的名字 if (m_strtemp=m_a) /m_a為組合框選中1時的值 getdlgitem(idc_send)- setwindowtext(00010001); /00010001為組合框選擇1時開始投票的指令代碼,此代碼是預(yù)先編好的和單片機(jī)中的一致updatedata(true); /讀取編輯框內(nèi)容 m_mscomm.setoutput(colevariant(m_danrens

51、trtxdata);/發(fā)送數(shù)據(jù)5.1.3 投票開始和數(shù)據(jù)顯示 投票開始后會有來自手持設(shè)備端的數(shù)據(jù)進(jìn)入,在經(jīng)過mscomm控件程序的判斷之后將數(shù)據(jù)送入相應(yīng)的編輯框,此時的編輯框內(nèi)容表示的是“贊成”,“反對”等數(shù)據(jù)的和,也就是被選舉對象的票數(shù)情況,在這個過程中應(yīng)該主要傳遞數(shù)據(jù)的格式,因為在做數(shù)據(jù)處理(加法處理)時必須是以整數(shù)的形式進(jìn)行,所有在相加之前得進(jìn)行數(shù)據(jù)轉(zhuǎn)換,如下列代碼段:if(m_danrenstrrxdata=01110001) /01110001為投贊成票時手持設(shè)備發(fā)送來的編碼 m_cc=atoi(m_zc);/ 數(shù)據(jù)格式轉(zhuǎn)換 updatedata(true); m_zh=m_cc+m_jf; /累計加

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論