版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
65/76××學院畢業(yè)設計(論文)題目:基于單片機的多功能環(huán)境檢測系統(tǒng)設計作者:指導教師:專業(yè):電氣自動化時間:××學院畢業(yè)論文基于單片機的多功能環(huán)境監(jiān)測系統(tǒng)設計——串口通信與界面設計Thedesignofmultifunctionenvironmentalmonitoringbasedonsingle-chip——Serialcommunicationsandinterfacedesign摘要隨著工業(yè)技術的進展,環(huán)境問題差不多成為全世界關注的問題。近年來,水土流失、荒漠化、草原退化和物種減少;生態(tài)相當脆弱,自然災難頻繁;環(huán)境污染嚴峻,直接危及社會、經(jīng)濟的進展。人們差不多認識到,為了愛護環(huán)境,就將對環(huán)境的演化趨勢、特點及存在的問題作進一步的細致的了解。多功能環(huán)境監(jiān)測是利用各種技術測定和分析生命系統(tǒng)各層次對自然或人為作用的反應或反饋效應的綜合表征來推斷和評價這些干擾對環(huán)境產(chǎn)生的阻礙、危害及其變化規(guī)律,為環(huán)境質(zhì)量的評估、調(diào)控和環(huán)境治理提供科學依據(jù)。本課題從國內(nèi)外環(huán)境監(jiān)測系統(tǒng)的研究現(xiàn)狀動身,結(jié)合實際情況設計一個基于單片機的多功能環(huán)境監(jiān)測系統(tǒng)。本文要緊負責串口通信及界面軟件的設計。其中,上位機軟件要緊以WindowsXP為操作平臺,采納Delphi7.0編寫。Delphi是一種可視化的、快速的應用程序,具有面向?qū)ο缶幊蹋С謭F隊開發(fā),提供工程治理,對數(shù)據(jù)庫的良好支持等特性,是一個集數(shù)據(jù)通信、存儲、查詢、處理于一體的綜合性軟件。本設計能夠?qū)崿F(xiàn)以下功能:PC機通過串行口與下位機通信,將下位機采集到的溫、濕度及光線數(shù)據(jù)在PC機上實時顯示;對歷史數(shù)據(jù)進行查詢、分析、統(tǒng)計,并能將相應的結(jié)果打印出來。關鍵詞:溫濕度;光線狀況;上位機;串口通信AbstractWiththedevelopmentofindustrialtechnology,environmentalissueshavebecometheworld'sconcern.Inrecentyears,soilerosion,desertification,grasslanddegradationandlossofbiodiversity;ecologyveryfragileandfrequentnaturaldisasters;environmentalpollution,directlythreateningthesocialandeconomicdevelopment.Environmentalmonitoringistheuseofmulti-functionmeasurementandanalysistechnologysystematalllevelsoflifetonaturalorman-maderoleofresponseorfeedbackeffectsofthecomprehensivecharacterizationtodetermineandevaluatetheimpactofinterferenceontheenvironment,endangertheirtrends,theenvironmentalqualityassessment,controlandprovidethescientificbasisforenvironmentalmanagement.Thistopicembarksfromthedomesticandforeignenvironmentalmonitoringsystem'sresearchpresentsituation,theunionactualsituationdesignsonebasedonmonolithicintegratedcircuit'smulti-purposeenvironmentalmonitoringsystem.Thisarticleprimarycognizanceserialportcorrespondenceandcontactsurfacesoftware'sdesign.And,thesuperiormachinesoftwaremainlytakeWindowsXPastheserviceplatform,usestheDelphi7.0compilation.Delphiisonekindofvisualization,thefastapplicationprocedure,hastheobject-orientedprogramming,supportstheteamtodevelop,providestheprojectmanagement,todatabasecharacteristicsandsoongoodsupport,isacollectiondatacommunication,thememory,theinquiry,processinginabody'scomprehensivesoftware.Thisdesigncanrealizethefollowingfunction:PCmachinethroughserialportandlowerpositionmachinecorrespondence,lowerpositionmachinegatheringwarm,humidityandopticalfiberdataonthePCmachinerealtimedisplay;Carriesontheinquiry,theanalysis,thestatisticstothehistoricaldata,andcanprintthecorrespondingresult.Keywords:mperatureandhumidity;Lightingconditions;PC;SerialCommunication目錄第一章緒論 11.1課題背景 11.2國內(nèi)外環(huán)境監(jiān)測現(xiàn)狀及進展趨勢 21.2.1進展現(xiàn)狀 21.2.2進展趨勢 31.3本課題要緊工作 4第二章系統(tǒng)設計總體方案 52.1監(jiān)測系統(tǒng)結(jié)構(gòu)框圖 52.2監(jiān)測終端的設計 52.3通信方式的選擇 6第三章上位機開發(fā)環(huán)境與要緊技術 83.1上位機開發(fā)平臺 83.2數(shù)據(jù)庫方案的實現(xiàn) 83.3串口通信的實現(xiàn)方法 93.3.1概述 93.3.2串口通信API函數(shù)的實現(xiàn)原理 113.3.2串口類的開發(fā) 13第四章使用SPComm控件實現(xiàn)串口通信 144.1安裝SPComm控件 144.2SPComm的要緊屬性,方法和事件 144.2.1屬性 144.2.2方法 154.2.3事件 154.3SPComm的使用 16第五章上位機軟件設計方案 195.1系統(tǒng)設計概述 195.2數(shù)據(jù)庫平臺的選擇 195.3串口通信在本系統(tǒng)中的實現(xiàn) 205.3.1通信協(xié)議的設計 205.3.2通信程序的開發(fā) 245.4上位機程序的開發(fā)設計 245.4.1系統(tǒng)登錄模塊 255.4.2系統(tǒng)主界面模塊 265.4.3用戶設置模塊 275.4.4歷史數(shù)據(jù)查詢模塊 28結(jié)論 31致謝 32參考文獻 33附錄 34第一章緒論1.1課題背景隨著人們對環(huán)境問題及其規(guī)律認識的不斷深化,環(huán)境問題不再局限于排放污染物引起的健康問題,而且包括自然環(huán)境的愛護、生態(tài)平衡和可持續(xù)進展的資源問題。因此,環(huán)境監(jiān)測正從一般意義上的環(huán)境污染因子監(jiān)測開始向生態(tài)環(huán)境監(jiān)測過渡和拓寬。除了常見的各類污染因子外,由于人為因素阻礙,災難性天氣增加,森林植被銳減,水土流失嚴峻,土壤沙漠化加劇,洪水泛濫,沙塵暴、泥石流頻發(fā),酸沉降等,使我國本已十分脆弱的生態(tài)環(huán)境更加惡化。這促使人們重新審查環(huán)境問題的復雜性,用新的思路和方法了解和解決環(huán)境問題。人們開始認識到,為了愛護生態(tài)環(huán)境,必須對環(huán)境生態(tài)的演化趨勢、特點及存在的問題建立一套行之有效的動態(tài)監(jiān)測與操縱體系,這確實是生態(tài)環(huán)境監(jiān)測。生態(tài)環(huán)境監(jiān)測是環(huán)境監(jiān)測進展的必定趨勢。本質(zhì)上看,環(huán)境愛護是以減少或幸免生態(tài)系統(tǒng)的破壞為終極目標。對環(huán)境監(jiān)測,目前單純的理化指標和生物指標監(jiān)測存在專門大的局限性,而生態(tài)環(huán)境監(jiān)測則可彌補傳統(tǒng)環(huán)境監(jiān)測的不足。因此前者強調(diào)“局部剖析”,只對大氣、水、土壤等中的化學毒物或有害物理因子進行測定;而后者著眼于“整體綜合”,對人類活動造成的生態(tài)破壞和阻礙進行測定。能夠講,生態(tài)環(huán)境監(jiān)測是生態(tài)愛護的前提,是生態(tài)治理的基礎,是生態(tài)法律法規(guī)的依據(jù)。目前,生態(tài)環(huán)境監(jiān)測已在全球范圍內(nèi)展開,但在我國才剛起步,基礎差,底子薄,相對落后,缺乏統(tǒng)一的標準,國家尚未制定技術規(guī)范。本文要緊結(jié)合國內(nèi)情況擬對生態(tài)環(huán)境監(jiān)測作全面介紹,以期大伙兒共同努力來推動生態(tài)環(huán)境監(jiān)測工作在我國的開展。盡管我國經(jīng)濟一直以來快速進展,然而在經(jīng)濟進展的同時對環(huán)境的阻礙也日益擴大,尤其是負面的阻礙。反過來生態(tài)環(huán)境的破壞也逐步威脅著我們?nèi)祟惖纳婧瓦M展。為了更好的改善人類的生存環(huán)境、盡可能的幸免環(huán)境進一步惡化,對環(huán)境情況特不是與人類關系緊密的環(huán)境參數(shù)如溫度和濕度的監(jiān)測無疑具有特不重要的意義。人類的生存和社會的活動與溫度、濕度,光線等環(huán)境因素的相關性越來越大,對環(huán)境參數(shù)進行有效的實時監(jiān)測,已成為目前特不嚴峻的課題。環(huán)境監(jiān)測是獵取環(huán)境信息,認識環(huán)境質(zhì)量和評價環(huán)境好壞的重要手段,也是進行環(huán)境監(jiān)督和環(huán)境治理等治理工作的要緊信息來源和途徑。環(huán)境監(jiān)測系統(tǒng)是集傳感器技術、通信網(wǎng)絡和計算機應用為一體的綜合數(shù)據(jù)分析治理系統(tǒng),隨著自動操縱技術、電子信息技術和大規(guī)模集成電路等技術近年來迅速的進展,許多西方發(fā)達國家差不多擁有專門多先進的環(huán)境監(jiān)測設備與環(huán)境監(jiān)測手段。假如直接從外國購買這些現(xiàn)成的設備和技術,關于我國來講成本投入是比較高的,而且這些設備和監(jiān)測手段可能與我國復雜多變的氣候條件和具體的情況不相匹配,因此當前不適合直接購買和應用這些設備和技術。目前,我國的環(huán)境監(jiān)測系統(tǒng)與這些國家相比還有較大的差距,但隨著我國科技實力的增強和經(jīng)濟實力的提高,也先后開發(fā)了一系列的環(huán)境監(jiān)測系統(tǒng)。在這領域的進展和提高依舊比較大的。然而總體來講這些設備的技術水平仍有待提高。因此開發(fā)研制出適合我國現(xiàn)狀的低成本高性能的環(huán)境監(jiān)測系統(tǒng),是一項特不緊迫的任務,也對提高我國現(xiàn)代化企業(yè)的經(jīng)濟效益和加快我國的現(xiàn)代化水平具有特不重要意義。1.2國內(nèi)外環(huán)境監(jiān)測現(xiàn)狀及進展趨勢1.2.1進展現(xiàn)狀近些年來我國的經(jīng)濟進展迅速,人們的生活水平得到了專門大的提高,然而與此同時工業(yè)化的進展也給環(huán)境帶來的巨大的改變。近些年來京津地區(qū)的沙塵暴和森林覆蓋率的大量減少確實是專門好的證據(jù)。傳統(tǒng)上采納比較落后的人工環(huán)境監(jiān)測方法,然而這種方法的實時性差,受自然條件的限制比較大,而且關于突發(fā)的環(huán)境問題不能及時發(fā)覺同時處理,不利于宏觀把握環(huán)境的變化情況。由于經(jīng)濟等因素我國目前還有專門多地點使用傳統(tǒng)的環(huán)境監(jiān)測方法。隨著技術的進展和經(jīng)濟實力的提升,我國的環(huán)境監(jiān)測水平也得到了一定的提高。在專門多省份實現(xiàn)高速通信網(wǎng)絡的同時,環(huán)境監(jiān)測的參數(shù)和數(shù)據(jù)差不多能聯(lián)網(wǎng)的得到觀測和操縱。硬件設備差不多得到專門大的改善,傳統(tǒng)的人工報表差不多改成微機操縱系統(tǒng)。還有部分省市差不多采納自動的環(huán)境監(jiān)測系統(tǒng),能更加及時和準確的反饋數(shù)據(jù)。然而由于我國幅員寬闊,監(jiān)測終端的需求量專門大,同時環(huán)境監(jiān)測系統(tǒng)的軟硬件開發(fā)功能還不是專門完善,數(shù)據(jù)的綜合分析能力也有待提高。國內(nèi)產(chǎn)品較之國外技術還顯得比較薄弱。要緊表現(xiàn)在:l、目前市場上同類產(chǎn)品存儲空間有限。且基于單片機終端操作的,專門少具有實時通信的功能,這關于遠程進行數(shù)據(jù)的傳輸要求的單位的使用是不方便的。2、現(xiàn)有的產(chǎn)品在數(shù)據(jù)輸出僅支持點對點通訊且速度慢、距離短、且仍受地域限制。且不能滿足大數(shù)據(jù)量多通道的實時數(shù)據(jù)的傳輸?shù)墓δ堋?、產(chǎn)品的現(xiàn)場安裝受使用環(huán)境所限,環(huán)境應用適用性差、測控手段單一。專門難進行遠距離的監(jiān)控和報警。4、產(chǎn)品只用液晶、LED等方式簡單顯示,使操作無法進行現(xiàn)場復雜有用的數(shù)據(jù)分析、讀取、按需數(shù)據(jù)圖形打印。5、設備性能不高,難以適應要求較高的場合。如測量溫度范圍低,難以滿足超高溫,超低溫的要求。目前國外的環(huán)境監(jiān)測系統(tǒng)差不多廣泛應用在各個領域,并進展的比較完善。許多國家的環(huán)境參數(shù)監(jiān)控點差不多分布在各個地區(qū),技術上也專門先進,能夠監(jiān)測溫度、濕度、光線和水位等多個環(huán)境參數(shù)。部分產(chǎn)片還使用了衛(wèi)星等技術進行環(huán)境監(jiān)測。歐洲的一些國家各國之間以網(wǎng)絡為核心進行合作,差不多能對歐洲環(huán)境的現(xiàn)狀和進展趨勢作出及時的有效推斷的預測,并依照此采取必要的措施來愛護環(huán)境。一些美國的公司利用空間技術,利用太空的衛(wèi)星能把地面的情況特不是大氣的監(jiān)測數(shù)據(jù)做成圖像完整的傳回地面監(jiān)測,科學家的數(shù)據(jù)準確可靠。令人可喜的是我國的環(huán)境監(jiān)測技術正朝著現(xiàn)代化和高技術含量方向進展。目前在某些領域也把衛(wèi)星技術、遙感技術和GPS等技術廣泛應用于環(huán)境的監(jiān)測。在網(wǎng)絡方面利用無線傳輸、P寬帶網(wǎng)絡和GPRS、INTERNET等多種傳輸方式進行數(shù)據(jù)的傳輸與處理。能夠在對環(huán)境指數(shù)的采集、分析、整理的基礎上實現(xiàn)環(huán)境進展的預測。1.2.2進展趨勢近年來,神經(jīng)網(wǎng)絡、遺傳算法、模糊理論等人工智能方法在國外溫室環(huán)境操縱技術中得到重視并逐步進展,其中神經(jīng)網(wǎng)絡方法應用較廣。另外,采納多個環(huán)境因子綜合考慮的多因子操縱方式替代現(xiàn)行的單個環(huán)境因子分不考慮的單因子操縱方式也是研究的一個重要方向。目前在溫室環(huán)境操縱系統(tǒng)中,分布式系統(tǒng)是要緊進展方向,系統(tǒng)中不存在一個操縱中心,要緊操縱功能由各分布的子處理器完成。各個溫的操縱功能一般由單片機(子處理器)完成,PC機作為主處理器,僅實現(xiàn)輔助功能,脫離主處理器,整個操縱系統(tǒng)仍可工作。分布式操縱方式具有價格低、操縱靈活、可靠性高等優(yōu)點,將在以后專門長一個時期內(nèi)廣泛應用于溫室環(huán)境操縱系統(tǒng)中。隨著網(wǎng)絡技術的進展,能夠通過Iniemet進行遠程操縱或診斷,在辦公室通過網(wǎng)絡對溫室設備進行操作,達到減輕生產(chǎn)人員勞強度、提高設備利用效率,具有寬敞的應用前景。1.3本課題要緊工作本設計可實時測量某一個體空間中任意一點的溫度、濕度數(shù)據(jù)以及光線狀況,能在小型終端設備的LCD上顯示,還能通過串口通信在微機上實現(xiàn)實時數(shù)據(jù)的顯示、分析和圖形打印等功能。能夠定時地將數(shù)據(jù)自動地打印出來供隨時監(jiān)管或存檔。其中,上位機軟件的要緊功能如下:1、歷史數(shù)據(jù)查詢功能:對以往的歷史數(shù)據(jù)能夠進行查詢和分析,并用圖表的方式顯示環(huán)境的進展趨勢。2、動態(tài)記錄顯示功能:能夠連續(xù)實時的采集和記錄監(jiān)測空間內(nèi)溫度、濕度、光線狀況等參數(shù)的情況,以數(shù)字和表格方式進行實時顯示和記錄監(jiān)測信息。3、數(shù)據(jù)存儲功能:所有的數(shù)據(jù)采集和記錄到計算機上,按要求記錄溫、濕度以及光線狀況表格,能夠定時自動保存、備份等。4、打印功能:按要求打印某個點溫、溫度、光線狀況表格,自動定時打印和手動人工打印畫面及參數(shù)報表。第二章系統(tǒng)設計總體方案2.1監(jiān)測系統(tǒng)結(jié)構(gòu)框圖多參數(shù)環(huán)境監(jiān)測系統(tǒng)由環(huán)境參數(shù)采集單元(包括溫度、濕度、光照度傳感器及信號調(diào)理電路)、單片機、液晶顯示模塊、PC機、傳輸設備以及電源組成。結(jié)構(gòu)框圖如圖2-1所示。上位機上位機噴灌系統(tǒng)天窗電機排風扇顯示器1602單片機A/D轉(zhuǎn)換器溫度傳感器濕度傳感器光線傳感器繼電器操縱圖2-1系統(tǒng)結(jié)構(gòu)圖2.2監(jiān)測終端的設計監(jiān)測終端組成框圖如圖2-2所示,該終端以單片機為核心,由各種傳感器、A/D轉(zhuǎn)換器、液晶顯示模塊、串行口輸入/輸出端口等構(gòu)成。環(huán)境參數(shù)經(jīng)信號采集電路和A/D轉(zhuǎn)換后送單片機,經(jīng)處理后在液晶上實時顯示,然后通過串口傳輸給上位機。傳感器傳感器傳感器傳感器信號采集A/D轉(zhuǎn)換液晶顯示微處理器計算機串口上位機2.3通信方式的選擇串口是計算機上通用設備通信的協(xié)議端口,現(xiàn)在大多數(shù)計算機包含串口。串口通信的標準通過使用和進展差不多有專門多中,但差不多差不多上在RS232標準的基礎上改進形成的。然而RS232標準只針關于點對點的單通道數(shù)據(jù)傳送,在此基礎上形成RS485標準,增加了多點和雙向通信能力。那個標準傳輸信號具有專門強的抗干擾能力,能夠達到更大的傳輸距離和更高的傳輸效率。由于上位機只有一臺,而需要通信的下位機有多臺,因此不一定能夠跟每個下位機同時及時的通信,因此為了更好的實現(xiàn)數(shù)據(jù)的傳輸,需要用排隊理論來合理的設計和操縱傳輸,使數(shù)據(jù)的傳輸更及時和有效,提高系統(tǒng)的通信能力。排隊理論確實是利用概率論和隨機理論,研究隨機系統(tǒng)內(nèi)服務與需求之間的關系,以便合理地設計和操縱排隊系統(tǒng)。在所研究的系統(tǒng)中,某一下位機請求與上位機通信,當上位機空閑時,立即響應請求,當上位機忙時,不能立即響應該請求。呼叫持續(xù)等待是一個有限的時刻,若某一等待響應的呼叫超過規(guī)定的等待時刻還沒有響應則該下位機掛斷,等待幾分鐘后再發(fā)送請求。各下位機的地位一樣時,相應的規(guī)則采納先到先服務的形式。服務時刻為一次傳送數(shù)據(jù)的通信時刻。由于多路請求是隨機的,同時相互之間完全獨立,但對整個系統(tǒng)而言,各下位機傳送的數(shù)據(jù)都能送入上位機中。目前串口是儀器儀表設備通用的通信協(xié)議端口,也用于獵取遠程采集設備的數(shù)據(jù)。串口通信的概念特不簡單,串口按位發(fā)送和接收字節(jié)。盡管比按字節(jié)的并行通信慢,然而由于串口通信是異步的,能夠在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù),其他線用于握手。第三章上位機開發(fā)環(huán)境與要緊技術3.1上位機開發(fā)平臺Delphi是聞名的Borland公司開發(fā)的可視化軟件開發(fā)工具。Delphi系列軟件的工作平臺相當廣泛,能夠工作于Windows95、Windows98、WindowsNT、Windows2000以及WindowsXP下,編程所用的語言為ObjectPascal語言。ObjectPascal語言具有高度清晰的結(jié)構(gòu),高效率的優(yōu)化系統(tǒng),是一種簡單易學,但又不乏其作為優(yōu)秀編程語言的特點。Delphi具有簡單、高效、功能強大的特點。和VC相比,Delphi更簡單、更易于掌握,而在功能上卻絲毫不遜色;和VB相比,Delphi則功能更強大、更有用。由于Delphi同時兼?zhèn)淞薞C功能強大和VB簡單易學的特點,因此它成為了程序員至愛的編程工具。Delphi的要緊特性如下:1)Delphi是32位應用程序,使用它能夠開發(fā)出各種功能強大的應用程序;2)Delphi的編譯器是目前世界上最快的32位本地代碼編譯器,使用這種編譯器產(chǎn)生的運行文件(EXE)是獨立的,不需要鏈接運行時的解釋器DL;3)Delphi可充分發(fā)揮Windows95/98/2000/NT和WindowsNT的強大功能;4)Delphi提供了多種32位可視組件;5)Delphi是一種面向?qū)ο蟮某绦蛟O計語言,因此可做到對可視窗體的繼承;6)Delphi采納三層數(shù)據(jù)庫治理模式(數(shù)據(jù)層、對象層、應用程序?qū)樱牙鐢?shù)據(jù)模型、業(yè)務規(guī)則、窗體和對象等集中存儲在對象存儲庫中;7)應用程序可通過在Delphi中使用Borland公司提供的數(shù)據(jù)引擎(BDE)功能從而毫無障礙地使用多種數(shù)據(jù)庫,例如Oracle、Sybase等;8)使用Delphi提供的數(shù)據(jù)庫掃瞄器。3.2數(shù)據(jù)庫方案的實現(xiàn)目前常用的數(shù)據(jù)庫有Oracle、SQL、Server、Access和Mysql等,下面對這幾個主流的數(shù)據(jù)庫各自特點簡單介紹。Oracle數(shù)據(jù)庫系統(tǒng)是對象關系型數(shù)據(jù)庫,支持大型多用戶數(shù)據(jù)系統(tǒng)和分布式數(shù)據(jù)庫和分布處理,具有可移植性和兼容性,一般用在大型事務處理及客戶/服務器結(jié)構(gòu)的應用系統(tǒng),但價格昂貴,不適合一般開發(fā)應用。SQLServer是基于服務器端的中型的數(shù)據(jù)庫,能夠適合大容量數(shù)據(jù)的應用,在處理海量數(shù)據(jù)的效率,后臺開發(fā)的靈活性,可擴展性等方面強大;是真正的客戶機/服務器體系結(jié)構(gòu),圖形化用戶界面,使系統(tǒng)治理和數(shù)據(jù)庫治理更加直觀、簡單;豐富的編程接口工具,為用戶進行程序設計提供了更大的選擇余地:對網(wǎng)絡技術的支持,使用戶能夠?qū)iT容易地將數(shù)據(jù)庫中的數(shù)據(jù)公布到網(wǎng)頁上。Mysql是一個開放源碼的小型關系型數(shù)據(jù)庫治理系統(tǒng),目前被廣泛地應用在Intemet上的中小型網(wǎng)站中。由于其體積小、速度快、總體成本低,尤其是開放源碼這一特點,許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了Mysql作為網(wǎng)數(shù)據(jù)庫。Mysql能夠支持Windows、UNIX、Linux和SUNOS等多種操作系統(tǒng)平臺。Access是微軟公司推出的基于Windows的桌面關系數(shù)據(jù)庫治理系統(tǒng),是Office系列應用軟件之一。它提供了表、查詢、窗體、報表、頁、宏和模塊來建立數(shù)據(jù)庫系統(tǒng)的對象;提供了多種向?qū)?、.生成器和模板,把?shù)據(jù)存儲、查詢、界面設計、報表生成等操作規(guī)范化等。幾種數(shù)據(jù)庫各有特點,其中Access是一個中、小型數(shù)據(jù)庫治理系統(tǒng),使用方便、功能強大、易操作同時專門有用,它適合數(shù)據(jù)量不太大的應用,在處理數(shù)據(jù)庫時效率也專門高。因此本課題選用Access作為數(shù)據(jù)庫平臺,既能夠滿足數(shù)據(jù)操作方便迅速的特點,也能夠降低軟件的開發(fā)成本。3.3串口通信的實現(xiàn)方法3.3.1概述實際中串口通信程序的開發(fā)專門少直接使用API函數(shù),因為這會無謂的增加編程難度,也會給調(diào)試帶來諸多不便。在面向?qū)ο蠓椒ㄏ峦ǔJ褂么陬?即串口函數(shù)庫),如此編程效率即高,調(diào)試又方便。下面就從通信API介紹、串口類開發(fā)這兩方面加以介紹。l、串口通信API函數(shù)基礎通信API函數(shù)是整個串口通信程序的基礎,串口類中的任何成員函數(shù)也只只是是對通信API函數(shù)的封裝而己。通信API函數(shù)所涉及的操作包括串口的打開、關閉、初始化與讀寫等。(1)串口的打開與關閉Win32系統(tǒng)把文件的概念進行了擴展,不管是文件、通信設備、命名管道、郵槽、磁盤,依舊操縱臺,差不多上用API函數(shù)CreateFile()來打開或創(chuàng)建的。假如打開成功的話會返回一個串口的句柄,應用程序應對那個句柄推斷其有效性。當不再使用該串口句柄時,應該調(diào)用CloseHandle0函數(shù)關閉之,以方便其它應用程序申請對串口的操縱權。(2)串口的初始化在打開串口后,常常需要對串口進行一些初始化工作,這需要通過一個DCB結(jié)構(gòu)來進行。DCB結(jié)構(gòu)包含了諸如波特率、數(shù)據(jù)位數(shù)、奇偶校驗和停止位數(shù)等信息。在查詢或配置串行口的屬性時,都要用DCB結(jié)構(gòu)來作為緩沖區(qū)。調(diào)用函數(shù)能夠獲得串口的配置,該函數(shù)把當前配置填充到一個DCB結(jié)構(gòu)中。一般在用CreateFile0打開串行口后,就調(diào)用GetCommState()函數(shù)來獵取串行口的初始配置。要修改串行口的配置,應該先修改DCB結(jié)構(gòu),然后再調(diào)用SetCommState0函數(shù)用指定的DCB結(jié)構(gòu)來設置串行口。除了在DCB中的設置外,程序一般還需要設置I/O緩沖區(qū)的大小。Windows用陽緩沖區(qū)來暫存串行口輸入和輸出的數(shù)據(jù),假如通信的速率較高,則應該設置較大的緩沖區(qū).調(diào)用SctupCommO函數(shù)能夠設置串行口的輸入和輸出緩沖區(qū)的大小。在對串口進行讀寫的時候,需要考慮超時問題。超時有兩種:間隔超時和總超時。間隔超時是指在接收時兩個字符之間的最大時延,總超時是指讀寫操作總共花費的最大時刻。寫操作只支持總超時,而讀操作兩種超時均支持。在用異步方式讀寫串行口時,盡管在完成讀/寫操作往常就可能返回,但超時仍然是起作用的。在這種情況下,超時規(guī)定的是操作的完成時刻,而不是讀/寫函數(shù)的返回時刻。(3)串口的讀寫操縱這部分內(nèi)容關系到串行通信的核心內(nèi)容,將分讀/寫串口API函數(shù)、異步I/O操作兩部分介紹。讀/寫串口API函數(shù):win32中使用ReadFile0函數(shù)或者ReadFileEx0數(shù)從串口中讀取數(shù)據(jù)。兩者區(qū)不是:前者對同步操作和異步操作都支持,而后者僅支持異步操作。eadFile0函數(shù)第四個參數(shù),在讀操作之前應置為0。同樣,寫串口函數(shù)也有兩個,一個是writeFile0,另一個是writeFileEx0前者同時支持同步操作和異步操作,而后者僅支持異步操作。寫函數(shù)不論在聲明形式上依舊在使用方法上都與ReadFile0十分相似,具體能夠查看MSDN關心文檔。異步I/O操作:在用ReadFile0和writeFile0讀寫串行口時,既能夠同步執(zhí)行,也能夠異步執(zhí)行。在同步執(zhí)行時,函數(shù)直到操作完成后才返回。這意味著在同步執(zhí)行時線程會被堵塞,從而導致效率下降。在異步執(zhí)行時,即使操作還未完成,調(diào)用的函數(shù)也會立即返回。費時的I/O操作在后臺進行,如此線程就能夠干不的情況。例如,線程能夠在不同的端口上同時執(zhí)行I/O操作,甚至能夠在同一端口上同時進行讀寫操作?!爱惒?一詞的含義就在于此。ReadFile0和writeFile()函數(shù)是否為異步操作模式是由CreateFile()函數(shù)決定的。假如在調(diào)用CreateFileO創(chuàng)建句柄時指定了ILEFLAGOVERLAPPED標志,那么調(diào)用ReadFileO和writeFileO對該句柄進行的讀寫操作確實是異步的,假如未指定異步標志,則讀寫操作是同步的。在設置了異步I/O操作后,I/O操作和函數(shù)返回有以下兩種情況:第一種,函數(shù)返回時I/O操作己完成:現(xiàn)在結(jié)果看起來是同步執(zhí)行的,但實際上這是異步操作的結(jié)果。第二種,函數(shù)返回時I/O操作還沒完成:現(xiàn)在一方面,函數(shù)返回值為0,同時GetLastErrorO函數(shù)返回ERRORIOPENDING;另一方面,系統(tǒng)把OVERLAPPED中的信號事件設為無信號狀態(tài)。當I/O操作完成后,系統(tǒng)將它設置為有信號狀態(tài)。假如GetLastError0函數(shù)返IEIERRORIOPENDING,則講明異步操作還沒完成,線程能夠等待操作完成。有兩種等待方法:一種方法是用像WaitForSingleObject0如此的等待函數(shù)來等待OVERLAPPED結(jié)構(gòu)的hEvent成員,能夠規(guī)定等待的時刻,在等待函數(shù)返回后,調(diào)用GetOverlappedResult0。另一種方法是用GetOverlappedResult()函數(shù)等待,假如指定該函數(shù)的bWait參數(shù)為TRUE,那么該函數(shù)將等待OVERLAPPED結(jié)構(gòu)的hEvent事件,同時只有當I/O操作完成后方返回(實際上這又變成了同步方式)。同時GetOverlappedResultoi函數(shù)能夠返回一個OVERLAPPED。結(jié)構(gòu)來報告包括實際傳輸字節(jié)在內(nèi)的重疊操作結(jié)果。2、串口類的開發(fā)串口類是對通信API函數(shù)進行最一般的封裝,以便能夠應用于不同的串口應用程序開發(fā)中?,F(xiàn)在開發(fā)串口應用程序的方法專門多,如微軟的MSCcomm控件,然而MSComm本身存在一定的弊端,如只能發(fā)送ASCII碼等。從用戶角度講上位機串口通信模塊的使用流程一般分四個步驟,即“初始化并打開串口一監(jiān)視串口~讀寫串21--關閉串口’’。3.3.2串口通信API函數(shù)的實現(xiàn)原理實際中串口通信程序的開發(fā)專門少直接使用API函數(shù),因為這會無謂的增加編程難度,也會給調(diào)試帶來諸多不便。在面向?qū)ο蠓椒ㄏ峦ǔJ褂么陬?即串口函數(shù)庫),如此編程效率即高,調(diào)試又方便。通信API函數(shù)是整個串口通信程序的基礎,串口類中的任何成員函數(shù)也只只是是對通信API函數(shù)的封裝而己。通信API函數(shù)所涉及的操作包括串口的打開、關閉、初始化與讀寫等。(1)串口的打開與關閉Win32系統(tǒng)把文件的概念進行了擴展,不管是文件、通信設備、命名管道、郵槽、磁盤,依舊操縱臺,差不多上用API函數(shù)CreateFile()來打開或創(chuàng)建的。假如打開成功的話會返回一個串口的句柄,應用程序應對那個句柄推斷其有效性。當不再使用該串口句柄時,應該調(diào)用CloseHandle0函數(shù)關閉之,以方便其它應用程序申請對串口的操縱權。(2)串口的初始化在打開串口后,常常需要對串口進行一些初始化工作,這需要通過一個DCB結(jié)構(gòu)來進行。DCB結(jié)構(gòu)包含了諸如波特率、數(shù)據(jù)位數(shù)、奇偶校驗和停止位數(shù)等信息。在查詢或配置串行口的屬性時,都要用DCB結(jié)構(gòu)來作為緩沖區(qū)。調(diào)用函數(shù)能夠獲得串口的配置,該函數(shù)把當前配置填充到一個DCB結(jié)構(gòu)中。一般在CreateFile0打開串行口后,就調(diào)用GetCommState()i函l數(shù)來獵取串行口的初始配置修改串行口的配置,應該先修改DCB結(jié)構(gòu),然后再調(diào)用SetCommState0函數(shù)用指定的DCB結(jié)構(gòu)來設置串行口[3]。除了在DCB中的設置外,程序一般還需要設置I/O緩沖區(qū)的大小。Windows用陽緩沖區(qū)來暫存串行口輸入和輸出的數(shù)據(jù),假如通信的速率較高,則應該設置較大的緩沖區(qū).調(diào)用SctupCommOi函數(shù)能夠設置串行口的輸入和輸出緩沖區(qū)的大小。在對串口進行讀寫的時候,需要考慮超時問題。超時有兩種:間隔超時和總超時。間隔超時是指在接收時兩個字符之間的最大時延,總超時是指讀寫操作總共花費的最大時刻。寫操作只支持總超時,而讀操作兩種超時均支持。在用異步方式讀寫串行口時,盡管在完成讀/寫操作往常就可能返回,但超時仍然是起作用的。在這種情況下,超時規(guī)定的是操作的完成時刻,而不是讀/寫函數(shù)的返回時刻。(3)串口的讀寫操縱這部分內(nèi)容關系到串行通信的核心內(nèi)容,將分讀/寫串口API函數(shù)、異步I/O操作兩部分介紹。讀/寫串口API函數(shù):win32中使用ReadFile0函數(shù)或者ReadFileEx0數(shù)從串口中讀取數(shù)據(jù)。兩者區(qū)不是:前者對同步操作和異步操作都支持,而后者僅支持異步操作。ReadFile0函數(shù)第四個參數(shù),在讀操作之前應置為0。同樣,寫串口函數(shù)也有兩個,一個是writeFile0,另一個是writeFileEx0前者同時支持同步操作和異步操作,而后者僅支持異步操作。寫函數(shù)不論在聲明形式上依舊在使用方法上都與ReadFile0十分相似,具體能夠查看MSDN關心文檔。異步I/O操作:在用ReadFile0和writeFile0讀寫串行口時,既能夠同步執(zhí)行,也能夠異步執(zhí)行。在同步執(zhí)行時,函數(shù)直到操作完成后才返回。這意味著在同步執(zhí)行時線程會被堵塞,從而導致效率下降。在異步執(zhí)行時,即使操作還未完成,調(diào)用的函數(shù)也會立即返回。費時的I/O操作在后臺進行,如此線程就能夠干不的情況。例如,線程能夠在不同的端口上同時執(zhí)行I/O操作,甚至能夠在同一端口上同時進行讀寫操作?!爱惒?一詞的含義就在于此。ReadFile0和writeFile(i)函數(shù)是否為異步操作模式是由CreateFile函數(shù)決定的。假如在調(diào)用CreateFileO創(chuàng)建句柄時指定了FILEFLAGOVERLAPPED標志,那么調(diào)用ReadFileO和writeFileO對該句柄進行的讀寫操作確實是異步的,假如未指定異步標志,則讀寫操作是同步的[5]。
3.3.3串口類的開發(fā)串口類是對通信API函數(shù)進行最一般的封裝,以便能夠應用于不同的串口應用程序開發(fā)中。現(xiàn)在開發(fā)串口應用程序的方法專門多,如微軟的MSCcomm控件,然而MSComm本身存在一定的弊端,如只能發(fā)送ASCII碼等。從用戶角度講上位機串口通信模塊的使用流程一般分四個步驟,即“初始化并打開串口--監(jiān)視串口--讀寫串口--關閉串口”。封裝串口類CMyCom的成員函數(shù)時也正是基于這種理解,各成員函數(shù)介紹如下:(1)初始化并打開串口函數(shù)函數(shù)聲明形式:BOOLCMyCom:InitMyCom(intnPort,intnBaud,intnDataBits,intnStopBits)參數(shù)含義:nPort為端口號,支持串口l至串口4;nBaud為波特率,支持常用波特率如9600baud;nDataBits為數(shù)據(jù)位數(shù),支持5—8位:nStopBits為停止位數(shù),支持1—2位;返回值:當設置成功后,返回值為TRUE;失敗時,返回值為FALSE;實現(xiàn)原理:本函數(shù)只支持操作一個串口。程序依照串口配置情況調(diào)用CreateFile0函數(shù)打開串口,隨后啟動串口監(jiān)視線程等待應答數(shù)據(jù)。圖3-1-InitMyCom()函數(shù)流程圖(2)寫串口函數(shù)。函數(shù)聲明形式:BOOLCMyCom:WriteMyCom(char*bur,DWORDdwBufLen)參數(shù)含義:buf為待發(fā)命令的緩沖區(qū)指針,dwBufLen待發(fā)字符。返回值:返回值為實際發(fā)送的字符數(shù);實現(xiàn)原理:該函數(shù)調(diào)用WriteFileO發(fā)送命令并調(diào)用GetOverlappedResult0函數(shù)返回實際發(fā)送的字符[6]。第四章使用SPComm控件實現(xiàn)串口通信Delphi能夠利用的眾多串行通信控件中,SPComm控件可謂是最簡單,功能比較強大的一種。它支持DataBits(數(shù)據(jù)位)、Parity(奇偶校驗)、StopBits等設置,支持Read/Write,TimingControl(時序操縱),ReadIntervalTimeout(讀間斷超時操縱),WriteIntervalTimeout(寫間斷超時操縱)等,同時還支持DTR/DSR,RTS/DTS等硬件流程操縱及Xon/Xoff(握手協(xié)議)軟件流程操縱,是比較完善的控件。4.1安裝SPComm控件從互聯(lián)網(wǎng)能下載SPComm控件。選擇下拉菜單Component中的InstallComponent選項,在Unitfilename處填寫SPComm控件所在的路徑,其他各項可用默認值,點擊OK按鈕。如圖4-1安裝后,在System控件面板中將出現(xiàn)一個紅色控件COM?,F(xiàn)在就能夠像Delphi自帶控件一樣使用COM控件了[9]。圖4-1安裝SPComm控件4.2SPComm的要緊屬性,方法和事件4.2.1屬性CommName:填寫COM1,COM2…等串口的名字,在打開串口前,必須填寫好此值。BaudRate:設定波特率9600,4800等,依照實際需要來定,在串口打開后也可更改波特率,實際波特率隨之更改。ParityCheck:奇偶校驗。ByteSize:字節(jié)長度5,6,7,8等,依照實際情況設定。Parity:奇偶校驗位。pBits:停止位。SendDataEmpty:這是一個布爾屬性,為True時表示發(fā)送緩存為空,或者發(fā)送隊列里沒有信息;為False時表示發(fā)送緩存不為空,或者發(fā)送隊列里有信息。4.2.2方法Startcomm方法用于打開串口,當打開失敗時通常會報錯。錯誤要緊有7種:串口差不多打開;打開串口錯誤;文件句柄不是通信句柄;不能夠安裝通信緩存;不能產(chǎn)生事件;不能產(chǎn)生讀進程;不能產(chǎn)生寫進程。StopComm過程用于關閉串口,沒有返回值。WriteCommData(pDataToWrite:PChar;dwSi-zeofDataToWrite:Word):boolean用于發(fā)送一個字符串到寫線程,發(fā)送成功返回True,發(fā)送失敗返回False,執(zhí)行此函數(shù)將立即得到返回值,發(fā)送操作隨后執(zhí)行。函數(shù)有兩個參數(shù),其中pDataToWrite是要發(fā)送的字符串,dwSi-zeofDataToWrite是發(fā)送的長度[9]。4.2.3事件OnReceiveData:procedure(Sender:TObject;Buffer:Pointer;BufferLength:Word)ofobject當輸入緩存有數(shù)據(jù)時將觸發(fā)該事件,在那個地點能夠?qū)拇谑盏降臄?shù)據(jù)進行處理。Buffer中是收到的數(shù)據(jù),Buff-erLength是收到的數(shù)據(jù)長度。OnReceiveError:procedure(Sender:TObject;Event-ask:DWORD)當同意數(shù)據(jù)時出現(xiàn)錯誤將觸發(fā)該事件。4.3SPComm的使用以實現(xiàn)PC機與單片機8051之間的通信為例,首先要調(diào)通他們之間的握手信號。假定他們之間的通信協(xié)議是:PC到8051一幀數(shù)據(jù)6個字節(jié),8051到PC一幀數(shù)據(jù)也為6個字節(jié)。當PC發(fā)出(F0,01,FF,FF,01,F0)后8051能收到一幀(F0,01,FF,FF,01,F0),表示數(shù)據(jù)通信握手成功,兩者之間就能夠按照協(xié)議相互傳輸數(shù)據(jù)。創(chuàng)建一個新的工程COMM.DPR,把窗體的標題定義為單片機串口通信:圖4-2單片機串口通信窗口實現(xiàn)PC機與單片機之間的數(shù)據(jù)發(fā)送及接收具體步驟:初始化并打開串口需要選擇本次通信使用的串口,確定通信協(xié)議,即設置波特率、校驗方式、數(shù)據(jù)位、停止位等屬性,打開該串口。代碼如下://初始化并打開串口:Comml.BaudRate:=9600;//波特率9600bpsComml.Parity:=None;//奇偶檢驗無Comml.ByteSize:=8://數(shù)據(jù)位8Comml.StopBits:=l;//停止位1Comml.StartComm://打開串口(2)建立握手信號實現(xiàn)PC機與單片機之間的通信,首先要調(diào)通它們之間的握手信號,握手信號能夠隨意選擇某特定字符串,當Pc發(fā)出如此一幀數(shù)據(jù)后,通過接收事件能收到單片機返回的這一幀數(shù)據(jù)或特定的某字符串,則表示握手成功,系統(tǒng)通信正常。兩者之間就能夠按照協(xié)議相互傳輸數(shù)據(jù)。否則需重新建立握手信號。(3)發(fā)送數(shù)據(jù)在編寫基于串口的計算機工業(yè)測控時,通常需要由PC機向下位機發(fā)送命令以操縱下位機的行為,同時向下位機發(fā)送有關數(shù)據(jù)。利用SPCOMM串口控件向下位機發(fā)送數(shù)據(jù)代碼如下://發(fā)送數(shù)據(jù)和操縱子程序proceduresenddata;vari:integer;commflg:Boolean;begincommflg:=true;fori:=lto8dobeginifnotfcommcommlwritecommdata(sendbutter,i)thenbeginCommflg=false;break;end;end;end;(4)接收數(shù)據(jù)在編寫基于串口的計算機工業(yè)測控時,通常需要由下位機向PC機發(fā)送數(shù)據(jù)以使PC機了解系統(tǒng)的測試數(shù)據(jù)或下位機的運行狀態(tài),并進而操縱下位機的行為[11]。利用SPCOMM串口控件接收下位機發(fā)送的數(shù)據(jù)信息的代碼如下://事件驅(qū)動方式接收數(shù)據(jù)程序procedureTForm1.CommlReceiveData(Sender:Tobject;Buffer:Pointer;bufferLength:Word);varreceivedata:arrayofbyte;beginsleep(100);//等待lOOms,保證接收到所有數(shù)據(jù)move(buffef,receivedata,bufferlength);//將接收緩存區(qū)中的數(shù)據(jù)轉(zhuǎn)移到數(shù)組中end;(5)關閉串口在系統(tǒng)開發(fā)中,應注意在不使用串口時應及時關閉串口,釋放系統(tǒng)資源,否則可能會阻礙系統(tǒng)的其它應用。關閉串口的代碼如下:procedureTForml.FormClose(Sender;TObject:varAction:TCIoseAction);begincomml.StopComm;end;第五章上位機軟件設計5.1系統(tǒng)設計概述本軟件采納模塊化設計方案,以系統(tǒng)主界面模塊為主導,實現(xiàn)用戶等級治理等要緊功能,如此能夠使整個軟件結(jié)構(gòu)層次化,且更易于維護和升級。圖5-1軟件模塊結(jié)構(gòu)圖5.2數(shù)據(jù)庫平臺的選擇數(shù)據(jù)庫平臺選用MicrosoftAccess2003,Access2003是office2003中文版的組件之一,是一個中、小型數(shù)據(jù)庫治理系統(tǒng),使用方便、功能強大,與其它數(shù)據(jù)庫有良好的接口。Access2003具有完整的數(shù)據(jù)庫應用開發(fā)工具,用戶能夠方便地設計、修改、掃瞄一個記錄數(shù)據(jù)的差不多表;能夠在表數(shù)據(jù)中進行各種篩選和查詢操作;能夠設計和使用各種窗體以實現(xiàn)數(shù)據(jù)顯示和操作;能夠依照表數(shù)據(jù)設計打印各種報表;對表進行一系列特定的操作。Access2003內(nèi)有強大的操作向?qū)?,為用戶提供了豐富的數(shù)據(jù)庫差不多表模板。用戶只需簡單的操作就可建立數(shù)據(jù)庫中所使用的各種差不多表、窗體和報表。在Access2003中,能夠設定、修改差不多表之間的關聯(lián),從而實現(xiàn)在多個相關表之間的關系查詢。Access2003中的宏能夠?qū)崿F(xiàn)操作的自動化,使操作更加簡單、快捷。Access2003不僅能夠處理自身的數(shù)據(jù)庫文件,還能夠處理其它一些數(shù)據(jù)庫系統(tǒng)治理軟件所建立的數(shù)據(jù)庫文件,能識不dBase、FOxBase、FoxPrO、Paradox、Btrieve等數(shù)據(jù)庫格式文件,同時支持開放式數(shù)據(jù)庫互連性標準(ODBc)的SQL。倒與其它的關系型數(shù)據(jù)庫治理系統(tǒng)相比,Access2003具有以下優(yōu)點:(l)存儲文件單一。Access2003的一個數(shù)據(jù)庫文件中包含了該數(shù)據(jù)庫中的全部數(shù)據(jù)表、查詢、窗體、報表等所有數(shù)據(jù),便于治理。(2)支持長文件名,并能夠在文件名內(nèi)加空格,使文件便于理解、查找。(3)具有強大的網(wǎng)絡功能,可通過網(wǎng)絡傳送數(shù)據(jù)。(4)使用簡便,用戶無需了解編程語言,便可輕松地設計和開發(fā)數(shù)據(jù)庫應用程序。(5)能夠處理多種數(shù)據(jù)信息,如文本文件和其它數(shù)據(jù)庫文件。5.3串口通信在本系統(tǒng)中的實現(xiàn)串口通信模塊是本遠程監(jiān)測軟件的重要組成部分之一,是上位機與下位機進行正常通信的重要依據(jù)。能否及時準確的同意溫濕度,光線監(jiān)測數(shù)據(jù)在專門大程度上取決于通信協(xié)議和通信流程的設計,本軟件采納自定義的通信協(xié)議,有效地幸免了數(shù)據(jù)碰撞的現(xiàn)象,提高了通信的質(zhì)量與速度,減輕了通信量的負荷,降低了程序的復雜度。5.3.1通信協(xié)議的設計l、通信模型的設計在確定通信流程與通信格式之前,應該首先明確通信方式,即明確上、下位機之間將采納什么組網(wǎng)形式及什么通信規(guī)約的問題。依照本課題研究的對象和要緊目的,選擇采納總線型網(wǎng)絡結(jié)構(gòu)、主從通信模式將更能滿足上、下位機即時通信的需求,實現(xiàn)最終目的。應該考慮使用負載能力更的RS485協(xié)議。RS485協(xié)議是為彌補RS232的不足而提出的,它改進了RS232通信距離短、速率低的缺點,具有更強的抗干擾與負載能力,同意在一條平衡總線上連接最多256個收發(fā)器,支持半、全雙工通信。RS485只對物理接口的電氣特性做規(guī)定,因此需要用戶建立自己的高層通信協(xié)議。在通信過程中,通信設備雙方是互相獨立的。這也確實是講,通信中數(shù)據(jù)的傳輸存在著不可確定性,即一方通信設備向另一方發(fā)完數(shù)據(jù)后,并不明白另一方是否正確收到。能否專門好的克服這種客觀存在的不可確定性,完全取決于通信協(xié)議中通信流程的設計。具體協(xié)議表如下:步驟上位機方向單片機1待機狀態(tài)待機狀態(tài)2發(fā)送“EE”未收到數(shù)據(jù)不動作3兩秒鐘內(nèi)未接收“DD”顯示通信失敗,返回步驟1假如收到數(shù)據(jù)回復“DD”表示收到4開始接收數(shù)據(jù)發(fā)送當前溫濕度,光線狀況數(shù)據(jù)5回復“CC”表示收到每秒重復步驟2—5周期一次返回步驟1待機狀態(tài)2、通信流程的設計通常我們推斷上位機所發(fā)出的命令信息是否被下位機正確接收到的依據(jù)是下位機的應答。下位機應答的可能性有四種情況:第一種是所求數(shù)據(jù)的應答(當成功執(zhí)行時);第二種是表示命令執(zhí)行失敗的應答;第三種是表示未能成功接收上位機所發(fā)命令的應答;第四種是在規(guī)定時刻內(nèi)未接收到任何應答。當上位機遇到除第一種情況以外的其它三種情況時,常規(guī)做法會重發(fā)命令幀,但在本監(jiān)測軟件中就不同意重發(fā),因為引起后三種情況的緣故有專門多,如下位機沒有正確接收到上位機的命令幀:下位機執(zhí)行命令時出錯:下位機盡管執(zhí)行完命令,但上位機接收的應答幀有誤:下位機死機等等,假如對這些情況逐一處理就會令上位機程序疲于重發(fā)同一命令而無暇顧及輪詢,從而阻礙監(jiān)測效率。假如不用輪詢而改用下位機自動報告的方式則又可能出現(xiàn)數(shù)據(jù)碰撞的情況。因此在本監(jiān)測軟件的通信流程為:上位機首先呼叫下位機,下位機若接收到呼叫則向上位機發(fā)出應答信號。上位機接收到下位機的應答信號后向下位機發(fā)送命令信息,下位機接收到此命令后就開始依照那個信息的命令代碼執(zhí)行相應的操作,即發(fā)送數(shù)據(jù)或接收數(shù)據(jù)。若下位機沒有收到上位機的呼叫信號就可不能向上位機發(fā)出應答信號,那么上位機將接著呼叫下位機,直到下位機有應答為止。(1)上位機發(fā)送命令/接收應答流程當上位機發(fā)送一個命令幀之后,立即轉(zhuǎn)到線程串口監(jiān)視線程,等待下位機的應答幀。上位機接收到正確應答后會接著發(fā)送下一幀命令,而可不能向下位機發(fā)送任何表示正確接收的命令。當在超時時刻內(nèi)沒有接收到下位機的應答幀時,上位機的行為會出現(xiàn)接著向下位機發(fā)送命令幀。圖5-3上位機發(fā)送命令,接收回應流程圖(2)下位機接收命令/發(fā)送應答流程在通信過程中,下位機一直處于接收狀態(tài),隨時預備接收上位機發(fā)來的命令幀。當下位機接收到一個呼叫命令幀后,向上位機發(fā)送應答信號。然后上位機向下位機發(fā)送命令幀,下位機接收執(zhí)行命令幀。圖5-4下位機發(fā)送命令∕接收回應流程圖3、通信格式的設計通信協(xié)議中的數(shù)據(jù)格式大多是基于幀的,立即所要發(fā)送數(shù)據(jù)/命令的頭尾加入修飾性的字符,形成一個幀發(fā)送出去;接收時將所接收到的幀去掉所加入的頭尾即可取出數(shù)據(jù)1命令。實踐中大伙兒通常采納的數(shù)據(jù)/命令幀的格式有兩種,如表5-1、表5-2所示。表5-1數(shù)據(jù)∕命令幀格式1表5-2數(shù)據(jù)∕命令幀格式25.3.2通信程序的開發(fā)SPComm控件通過串口傳輸和接收數(shù)據(jù),為應用程序提供串行通信功能。該控件串行通信功能的實現(xiàn)實際上是調(diào)用了WindOWS的API函數(shù),再由Comm.dry解釋并傳送給設備驅(qū)動程序。跟所有其它的ActiveX控件一樣,SPComm.OCX定了一系列的屬性和接口。在Delphi中,用戶用設置屬性值和編寫方法就能夠進行操作。SPComm控件提供了兩種串行口消息處理的方法:一種是查詢方式,另外一種是事件驅(qū)動方式。關于較簡單的通信任務,可通過查詢串行12的CommEvent屬性來了解最近發(fā)生的事件或錯誤并進行相應的處理。對較復雜的通信任務,就應用事件驅(qū)動接口,它只響應OnComm事件對己發(fā)生的事件或錯誤進行處理,與CommEvent屬性緊密相關。在Delphi中實現(xiàn)事件驅(qū)動方法時,要控件的變量,以后針對此對象操作即可。事件驅(qū)動通信是處理串行端12交互作用的一種特不有效的方法。在許多情況下,在事件發(fā)生時需要得到通知,例如,在串口接收緩沖區(qū)中有字符,或者CD或RTS線上一個字符到達或一個事件發(fā)生時。在這些情況下,能夠利用SPComm控件的OnComm事件捕獲并處理這些事件。OnComm事件還能夠檢查和處理通信錯誤。在編程過程中,就能夠在OnComm事件處理函數(shù)中加入自己的處理代碼。這種方法的優(yōu)點是程序響應及時,可靠性高。每個的設計實現(xiàn)SPComm控件對應著一個串行端口,假如應用程序需要訪問多個串行端口,必須使用多個SPComm控件。在PC機串行端口通信時,使用了十幾條線進行信號傳輸。利用SPComm控件開發(fā)串口通信軟件,需要了解以下線的名稱及其作用,這些線的高低電平狀態(tài)分不對應SPComm控件相應屬性的True和False值。5.4上位機程序的開發(fā)設計本系統(tǒng)流程圖如圖5-5所示:圖5-5系統(tǒng)流程圖5.4.1系統(tǒng)登錄模塊軟件運行之后,首先確實是進入用戶登錄窗體,本界面實現(xiàn)的功能是用戶輸入用戶名和密碼,依照不同的用戶登錄選擇不同的操作主界面功能,并進入系統(tǒng)進行相應操作。圖5-6用戶登錄模塊截圖下面對重要的控件的屬性加以講明:表5-3TTable控件屬性屬性值NameTable1DatabaseNameShujuTableNameDengluActiveTure表5-4TQuery控件屬性控件屬性設置值NameQuery1DatabaseNameSjkActiveFalse5.4.2系統(tǒng)主界面模塊該界面是本軟件中最重要的部分。溫室環(huán)境的監(jiān)測,環(huán)境參數(shù)的設置輸出以及溫室內(nèi)各個設備的運行狀況都要在那個地點實現(xiàn)。其運行界面如圖5-7所示。圖5-7系統(tǒng)主界面截圖5.4.3用戶設置模塊用戶設定窗體要緊是便于治理員和用戶隨時修改登錄密碼和增減用戶名并相應修改治理權限的功能。但在修改之前需要輸入原先的密碼,然后才能進行修改。新的密碼需要輸入兩次,假如兩次輸入的新密碼不一樣,則系統(tǒng)會彈出對話框提示密碼沒有修改成功。用戶能夠重新輸入新密碼。用戶設置窗體只有以治理員登錄的用戶才有權利修改,否則彈出該窗體的按鈕是灰色的不能實現(xiàn)如上操作。圖5-8用戶設定模塊截圖5.4.4歷史數(shù)據(jù)查詢模塊歷史數(shù)據(jù)查詢頁設計功能有:按日期時刻順序?qū)v史數(shù)據(jù)的查詢、打印,對所查詢到的記錄產(chǎn)生報表并以文本格式輸出。其運行界面如圖5-9所示,報表界面如圖5-10所示。具體實現(xiàn)代碼如下:ProcedureTForm4.setmaxminO;Currentmaxdata:=fieldlist.fields[i].a(chǎn)sfloat;Currentmindata:=fieldlist.fields[i].a(chǎn)sfloat;Whilenot(eof)dobeginIffieldlist.Fields[i].a(chǎn)sfloat<currentmindatathenbeginCurrentmindata:=fieldlist.fields[i].a(chǎn)sfloat;Currentmindate:=fieldlist.fields[O].a(chǎn)sdatetimeIffieldlist.fields[i].a(chǎn)sfloat>currentmaxdatathenbeginCurrentmaxdata:=fieldlist.fields[i].a(chǎn)sfloat;Currentmaxdate:=fieldlist.fields[0].a(chǎn)sdatetime;圖9歷史數(shù)據(jù)查詢界面圖10溫室環(huán)境監(jiān)測系統(tǒng)報表結(jié)論本文通過對國內(nèi)外溫室環(huán)境操縱現(xiàn)狀分析,指出了溫室環(huán)境監(jiān)測智能化是進展的必定趨勢。依照溫室內(nèi)作物生長的需要,對溫室環(huán)境因子進行實時監(jiān)測操縱,要緊完成了溫、濕度及光線狀況環(huán)境監(jiān)測系統(tǒng)的上位機軟件的設計,本設計可實時測量某一個體空間中任意一點的溫度、濕度數(shù)據(jù)以及光線狀況,能在小型終端設備的LCD上顯示,還能通過串口通信在微機上實現(xiàn)實時數(shù)據(jù)的顯示、分析和圖形打印等功能。但由于時刻和個人能力有限,該設計難免有許多不完善之處,敬請更正。致謝不管是做畢業(yè)設計依舊寫論文對我來講差不多上第一次,我對串口通信的了解只是一些差不多知識,而缺乏真正的實踐經(jīng)驗。能順利的完成這次畢業(yè)設計并寫出這篇論文,我要十分感謝我的指導老師程老師。程老師在我遇到挫折與困難時總是能給我足夠的信心與動力和一些建設性的指導意見,使我終于完成了那個對我來講蔚為艱巨的任務。程老師嚴謹認確實治學態(tài)度、淵博的知識、深厚的專業(yè)功底、敏銳的洞察力、求真務實的科研精神,及謙虛熱情的待人風格使我受益匪淺。從這次的畢業(yè)設計中我學會了如何樣去獨立的考慮和完成一項任務,以及如何樣去面對和了解我所未知的東西,從何下手,如何樣解決。首先,要分析那個任務的目的跟要求;然后去收集跟它有關的資料,進行整理和消化,全面和深入的了解這些資料并整理出大概的思路,系統(tǒng)的整理出任務的流程圖和提綱;最后再按照流程圖和提綱去完成那個任務。如此就能獨立并專門好的完成一項任務了。我想,這次的經(jīng)歷必將給我今后的工作帶來專門大的關心和難得的經(jīng)驗。由于時刻倉促,本設計難免有考慮不完善之處,敬請指正。感謝!參考文獻[1]黃興海.智能網(wǎng)絡犁環(huán)境溫濕度監(jiān)測系統(tǒng)系統(tǒng)集成方案.電子質(zhì)量-2001年第3期.[2]林振強.基于網(wǎng)絡技術的實驗室溫、濕度監(jiān)測系統(tǒng).化學分析計量.2006.04[3]郭慶.基于RS485總線的環(huán)境監(jiān)控系統(tǒng)設計與實現(xiàn).國外電子測量技術.2006.07[4]劉愛榮.多通道溫.濕度循環(huán)檢測儀.河南科學.2006—02[5]鈔票君.Delphi5串12通信編程.機械工業(yè)出版社.2006,P121-132[6]RayLiscbner.Delphi技術手冊.中國電力出版社.P66-88[7]李海兵,楊曉亮.Access2003數(shù)據(jù)庫治理從入門到精通.中國青年出版社[8]蔣培,肖江等.1氐消耗無線溫濕度監(jiān)測系統(tǒng)設計.木材加工機械.2007年4期.[9]王樹曉濕度計算機監(jiān)測系統(tǒng)開發(fā)與應用.北京紡織.2003—02[10]張毅剛,新編MCS-51單片機應用設計,哈爾濱工業(yè)大學出版社,2006,P145-155[11]張培仁,基于C語言編程MSC-51單片機原理與應用,清華大學出版社,2002,P134-156[12]沈紅衛(wèi),單片機應用系統(tǒng)設計實例與分析,北京航空航天大學出版社,2003[13]李長林,VisualC++串口通信技術與典型實例,清華大學出版社,2006,P132-166[14]周亞玲,蘇治中.delphi開發(fā)有用編程200例.中國鐵道出版社,2006,P15-36[15]曹巖.delphi程序設計有用教程.化學工業(yè)出版社,2008,P25-88附錄要緊程序:(1).初始化按鈕代碼:ProcedureTFoml.FormCreate(Sender:TObject);BeginMSComm.CommPort:=1://COM1為選擇端口MSComm.Setting:=’9600,n,8,1’;//波特率9600,數(shù)據(jù)8位,無奇偶校驗,停止1位MSComm.InBufferCount:=0;//清空接收緩沖區(qū)MSComm.InputLen:=O;//讀取整個緩沖區(qū)內(nèi)容MSComm.InBufferSize:=4096;//接收緩沖區(qū)4096個字節(jié)MSComm.RThreshold:=1000;//每次接收到1000個字節(jié)即產(chǎn)生OnComm事件MSComm.OutBufferCount:=O://清空發(fā)送緩沖區(qū)MSComm.OutBufferSize:=512;//發(fā)送緩沖區(qū)512個字節(jié)MSComm.SThreshold:=l;//每次發(fā)送緩沖區(qū)字節(jié)數(shù)少于1個即產(chǎn)生OnComm事件IfnotMSComm.PortOpenthen//打開串口MSComm.PortOpen:=True;End;(2)發(fā)送數(shù)據(jù)按鈕代碼:proceduresenddata;vali:integer;eommflg:Boolean;begincommflg:=true;fori:=lto8dobeginifnotfcommcommlwritecommdata(sendbutter,i)thenbeginCommflg=false;break;end;end;end;(3)接收數(shù)據(jù)按鈕代碼:procedureTForm1.Comm1ReceiveData(Sender:TObject;Buffer:Pointer;BufferLength:Word);varI,j:integer;commRevstr:shortstring;beginviewstri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職光電信息科學與工程(光電信息)試題及答案
- 2025年中職會計(財務會計基礎)試題及答案
- 2025年高職能源技術(技術實操訓練)試題及答案
- 2025年中職園藝設施管理應用(應用技術)試題及答案
- 2025年高職城市軌道交通運營服務(票務管理技巧)試題及答案
- 2025年中職城市軌道交通車輛技術(城軌車輛維護)試題及答案
- 2025年高職(健康管理)健康評估試題及答案
- 2025年高職供用電技術(供用電管理)試題及答案
- 2025年高職通信(通信技術基礎)試題及答案
- 2025年高職(藥學)藥物合成基礎試題及答案
- 電解質(zhì)紊亂護理查房-課件
- 城市軌道交通工程竣工驗收管理培訓
- 護理學第三章 第四節(jié) 人體力學在護理工作的應用
- 人性秘籍-絕密人性系列
- GB 1886.18-2015食品安全國家標準食品添加劑糖精鈉
- 世界地理第八章非洲
- 反滲透EDI超濾設計計算
- 油管保護蓋板涵專項施工方案
- 高考英語一輪復習廣東聽說考試故事復述模擬訓練(三)課件
- 點心部各崗位職責
- 中國郵政《國際及臺港澳郵件處理規(guī)則》
評論
0/150
提交評論