版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
摘要本文討論了單片機與PC機的串口,通過指令和數(shù)據(jù)的傳送來實現(xiàn)控制功能,并利用VB提供的MSComm通信控件非常方便地編寫了Windows環(huán)境下的串口通信程序,且結(jié)合實例給出了具體說明。上位機監(jiān)控管理軟件采用VB編制,用戶可以通過向通訊控制總站發(fā)送命令,提取下位機溫濕度數(shù)據(jù),完成溫度檢測。文中給出了通信協(xié)議設(shè)計,硬件設(shè)計和軟件設(shè)計。協(xié)議中有6種通信命令,適用于各種數(shù)據(jù)交換。硬件方面設(shè)計了時鐘電路和波特率配置。軟件方面完成了中斷子程序、數(shù)據(jù)交換子程序和上位機串行通訊程序的設(shè)計、編寫和調(diào)試??傮w說來,本系統(tǒng)上位機軟件功能齊全,系統(tǒng)實用性強,成本低,數(shù)據(jù)傳輸率高,容量大,可靠性好。它不僅可以應(yīng)用于糧庫的監(jiān)控管理,而且也可推廣到其他監(jiān)控領(lǐng)域,因此具有廣泛的應(yīng)用前景。關(guān)鍵詞:VisualBasic6.0;單片機;溫度曲線;串行通信;MSComm控件AbstractThispaperdiscussedmicrocontrollerandclustersofmouthofPCrealizecontrollingfunctionthroughorderandconveyanceofdatum,Exploito~redbyVBMSCommcommunicationcontrollingpartcanwriteWindowsbunchesofmouthfulsofcommunicationprocedureofenvironmentconvenientlyverymuch.Combineinstanceprovideconcretetoprove.ThesoftwareformasterisprogrammedwithVB,andcustomerscansendcommandstothestationtoobtainthetemperaturedataofgranary.Thepaperdesignstheserialcommunicationprotocol,thehardwareandsoftware,Therearesixcommandsthatcanapplyallkindsofdataexchangeintheserialcommunicationprotocol,Inthehardware,theclockcircuitisdesigned,andthebaudrateisconfigured.Inthesoftware,theprograms,suchastheinterruptionsubroutine,dataexchangesubroutineandthehostserialcommunicationsubroutine,aredesigned,compiledanddebugged.Inaword,thissystempossessesthemeritofpracticability,hightechnology,lowcost,highspeedandlongdistanceindatatransmittingandhighreliability.Itcanbeusednotonlyingranarymanagementbutothermonitormanagementsystem.Ithasbroadapplicationpotentialityandgreatmeaning.Keywords:VisualBasic6.0;microcontroller;temperaturecurve;serialcommunication;controllingpartofMSComm目錄TOC\o"1-5"\h\z\o"CurrentDocument"1 緒論 1\o"CurrentDocument"2 系統(tǒng)硬件簡介 2單片機技術(shù)簡介 2單片機技術(shù)的發(fā)展 2單片機技術(shù)的應(yīng)用 2課題研究的目的和意義 4主控單片機的選擇 4熱電阻測量模塊 4\o"CurrentDocument"通信部分 5\o"CurrentDocument"3 系統(tǒng)上位機軟件設(shè)計 6\o"CurrentDocument"VisualBasic功能簡介和發(fā)展 6VB基本概念與VB編程環(huán)境 8VB的基本概念 8VB6.0的集成開發(fā)環(huán)境簡介 103.2.3利用VB開發(fā)應(yīng)用程序的一般步驟 123.3設(shè)計中VB6.0所采用的控件 13SSTab控件的功能 13MSComm控件特點 13MSComm控件的介紹 133.4上位PC機VB通信程序設(shè)計串行通信程序設(shè)計方法 143.4.1上位機PC機端通訊軟件的實現(xiàn) 15溫度數(shù)據(jù)上傳部分 16VB編程程序 16\o"CurrentDocument"4 系統(tǒng)調(diào)試 24\o"CurrentDocument"結(jié)論 26致謝 27\o"CurrentDocument"參考文獻 28附錄 29附錄A 29部分程序清單 29附錄B 34英文原文 341緒論隨著電子技術(shù)、計算機技術(shù)、通信技術(shù)的迅速發(fā)展,工業(yè)測控領(lǐng)域采用先進的技術(shù)對現(xiàn)場的工業(yè)生產(chǎn)參數(shù)進行檢測、監(jiān)測是實現(xiàn)工業(yè)自動化的重要標志。目前,多點溫度檢測技術(shù)在現(xiàn)代化工農(nóng)業(yè)領(lǐng)域得到廣泛的應(yīng)用,如糧庫、程控交換機室、大型溫室等場合都需要大范圍集散分布監(jiān)測點對溫度進行監(jiān)控。近年來單線多點數(shù)字化測量技術(shù)的發(fā)展使計算機檢測技術(shù)實現(xiàn)了快速、可靠、低成本、數(shù)字化與網(wǎng)絡(luò)化。而建立在該平臺上的檢測系統(tǒng)可以實現(xiàn)多傳感器的數(shù)據(jù)融合與處理,專家數(shù)據(jù)庫的應(yīng)用可以使系統(tǒng)達到最佳控制狀態(tài)。溫度測量的領(lǐng)域十分廣泛,其實,不僅在工業(yè)領(lǐng)域,而且在民用領(lǐng)域、軍用領(lǐng)域,溫度的測量隨處可見。在工業(yè)領(lǐng)域,如電機的軸溫,膠帶滾筒的表面溫度,工業(yè)冷卻循環(huán)水溫,加熱設(shè)備的爐溫,啤酒的麥芽發(fā)酵溫度,各種化工原料在化學(xué)反應(yīng)時控制的溫度等等,在民用領(lǐng)域,超市的食品架內(nèi)溫度,人們生活空間環(huán)境的溫度,空調(diào)的控制溫度,人體的體溫檢測,冰箱、冰柜的溫度測量等等。當然,不同的場合,對測溫范圍的要求不一,即使相同的測溫范圍,測量不同的對象,其測量的精度要求也不盡相同,這些是顯而易見的,譬如,人體體溫測量,測量精度應(yīng)該要求比較高,達o.i°c左右,但在測量電機的軸溫時,可能測量的允差達1C以上。傳統(tǒng)的測溫系統(tǒng)在測溫點上由傳感元件,信號調(diào)理電路、A/D轉(zhuǎn)換或T/F轉(zhuǎn)換、單片機數(shù)據(jù)采集等組成一個完整的微機系統(tǒng);或采用獨立式儀表測量單元,并通過串行口與上位機通訊,系統(tǒng)結(jié)構(gòu)復(fù)雜,成本較高。本文設(shè)計了一個由數(shù)字化測溫元件組成的單線多點溫度監(jiān)控系統(tǒng),該系統(tǒng)是由上位機和下位機兩大部分組成。下位機(單片機)完成遠程數(shù)據(jù)采集與控制,它是由單片機和LED顯示器、報警電路等組成、可以對64個測溫點進行數(shù)字化測量。溫度傳感器采集的數(shù)據(jù)通過單總線方式傳送給單片機進行數(shù)據(jù)處理;上位機具有良好的菜單操作方式,可以在線監(jiān)控和顯示所有測溫點實時溫度值。并具有數(shù)據(jù)庫管理功能:實時溫度曲線和歷史溫度曲線顯示以及數(shù)據(jù)打印等功能。并為數(shù)據(jù)處理與融合,以及專家數(shù)據(jù)庫建立了一個智能化應(yīng)用平臺。下位機(單片機)與上位機(PC機)通過RS-232串行口進行數(shù)據(jù)通訊。系統(tǒng)硬件簡介單片機技術(shù)簡介2.1.1單片機技術(shù)的發(fā)展所謂單片機(microcontroller)是指在一個集成芯片中,集成微處理器(CPU)、存儲器、基本的I/O接口以及定時/計數(shù)、通信部件,即在一個芯片上實現(xiàn)一臺微型計算機的基本功能。1970年微型計算機研制成功之后,隨著就出現(xiàn)了單片機(即單片微型計算機)。美國Intel公司1971年生產(chǎn)的4位單片機4004和1972年生產(chǎn)的雛形8位單片機8008,特別是1976年MCS-48單片機問世以來,在短短的二十幾年間,經(jīng)歷了四次更新?lián)Q代,其發(fā)展速度大約每二、三年要更新一代、集成度增加一倍、功能翻一番。其發(fā)展速度之快、應(yīng)用范圍之廣,己達到了驚人的地步。它己滲透到生產(chǎn)和生活的各個領(lǐng)域,可謂“無孔不入”。盡管日前單片機的品種很多,但其中最具典型性的當數(shù)Intel公司的MCS-51系列單片機。MCS-51是在MCS-48的基礎(chǔ)上于80年代初發(fā)展起來的,雖然它仍然是8位的單片機,但其功能有很大的增強。由于PHILIPS,ATMEL,WELBORD,LG等近百家IC制造商都主產(chǎn)51系列兼容產(chǎn)品,具有品種全、兼容性強、軟硬件資料豐富等特點。因此,MCS-51應(yīng)用非常廣泛,成為繼MCS-48之后最重要的單片機品種。直到現(xiàn)在MCS-51仍不失為單片機中的主流機型。國內(nèi)尤以Intel的MCS-51系列單片機應(yīng)用最廣。由于8位單片機的高性能價格比,估計近十年內(nèi),8位單片機仍將是單片機中的主流機型。單片機技術(shù)的應(yīng)用隨著計算機技術(shù)的發(fā)展和在控制系統(tǒng)中的廣泛應(yīng)用,以及設(shè)備向小型化、智能化發(fā)展,作為高新技術(shù)之一的單片機以其體積小、功能強、價格低廉、使用靈活等優(yōu)勢,顯示出很強的生命力。它和一般的集成電路相比有較好的抗干擾能力,對環(huán)境的溫度和濕度都有較好的適應(yīng)性,可以在工業(yè)條件下穩(wěn)定工作。且單片機廣泛地應(yīng)用于各種儀器儀表,使儀器儀表智能化,提高它們的測量速度和測量精度,加強控制功能。如MCS-51系列單片機控制的“船舶航行狀態(tài)自動記錄儀”、“煙葉水分測試儀”、“智能超聲波測厚儀”等。單片機也廣泛地應(yīng)用于實時控制系統(tǒng)中,例如對工業(yè)上各種窯爐的溫度、酸度、化學(xué)成分的測量和控制。將測量技術(shù)、自動控制技術(shù)和單片機技術(shù)相結(jié)合,充分發(fā)揮其數(shù)據(jù)處理功能和實時控制功能,使系統(tǒng)工作處于最佳狀態(tài),提高系統(tǒng)的生產(chǎn)效率和產(chǎn)品質(zhì)量。從航空航天、地質(zhì)石油、冶金采礦、機械電子、輕工紡織等行業(yè)的分布系統(tǒng)與智能控制以及機電一體化設(shè)備和產(chǎn)品,到郵電通信、日用設(shè)備和器械,單片機都發(fā)揮了巨大作用。其應(yīng)用大致可分為以下幾方面:機電一體化設(shè)備的控制核心機電一體化是機械設(shè)備發(fā)展的方向。單片機的出現(xiàn)促進了機電一體化技術(shù)的發(fā)展,它作為機電產(chǎn)品的控制器,充分發(fā)揮其自身優(yōu)點,大大強化了機器的功能,提高了機器的自動化、智能化程度。最典型的機電產(chǎn)品機器人,每個關(guān)節(jié)或動作部位都是個單片機控制系統(tǒng)數(shù)據(jù)采集系統(tǒng)的現(xiàn)場采集單元大型數(shù)據(jù)采集系統(tǒng),要求數(shù)據(jù)采集的同步性和實時性要好。使用單片機作為系統(tǒng)的前端采集單元,由主控計算機發(fā)出采集命令,再將采集到的數(shù)據(jù)逐一送到主計算機中進行處理。如有些氣象部門、油田采油部門以及電廠等均可采用這樣的系統(tǒng)。分布控制系統(tǒng)的前端控制器在直接控制級的計算機分布控制系統(tǒng)(DCS)中,單片機作為過程控制中每一分部操作或控制的控制器,進行數(shù)據(jù)采集、反饋計算、控制輸出,并在上位機命令的指揮下進行相應(yīng)協(xié)調(diào)工作。智能化儀表的機芯自動化儀表的智能化程度越來越高。采用單片機的智能化儀表可具有自整定、自校正、自動補償和自適應(yīng)功能,還可進行數(shù)字PID調(diào)節(jié),軟件消除電流熱噪聲等等,解決傳統(tǒng)儀表所不能解決的難題。單片機的應(yīng)用使這種性能如虎添翼,如自動計費電度表、燃氣表中己有這方面的應(yīng)用。許多工業(yè)儀表中的智能流量計,氣體分析儀、成分分析僅等也采用了這項技基于單片機的烘爐溫度自動檢測系統(tǒng)的研究與設(shè)計術(shù)。甚至有的保健治療儀中也采用了單片機控制。消費類電子產(chǎn)品控制該應(yīng)用主要反映在家電領(lǐng)域,如洗衣機、空調(diào)器、保安系統(tǒng)、VCD視盤機、電子秤、IC卡、手機、BP機等。這些設(shè)備中使用了單片機機芯后,大大提高了其控制功能和性能,并實現(xiàn)了智能化、最優(yōu)化控制。終端及外圍設(shè)備控制計算機網(wǎng)絡(luò)終端設(shè)備,如銀行終端、商業(yè)POS(自動收款機)以及計算機外圍設(shè)備如打印機、通信終端和智能化UPS等。在這些設(shè)備中使用單片機,使其具有計算、存儲、顯示、輸入等功能,具有和計算機連接的接口,使計算機的能力及應(yīng)用范圍大大提高。本課題以單片機作為控制器之一,進一步研究單片機在自動化檢測領(lǐng)域中的應(yīng)用。課題研究的目的和意義在工業(yè)生產(chǎn)中,上位機軟件占據(jù)著舉足輕重的地位。隨著4C技術(shù)(computer、control、communication、CRT)及監(jiān)控軟件的發(fā)展,使用上位機監(jiān)控管理系統(tǒng)已成為大中型控制系統(tǒng)的流行趨勢,以PC機作為上位機應(yīng)用于控制系統(tǒng)中能提供一種良好的人機界面,減輕操作人員的負擔,提高管理水平。近年來,隨著計算機技術(shù)的飛速發(fā)展,給溫度的多點測量提供有力的技術(shù)支持。目前,計算機應(yīng)用控制領(lǐng)域采用三種配置:(1)可編程序控制器(PLC),(2)微型計算機,(3)單片機。多點測溫系統(tǒng),作為檢測系統(tǒng)的一種,采用單片機作為前段數(shù)據(jù)采集單元,對溫度進行采集和處理。應(yīng)用微型計算機實現(xiàn)數(shù)據(jù)保存、分析統(tǒng)計。本課題研究開發(fā)的目的,就是要通過采用先進的上位機軟件,研究出具有我國自主知識產(chǎn)權(quán)的多點測溫系統(tǒng)。研制的多點測溫系統(tǒng),可用來連續(xù)測量各點的溫度變化,準確的繪制出各個時間上的時間曲線。主控單片機的選擇主控單片機我們選用新茂的SM8952單片機。SM8952單片機是內(nèi)嵌8K字節(jié)閃存的8位單片微控制器它具有多達32個I/O口,其8K的閃存既可做程序存儲空間也可以作數(shù)據(jù)存儲空間或程序數(shù)據(jù)混合空間這些硬件特征和其強大的指令系統(tǒng)使它應(yīng)用于不同的場合因此是通用的和性能價格比高的控制器。該單片機還具有穩(wěn)定性好,抗干擾等優(yōu)點,非常適合本測溫系統(tǒng)設(shè)計的使用。熱電阻測量模塊我們采用的是PT100作為溫度傳感器。鉑電阻溫度傳感器的特點是:精度高,穩(wěn)定性好性能可靠。鉑在氧化性環(huán)境中,甚至在高溫下的物理和化學(xué)性質(zhì)都非常穩(wěn)定。因此鉑被公認為是目前制造熱電阻的最好材料。鉑電阻主要作為標準電阻溫度計使用,也常被用在工業(yè)測量中。此外,還被廣泛地應(yīng)用于溫度的基準和標準的傳遞。鉑電阻溫度計是目前測溫重復(fù)性最好的一種,它的長時間穩(wěn)定的重復(fù)性可達104K,優(yōu)于其他所有溫度計。目前鉑電阻的純度已經(jīng)達到99.9995%。信號采集方式采用電橋。由于熱電阻安裝的地方距離測量模塊比較遠,當環(huán)境的溫度變化時其連接導(dǎo)線電阻也要變化。因為它與熱電阻Rt是串聯(lián)的,也就是電橋臂的一部分,所以會造成測量誤差。采用三線制接線方法就可以避免這種誤差的產(chǎn)生。2.5通信部分本系統(tǒng)采用RS-485通信方式,接口選擇芯片MAX487。MAX487是MAXIM公司生產(chǎn)的用于RS-485和RS—422通信的差分總線小功率收發(fā)器,它含有一個驅(qū)動器和一個接收器,具有驅(qū)動器/接收器使能功能,輸入阻抗為1/4負載(>48kW),節(jié)點數(shù)為128,即每個MAX487的驅(qū)動器可驅(qū)動128個標準負載。MAX487的驅(qū)動器設(shè)計成限斜率方式,使輸出信號邊沿不至于過陡,以避免在傳輸線產(chǎn)生過多的高頻分量,從而有效扼制了干擾現(xiàn)象。MAX487的接收靈敏度為±200MV,即接收端的差分電壓>+200MV時,接收器輸出為高電平,<-200MV時接收器輸出為低電平,介于土200MV之間時接收器輸出為不確定狀態(tài),因此,一旦某個節(jié)點的接收器在總線空閑、傳輸線開路或短路時產(chǎn)生低電平,將使串行接收器找不到起始位,從而引起通信異常,為此,本系統(tǒng)在硬件上作了處理:將MAX487的A、B輸出端加接上拉、下拉電阻,保證在發(fā)出有效數(shù)據(jù)時所有接收器能接收到完整的數(shù)據(jù)。MAX487的數(shù)據(jù)傳輸速率為0.25Mbps,靜態(tài)工作電流為120yA,5V單電源工作,在本系統(tǒng)中,MAX487采用半雙工通信方式,各節(jié)點間的通信通過一對雙絞線作為傳輸介質(zhì),因雙絞線的特性阻抗為1200,因此系統(tǒng)在MAX487的始端和末端各接一個1200電阻以減少線路上傳輸信號的反射。由于主機與分機相隔較遠,而分機系統(tǒng)上電或復(fù)位又常常不在同一時刻完成,如在此時某個MAX487處于發(fā)送狀態(tài),將占用通信總線而使其它分機無法與主機進行通信,本系統(tǒng)在SM8952的P3.5口與MAX487的DE端之間加接光耦TIL817,保證了系統(tǒng)上電復(fù)位時MAX487的DE端為“0”,有效解決了這個問題。系統(tǒng)上位機軟件設(shè)計工業(yè)生產(chǎn)中上位機軟件有很多種,本設(shè)計采用的是VB6.0作為上位機軟件。3.1VisualBasic功能簡介和發(fā)展VisualBasic(簡稱VB)是Microsoft公司開發(fā)的一種通用的基于對象的程序設(shè)計語言?!癡isual”指的是開發(fā)圖形用戶界面(GUI)的方法——不需編寫大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的對象add到屏幕上的一點即可。“Basic”指的是BASIC(BeginnersAll-PurposeSymbolicInstructionCode)語言,一種在計算技術(shù)發(fā)展歷史上應(yīng)用得最為廣泛的語言。VisualBasic在原有BASIC語言的基礎(chǔ)上進一步發(fā)展,至今包含了數(shù)百條語句、函數(shù)及關(guān)鍵詞,其中很多和WindowsGUI有直接關(guān)系。專業(yè)人員可以用VisualBasic實現(xiàn)其它任何Windows編程語言的功能,而初學(xué)者只要掌握幾個關(guān)鍵詞就可以建立實用的應(yīng)用程序。VisualBasicScriptingEdition(VBScript)是廣泛使用的腳本語言,它是VisualBasic語言的子集,可嵌入HTML語言中,用于網(wǎng)頁設(shè)計,如ASP(ActiveServerPage)文件。VB簡單易學(xué),通用性強,用途廣泛。VB可以用于可以開發(fā)多媒體、數(shù)據(jù)庫、網(wǎng)絡(luò)、圖形等方面的應(yīng)用程序。數(shù)據(jù)訪問特性允許對包括MicrosoftSQLServer和其它企業(yè)數(shù)據(jù)庫在內(nèi)的大部分數(shù)據(jù)庫格式建立數(shù)據(jù)庫和前端應(yīng)用程序,以及可調(diào)整的服務(wù)器端部件。有了ActiveX(TM)技術(shù)就可使用其它應(yīng)用程序提供的功能,例如MicrosoftWord字處理器,MicrosoftExcel電子數(shù)據(jù)表及其它Windows應(yīng)用程序。Internet能力強大,很容易在應(yīng)用程序內(nèi)通過Internet或intranet訪問文檔和應(yīng)用程序,或者創(chuàng)建Internet服務(wù)器應(yīng)用程序。已完成的應(yīng)用程序是使用VisualBasic虛擬機真正.exe文件,可以自由發(fā)布。VB是伴隨Windows操作系統(tǒng)而發(fā)展的,在中國使用較廣的版本有VB4.0、VB5.0、VB6.0。VB4.0是為配合WIN95的問世于1995年推出的,既可用于編寫WIN3.X平臺的16位應(yīng)用程序也可編寫WIN95平臺的32位應(yīng)用程序;VB5.0主要用于編寫WIN95平臺的32位應(yīng)用程序,較之VB4.0主要擴展了數(shù)據(jù)庫、ActiveX和Internet方面的功能;VB6.0是與WIN98配合于1998年推出的,進一步加強了數(shù)據(jù)庫、Internet和創(chuàng)建控件方面的功能。本系統(tǒng)軟件采用VB進行程序設(shè)計。因為visualBasic是一種功能強大的高級程序設(shè)計語言,它可以實現(xiàn)一些基本的簡單情況,也可以完成許多高級任務(wù),在這里關(guān)于VB方面的一些知識都將詳略的介紹到。整個系統(tǒng)軟件設(shè)計將被劃分為非本質(zhì)部分程序設(shè)計和本質(zhì)程序設(shè)計進行分述。關(guān)于本質(zhì)與非本質(zhì)的劃分是基于這樣一個標準:用VisualBasic可視手段對于封皮。菜單及其它部分簡單設(shè)計稱為非本質(zhì)部分設(shè)計;對用VisualBasic進行測溫。子程序,溫度顯示,存盤,讀盤,單倉數(shù)據(jù)監(jiān)察這些系統(tǒng)所必須的高級功能程序設(shè)計稱為系統(tǒng)的本質(zhì)程序設(shè)計。本人對于可視化VisualBasic的設(shè)計體會是:VB的優(yōu)點是在非本質(zhì)程序設(shè)計中有重要的反映,淡然在本質(zhì)程序部分設(shè)計中也有很多較之其它語言進行程序設(shè)計所沒有的重要優(yōu)點。VisualBasicforwindows是一種具有良好圖形用戶界面(GUI)的程序設(shè)計語言,同時又是一種完美支持面向?qū)ο蟪绦蛟O(shè)計(00P)的語言。Visual指的是開發(fā)圖形擁護(GUI)的方法,不需要像C語言那樣編寫大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的對象拖放到窗體上即可。這種直觀的編程方法,也叫做可視化變編程。Basic指的是(BasicBeginnersAll-PurposeSymbolicInstructionCode)語言,是-一種在計算機技術(shù)發(fā)展歷史上應(yīng)用得最為廣泛的語言。而VisualBasic則綜合運用了BASIC語言的結(jié)構(gòu)話特點和GUI可視化設(shè)計工具。既具有windows豐富的圖形窗口工作環(huán)境,又繼承了BASIC語言編程的簡便性。與C語言相比,不能說VB就比C語言優(yōu)秀,作為C語言,其靈活簡便,對于運行環(huán)境要求不高書共知的,而VB則要求很高的配置與條件。VisualBasic是一種面向?qū)ο蟮某绦蛟O(shè)計(OOP),因而它具有OOP語言所具有的對象的創(chuàng)建機制,對象的繼承性,對象的多態(tài)性及對象的可見性等特征。所謂面向?qū)ο蟮某绦蛟O(shè)計是一種以對象為基礎(chǔ),以事件來驅(qū)動對象執(zhí)行的程序設(shè)計技術(shù)。OOP把計算過程看作為對象的分類過程加上其狀態(tài)變換的過程也就是將一個應(yīng)用程序逐步劃分成互相關(guān)聯(lián)的多個對象,并且建立起與這些對象互相關(guān)聯(lián)的事件過程。通過對象對所發(fā)生的事件產(chǎn)生響應(yīng),并執(zhí)行相應(yīng)的事件過程,以引發(fā)對象狀態(tài)的改變,從而最終達到完成計算的目的。面向?qū)ο笤O(shè)計是一種全新的程序設(shè)計方法,它從根本上改變了傳統(tǒng)的程序設(shè)計模式,其基本思想是:通過建立于具體實際應(yīng)用相對應(yīng)的對象,并通過這些對象的組合來創(chuàng)建具體的應(yīng)用程序。3.2VB基本概念與VB編程環(huán)境VB變成是一種面向?qū)ο蟮某绦蛟O(shè)計,要熟悉并掌握它必須先掌握其基本該您于編程環(huán)境。3.2.1VB的基本概念1、對象對象是代碼和數(shù)據(jù)的組合,可以作為一個單位來處理。對象可以是應(yīng)用程序的一部分,比如可以是控件或窗體。整個應(yīng)用程序也是一個對象。在VB中可能用到的幾種類型的對象,如表3.1所示:表3.1類型對象示例示例描述命令按鈕窗體上的控件,像命令按鈕和框架,它們都是對象窗體VisualBasic工程中的母一個窗體都是獨立的對象數(shù)據(jù)庫數(shù)據(jù)庫是對象,并且還包含其他對象,如字段、索引等圖表MicrosoftExcel中的圖表是對象VB中的每個對象都是用類定義的。用餅干模子和餅干之間的關(guān)系作比,就會明白對象和它的類之間的關(guān)系。餅干模子是類。它確定了每塊餅干的特征,比如大小和形狀。用類創(chuàng)建對象,對象就是餅干。類是面向?qū)ο蟪绦蛟O(shè)計的核心技術(shù),可以理解成一種定義了對象行為和外觀的模板;把對象看作是類的原原本本的復(fù)制品,類具有繼承性、封裝性、多態(tài)性、抽象性。(1)屬性屬性是對對象特性的描述,VB為每一類對象都規(guī)定了若干屬性,設(shè)計中可以改變具體對象的屬性值。比如窗體的背景顏色、高度與寬度。(2)事件(Event)事件是發(fā)生在對象上的動作。事件的發(fā)生不是隨意的,某些事件僅發(fā)生在某些對象上。在VB中事件的調(diào)用形式是:PrivateSub對象名_事件名(事件內(nèi)容)EndSub(3)方法(Method)方法指的是控制對象動作行為的方式。它是對象本身內(nèi)含的函數(shù)或過程,它也是一個動作,是一個簡單的不必知道細節(jié)的無法改變的事件,但不稱作事件;同樣,方法也不是隨意的,一些對象有一些特定的方法。在VB里方法的調(diào)用形式是:對象名.方法名2、 屬性、方法和事件之間的關(guān)系VB對象具有屬性、方法和事件。屬性是描述對象的數(shù)據(jù);方法告訴對象應(yīng)做的事情;事件是對象所產(chǎn)生的事情,事件發(fā)生時可以編寫代碼進行處理。VB的窗體和控件是具有自己的屬性、方法和事件的對象??梢园褜傩钥醋饕粋€對象的性質(zhì),把方法看作對象的動作,把事件看作對象的響應(yīng)。日常生活中的對象,如小孩玩的氣球同樣具有屬性、方法和事件。氣球的屬性包括可以看到的一些性質(zhì),如它的直徑和顏色。其它一些屬性描述氣球的狀態(tài)(充氣的或未充氣的)或不可見的性質(zhì),如它的壽命。通過定義,所有氣球都具有這些屬性;這些屬性也會因氣球的不同而不同。氣球還具有本身所固有的方法和動作。如:充氣方法(用氦氣充滿氣球的動作),放氣方法(排出氣球中的氣體)和上升方法(放手讓氣球飛走)。所有的氣球都具備這些能力。氣球還有預(yù)定義的對某些外部事件的響應(yīng)。例如,氣球?qū)Υ唐扑氖录憫?yīng)是放氣,對放手事件的響應(yīng)是升空。在VB程序設(shè)計中,基本的設(shè)計機制就是:改變對象的屬性、使用對象的方法、為對象事件編寫事件過程。程序設(shè)計時要做的工作就是決定應(yīng)更改哪些屬性、調(diào)用哪些方法、對哪些事件做出響應(yīng),從而得到希望的外觀和行為。3、 事件驅(qū)動模型在傳統(tǒng)的或“過程化”的應(yīng)用程序中,應(yīng)用程序自身控制了執(zhí)行哪一部分代碼和按何種順序執(zhí)行代碼。從第一行代碼執(zhí)行程序并按應(yīng)用程序中預(yù)定的路徑執(zhí)行,必要時調(diào)用過程。在事件驅(qū)動的應(yīng)用程序中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時執(zhí)行不同的代碼片段。事件可以由用戶操作觸發(fā)、也可以由來自操作系統(tǒng)或其它應(yīng)用程序的消息觸發(fā)、甚至由應(yīng)用程序本身的消息觸發(fā)。這些事件的順序決定了代碼執(zhí)行的順序,因此應(yīng)用程序每次運行時所經(jīng)過的代碼的路徑都是不同的。因為事件的順序是無法預(yù)測的,所以在代碼中必須對執(zhí)行時的“各種狀態(tài)”作一定的假設(shè)。當作出某些假設(shè)時(例如,假設(shè)在運行來處理某一輸入字段的過程之前,該輸入字段必須包含確定的值),應(yīng)該組織好應(yīng)用程序的結(jié)構(gòu),以確保該假設(shè)始終有效(例如,在輸入字段中有值之前禁止使用啟動該處理過程的命令按鈕)。在執(zhí)行中代碼也可以觸發(fā)事件。例如,在程序中改變文本框中的文本將引發(fā)文本框的Change事件。如果Change事件中包含有代碼,則將導(dǎo)致該代碼的執(zhí)行。如果原來假設(shè)該事件僅能由用戶的交互操作所觸發(fā),則可能會產(chǎn)生意料之外的結(jié)果。正因為這一原因,所以在設(shè)計應(yīng)用程序時理解事件驅(qū)動模型并牢記在心是非常重要的。4、交互式開發(fā)傳統(tǒng)的應(yīng)用程序開發(fā)過程可以分為三個明顯的步驟:編碼、編譯和測試代碼。但是VisualBasic與傳統(tǒng)的語言不同,它使用交互式方法開發(fā)應(yīng)用程序,使三個步驟之間不再有明顯的界限。VB在編程者輸入代碼時便進行解釋,即時捕獲并突出顯示大多數(shù)語法或拼寫錯誤??雌饋砭拖褚晃粚<以诒O(jiān)視代碼的輸入。除即時捕獲錯誤以外,VB也在輸入代碼時部分地編譯該代碼。當準備運行和測試應(yīng)用程序時,只需極短時間即可完成編譯。如果編譯器發(fā)現(xiàn)了錯誤,則將錯誤突出顯示于代碼中。這時可以更正錯誤并繼續(xù)編譯,而不需從頭開始。由于VB的交互特性,代碼運行的效果可以在開發(fā)時進行測試,而不必等到編譯完成以后。3.2.2VB6.0的集成開發(fā)環(huán)境簡介VB集成開發(fā)環(huán)境(IDE——IntegratedDevelopingEnvironment)由以下元素組成:1、標題欄用于顯示正在開發(fā)或調(diào)試的工程名和系統(tǒng)的工作狀態(tài)(設(shè)計態(tài)、運行態(tài)、中止態(tài))。2、菜單欄如圖3.1:文件迢)編輯⑥視圖②工程的格式?I調(diào)試?運行⑥查詢?圖表①工具⑴外接程席九?窗口⑩幫助⑩圖3.1菜單欄示意圖3、工具欄如圖3.2:澎〒色k育心9|為電俚開I口CIpII■I霸.圖嚼普法汶倉出0.D還5055.40! P「 I圖3.2工具欄示意圖在編程環(huán)境下用于快速訪問常用命令。缺省情況下,啟動VB后顯示“標準”工具欄,附加的編輯、窗體設(shè)計和調(diào)試的工具欄可以從“視圖”菜單上的“工具欄”命令中移進或移出。4、 窗體設(shè)計器用來設(shè)計應(yīng)用程序的界面。啟動VB后,窗體設(shè)計器中自動出現(xiàn)一個名為Forml的空白窗體,可以在該窗體中添加控件、圖形和圖片等來創(chuàng)建所希望的外觀,窗體的外觀設(shè)計好后,從菜單中選擇“文件”-“保存窗體”-在保存對話框中給出合適的文件名(注意擴展名),并選擇所需的保存位置-確定。需要再設(shè)計另一個窗體時,單擊工具欄上的“添加窗體”按鈕即可。5、 控件(工具)箱由一組控件按鈕組成,用于設(shè)計時在窗體中放置控件。除了缺省的工具箱布局之外,還可以通過從上下文菜單中選定“添加選項卡”并在結(jié)果選項卡中添加控件來創(chuàng)建自定義布局。6、 彈出式(上下文)菜單在要使用的對象上單擊鼠標右鍵即可打開快捷菜單,其上會出現(xiàn)與當前對象相關(guān)的經(jīng)常執(zhí)行的操作,以加快操作速度。7、 工程管理器窗口用于瀏覽工程中所包含的窗體和模塊,還可以從中查看代碼、查看對象。8、 屬性窗口是VB中一個比較復(fù)雜的窗口,其中列出了對選定窗體和控件的屬性設(shè)置值。VB中正是通過改變屬性來改變對象的特征,如大小、標題或顏色。9、 對象瀏覽器列出工程中有效的對象,并提供在編碼中漫游的快速方法。可以使用“對象瀏覽器”瀏覽在VB中的對象和其它應(yīng)用程序,查看對那些對象有效的方法和屬性,并將代碼過程粘貼進自己的應(yīng)用程序。10、 對象瀏覽器右擊窗體中的對象、從工程管理器中點“查看代碼”按鈕。11、窗體布局窗口FormLayoutwindow允許使用表示屏幕的小圖象來布置應(yīng)用程序中各窗體的位置。12、 立即、本地和監(jiān)視窗口這些附加窗口是為調(diào)試應(yīng)用程序提供的,它們只在IDE之中運行應(yīng)用程序時才有效。2.3利用VB開發(fā)應(yīng)用程序的一般步驟一個VB程序也稱為一個工程,由窗體、標準模塊、自定義控件及應(yīng)用所需的環(huán)境設(shè)置組成。開發(fā)步驟一般如下:創(chuàng)建程序的用戶界面設(shè)置界面上各個對象的屬性編寫對象響應(yīng)事件的程序代碼保存工程測試應(yīng)用程序,排除錯誤創(chuàng)建可執(zhí)行程序本軟件各窗體簡單介紹:本系統(tǒng)軟件部分包括8個窗體,1個模塊;模塊中主要包含有一些功能函數(shù)的實現(xiàn)。如打開,保存等等。窗體分別為封面窗體,主菜單,數(shù)據(jù)報表,單倉溫度監(jiān)測,幫助。這些窗體都具有界面美觀,操作方便的優(yōu)點。本系統(tǒng)可實現(xiàn)以下功能:可以設(shè)定報警溫度。可監(jiān)視各個時刻的溫度??纱蛴∧硞€時刻的溫度報表。可任意查看某一倉溫度值。讀盤可對以往數(shù)據(jù)查詢??蓪斕飚敃r數(shù)據(jù)以日期命名存盤,便于管理??煞奖阃顺鰬?yīng)用系統(tǒng)。幫助子菜單將讓你更清楚地了解整個系統(tǒng)的功能。3.3設(shè)計中VB6.0所采用的控件本設(shè)計在采用VB6.0作為上位機軟件的同時,還應(yīng)用了VB6.0的兩個控件。SSTab和MSCOMM控件。3.3.1SSTab控件的功能SSTab控件提供了一組選項卡,每個選項卡都可以作為其它控件的容器。在控件中,同一時刻只有一個選項卡是活動的,這個選項卡向用戶顯示它本身所包含的控件而隱藏其它選項卡中的控件。3.3.2MSComm控件特點MSComm控件是Microsoft提供的擴展控件,用于支持VB程序?qū)Υ诘脑L問,該控制"隱藏"了大部分串口通信的底層運行過程和許多煩瑣的處理過程,同時支持查詢方法和事件驅(qū)動通信的機制,事件驅(qū)動通信是交互方式處理串口事務(wù)的一種非常有效的方法,特別適合Windows程序的編寫.在通信過程中,當發(fā)送數(shù)據(jù),收到數(shù)據(jù)或產(chǎn)生傳輸錯誤時,觸發(fā)MSComm控件的OnComm事件,然后可以通過判斷CommEvent屬性值獲得事件類型,再根據(jù)事件類型進行相應(yīng)數(shù)據(jù)處理。因此用其實現(xiàn)微機串口的數(shù)據(jù)通信相當簡單,以很少的程序代碼就可以輕松實現(xiàn)串口的訪問和數(shù)據(jù)通信。3.3.3MSComm控件的介紹一般來說,用VB進行串口通信使用到的大部分都是這個MSComm這個控件,MSComm通信控件提供了一系列標準通信命令的接口,我們可以通過它可以建立串口連接、數(shù)據(jù)發(fā)送、命令發(fā)送以及監(jiān)視和響應(yīng)在通信過程中的事件和錯誤。MSComm這個控件在一開始的時候不是默認的出現(xiàn)在Toolbox中的,我們要想使用它,就必須把它從VB中調(diào)出來。首先單擊Project(工程),選擇Components(控件),接著在Control(控制)選項卡中選中MicrosoftCommControl6.0這個控件,點擊確定,這時你就能在Toolbox上看到一個小電話的圖標,它就是MSComm控件。MSComm控件提供兩種處理通信的方法:第一種是當串口發(fā)生事件或者錯誤的時候,會產(chǎn)生一個OnComm的事件,我們可以通過對這個事件的捕捉,進行相應(yīng)的處理,這種通過對OnComm事件進行捕捉的方法稱為事件驅(qū)動方式;第二種是定時或者不定時的查詢MSComm的屬性變化,從而選擇相應(yīng)的處理方式,這種方法我們稱為查詢方法。說到OnComm事件,這里就的不得不說到MSComm的另一個重要屬性--CommEvent屬性。當串口發(fā)生事件或者錯誤的時候,MSComm就為它賦不同的代碼,同時,產(chǎn)生一個OnComm事件。這時候,我們就可以針對不同的代碼,進行相應(yīng)的處理。下面提供一些CommEvent屬性的代碼、常數(shù)及含義:CommEvent通信事件:代碼常數(shù)含義ComEvReceive接受到Rthreshold個字符。該事件將持續(xù)產(chǎn)生,直到用Input屬性從接受緩沖區(qū)中讀取并刪除字符。ComEvSend發(fā)送緩沖區(qū)中數(shù)據(jù)少于Sthreshold個,說明串口已經(jīng)發(fā)送了一些數(shù)據(jù),程序可以用Output屬性繼續(xù)發(fā)送數(shù)據(jù)。ComEvCTSClearToSend信號線狀態(tài)發(fā)生變化。ComEvDSRDataSetReady信號線狀態(tài)從1變到0。ComEvCDCarrierDetect信號線狀態(tài)發(fā)生變化。ComEvRing檢測到振鈴信號。ComEvEOF接受到文件結(jié)束符。CommEvent通信錯誤:代碼常數(shù)含義ComEvntBreak接受到一個中斷信號。ComEvntCTSTOClearToSend信號超時。ComEvntDSRTODataSetReady信號超時。ComEvntFrame幀錯誤。ComEvntOverrun串口超速。ComEvntCDTO載波檢測超時。ComEvntRxOver接受緩沖區(qū)溢出,緩沖區(qū)中已沒有空間。ComEvntRxParity奇偶校驗錯。ComEvntTxFull發(fā)送緩沖區(qū)溢出,緩沖區(qū)中已沒有空間。ComEvntDCB檢索串口的設(shè)備控制塊時發(fā)生錯誤。上位PC機VB通信程序設(shè)計串行通信程序設(shè)計方法在本溫度檢測系統(tǒng)中,上位機的主要功能有:串口通信功能設(shè)置;接收來自下位機的測溫值,并進行實時顯示;向下位機發(fā)送溫度上、下限值;實時溫度曲線和歷史溫度曲線顯示;數(shù)據(jù)庫管理功能。利用VB開發(fā)通信程序的主要方法有兩種:一種是利用VB本身提供的通信控件;另一種方法是利用WindowsAPI應(yīng)用程序接口。在實踐中,利用VB通信控件的方法比調(diào)用API動態(tài)連接庫的方法更為簡便,因而本系統(tǒng)主要采用利用VB通信控件進行通信。VB中MSComm串口通信控件在正常的工具欄中沒有,需要在菜單"工程"的選項"部件"中添加,選擇MicrosoftCommControl6.0即可。3.4.1上位機PC機端通訊軟件的實現(xiàn)在Windows環(huán)境下,盡管VisualBasic6.0不能對I/O口直接進行訪問,但其包含的MSComm部件為實現(xiàn)多機串行通信提供了有力工具。VB6.0具有面向?qū)ο蟮脑O(shè)計方法、友好的用戶界面、簡單方便的串行通訊和實用性強等優(yōu)點,無需借用其它語言就可以開發(fā)出優(yōu)秀的控制系統(tǒng)通訊軟件。因此本系統(tǒng)采用VB6.0在Windows98環(huán)境下實現(xiàn)PC機與MCS-51系列8031單片機之間的串行通訊。VB提供了串行端口控件MSComm來為應(yīng)用程序提供串行通訊,該控件屏蔽了通信過程中的底層操作,程序員應(yīng)用時只需設(shè)置、監(jiān)控MSComm控件的屬性和時間即可完成對串行口的初始化和數(shù)據(jù)的輸入輸出工作。MSComm控件的主要屬性如下:Commport設(shè)置并返回端口號。設(shè)計時端口號可以設(shè)置成1到16的任何數(shù)。例如:MSCmport=2,即設(shè)置當前通訊端口為COM2。Setting 設(shè)置并返回波特率、奇偶校驗、數(shù)據(jù)位、停止位。格式為:MSComm.Setting=String,String是一個包含四部分的字符串。第一部分位波特率;第二部分為奇偶校驗,N表示不校驗,E表示偶校驗,O表示奇校驗,S表示空格校驗,M表示符號校驗;第三部分為數(shù)據(jù)位數(shù),其可選值為4,5,6,7,8;第四部分為停止位位數(shù),其可選值為1,1.5,2;Setting屬性的缺省值為“9600,N,8,1”。Portopen設(shè)置并返回通訊端口的狀態(tài),也可以打開和關(guān)閉端口。Input從接收緩沖區(qū)返回和刪除字符,該屬性在運行時為只讀。InputLen設(shè)置并返回每次Input屬性從接收緩沖區(qū)中讀取的字符數(shù)。InputLen屬性的缺省值為0時,Input將讀取接收緩沖區(qū)的全部內(nèi)容。Output向傳送緩沖區(qū)寫數(shù)據(jù),要傳送的數(shù)據(jù)可以是文本數(shù)據(jù)或二進制數(shù)據(jù)。CommEvent返回最近的通訊時間或錯誤。只要有通訊錯誤或事件發(fā)生時都會產(chǎn)生OnComm事件,CommEvent屬性中存有該錯誤或事件的數(shù)字代碼。3.4.2溫度數(shù)據(jù)上傳部分溫度數(shù)據(jù)上傳部分我們采用RS485的通信方式,該方式的優(yōu)點是數(shù)據(jù)可傳輸?shù)木嚯x遠,由于采用土200mV電勢差來表示傳輸?shù)倪壿嫞跃哂泻軓姷目垢蓴_能力。在進行數(shù)據(jù)上傳之前要將MAX487的讀寫信號線置成寫,發(fā)送數(shù)據(jù)結(jié)束在將信號線置成讀。上傳數(shù)據(jù)幀格式,溫度上傳的楨格式為:起始字節(jié)為9F,通道字節(jié)用高四位表示通道號,符號字節(jié)用11表示正數(shù),用12表示負數(shù),溫度值第一字節(jié)的低四位表示溫度值的十位,溫度值第二字節(jié)的低四位表示溫度值的個位,溫度值第三字節(jié)的低四位表示溫度值的小數(shù)位,校驗位為從通道號開始的五個字節(jié)的和的低字節(jié),停止字節(jié)為6F。串行口的通信波特率為9600bps,時鐘發(fā)生器用定時器1的工作方式2,采用8位自動加載模式,計數(shù)初值為0XFD,波特率不增倍,SMOD=0;下面介紹發(fā)送一個字節(jié)的方法:先將MAX487置于寫狀態(tài),然后把要發(fā)送的數(shù)據(jù)送到SBUF里,查詢TI的狀態(tài),如果為“0”,則繼續(xù)查詢,直到TI為“1”,表示發(fā)送的一個字節(jié)已經(jīng)結(jié)束,將MAX487置于讀狀態(tài)。向上位機發(fā)送溫度子程序如表3.2:表3.2傳送數(shù)據(jù)表開始位通道號符號位十位個位小數(shù)位校驗位停止位9FXXXX000011,120000XXXX0000XXXX0000XXXXSUM6F3.4.3VB編程程序首先打開VB6.0應(yīng)用程序,如圖3.3:選擇標準EXE,點擊打開進入VB6.0操作界面,點擊“Project(工程)”——選擇“Components(控件)”接著在“Control(控制)”。選項卡中選中MicrosoftCommControl6.0這個控件,點擊確定,這時你就能在Toolbox上看到一個小電話的圖標,它就是MSComm控件。圖3.3VB新建工程圖strset=“9600,N,8,1”m_I_RecvCont=0m_b_SendData=FalseMSCommTemp.CommPort=Int(ComTemp.Text)MSCommTemp.Settings=strsetMSCommTemp.InputMode=comInputModeBinaryMSCommTemp.InputLen=0MSCommTemp.Rthreshold=1MSCommTemp.PortOpen=TrueLabinfo.Caption=“系統(tǒng)信息:串口打開成功!”MSCommTemp.InBuffercount=0M_b_Temp_Open=True上面這段程序是用VB6.0編程語言對MSComm控件的設(shè)置。波特率為:9600奇偶校驗位為:N數(shù)據(jù)位為:8停止位為:1PrivateSubMSCommTemp_OnComm()采用MSComm控件中OnComm事件IfArr(0)=&H9FThenm_i_RecvCount=0LabInfo.Caption="系統(tǒng)信息:正在接收數(shù)據(jù)..."EndIf這段程序表示,數(shù)組Arr(0)接收到下位機傳送的代碼如果是“&H9F”則表示系統(tǒng)通訊成功,正在接收數(shù)據(jù)。IfArr(7)=&H6FThenm_i_sum=0Fori=1To7m_i_sum=m_i_sum+Arr(i)Nextichecksum=m_i_sumAnd255checksum=m_i_sumAnd127IfArr(1)>8ThenExitSubIf(Arr(2)=&HB)Thendisplay(Arr(1))=Arr(3)*10+Arr(4)+Arr(5)*0.1display(Arr(1))=display(Arr(1))*(-1)Elsedisplay(Arr(1))=Arr(3)*10+Arr(4)+Arr(5)*0.1EndIf這段程序表示,數(shù)組Arr(7)接收到下位機傳送的代碼如果是“&H6F”則表示系統(tǒng)通訊結(jié)束。并且只接收1—8八個通道的數(shù)據(jù)。如果通道位的代碼大于8,則程序結(jié)束。通過數(shù)組Arr(2)的代碼來判斷接收到的溫度數(shù)據(jù)的正負。如果接收到的代碼是“&HB”則表示接收到的溫度數(shù)據(jù)為負數(shù),相反為正數(shù)。如圖3.4:判斷是甲喘昨4數(shù)據(jù)傳送流程圖圖3接收適1HPrivateSubPicture1_Paint()DimIAsIntegerPicture1.Scale(0,110)-(500,0)ForI=10To100Step10Picture1.Line(0,I)-(10,I)Picture1.CurrentY=Picture1.CurrentY+3Picture1.PrintINextIPicture1.CurrentX=0:Picture1.CurrentY=Text1.TextEndSub這段代碼是在SSTab控件上畫上一個picturebox,并根據(jù)接收到的溫度數(shù)據(jù)畫出相應(yīng)的曲線。如圖3.5:100_90_80_70_6050-40—30圖3.5溫度曲線示意圖第一邇道[第二通道[第三通道[第四道道[第五通道[第責通道[100_90_80_70_6050-40—30圖3.5溫度曲線示意圖上位機采集上來的數(shù)據(jù)在Text.text文本框中顯示,如圖3.6:圖3.6溫度數(shù)據(jù)顯示圖讀存盤處理程序的編寫:在讀存盤處理程序編寫過程中,關(guān)鍵涉及兩個問題要加以討論與解決,一個是通用對話框,一個是文件的讀寫操作即屬于文件管理的內(nèi)容。1、通用對話框?qū)υ捒蚴荲isualBasic應(yīng)用程序與擁護進行信息交換的窗口,通過對話框可以輸入必要的信息和數(shù)據(jù)。包括三種設(shè)計方法:Msgbox和InPutBox及用CommonDialog控件設(shè)計標準窗體對話框。Msgbox功能是把消息傳遞給用戶,同時接收用戶在對話框中的選擇,使程序根據(jù)用戶的選擇來作出相應(yīng)的響應(yīng)。Msgbox(prompt,buttons,title,helpfile,Context])可看作輸出對話框,在交互或程序中,能反饋一些信息,進行提示擁護,其中prompt:顯示的消息字符串表達式。Buttons:顯示按鈕數(shù)目和形式以及對話框風格的數(shù)字表達式表示Title:對話框標題的字符串表達式。InPutBox:一般用作程序的輸入框,接收用戶的輸入,并根據(jù)接收到的消息,作出相應(yīng)的處理。InPutBox(prompt,title,default,xpos,ypos,helpfile,context)用CommonDialog控件創(chuàng)建,包括打開文件,保存文件等標準對話框,在應(yīng)用程序中可以用不同的顯示方法來實現(xiàn)顯示對話框,以便給應(yīng)用程序提供信息數(shù)據(jù),然后根據(jù)接收來的信息作出不同的處理,可以在程序中通過調(diào)用CommonDialog控件的屬性來接收用戶在對話框中輸入的信息。用法:object.showopen顯示open對話框2、文件操作所謂文件一般是指存儲在計算機外部介質(zhì)上一些信息組成的集合,要求到存儲在外部介質(zhì)上的數(shù)據(jù)信息,必須先按所提供的文件名找到指定的文件,然后再從該文件中讀取數(shù)據(jù)信息。用戶要向外部介質(zhì)上存儲數(shù)據(jù)信息,也必須先建立一個文件,然后再向該文件輸出需要存儲的信息。文件存取的方式有順序文件和隨機文件兩種。順序文件的數(shù)據(jù)是一個接一個順序存放的,而且只提供第一個記錄的存儲位置,隨機文件的每個記錄均有固定的長度,每個記錄都有一個記錄號,在存放數(shù)據(jù)時,只要指明是第幾個記錄號,就可以把數(shù)據(jù)存入指定的位置;讀取數(shù)據(jù)時,只需要給出某一個記錄的記錄號,便能直接讀取記錄,隨機文件可以同時作輸入輸出操作,速度快。對隨機文件操作包括建立隨機文件,打開隨機文件,關(guān)閉隨機文件和讀寫隨機文件,以及對記錄的刪除和增加。建立和打開文件:openfilenameforrandomasnum寫文件 :Put#文件號,記錄號,記錄名稱讀文件 :Get#文件號,記錄號,記錄名稱PublicSubopen1()Dimopen1AsStringDimiAsIntegerOnErrorGoToopenerrorForm2.dlogopen.InitDir="d:\我的文檔\form\"Form2.dlogopen.Filter="allfiles(*.*)|*.*|datafiles(*.dat)|*.dat"Form2.dlogopen.FilterIndex=2Form2.dlogopen.ShowOpenopen1=Form2.dlogopen.FileNameIfopen1=""ThenGoToopenerrorElseOpenopen1ForRandomAs#1Get#1,1,mydate1Get#1,9,mytime1Fori=1To650Get#1,Temp(i)NextiGet#1,,tempmaxClose#1EndIfExitSubopenerror:MsgBox"未選數(shù)據(jù)文件!",vbExclamation,"讀盤錯誤"ExitSubEndSub系統(tǒng)調(diào)試VisualBasic6.0編程環(huán)境提供了許多運行和調(diào)試應(yīng)用程序的工具,如啟動工具如,設(shè)置斷點單步執(zhí)行等,程序的可視化設(shè)計和代碼編寫完成后,可以選用不同的執(zhí)行方式,以對它進行執(zhí)行,調(diào)試。VisualBasic本身不能診斷或者更改程序中的錯誤,但能夠提供一些調(diào)試工具來幫助用戶分析程序的運行是如何進行的,分析如何從一個過程轉(zhuǎn)到另一個過程,分析變量和對象屬性在程序運行過程是如何改變的。有了這些工具的幫助,用戶在調(diào)試程序時就可以深入觀察程序的執(zhí)行過程,以了解發(fā)生了什么事或錯誤,是如何發(fā)生的。VisualBasic的調(diào)試支持包括斷點,中斷表達式,監(jiān)視表達,顯示變量和屬性的值。這些調(diào)試功能可以幫助用戶處理邏輯錯誤,其調(diào)試工具可以從“Debug菜單上調(diào)用,也可以從調(diào)試工具欄中選擇。在進行上位機軟件調(diào)試中,本設(shè)計還用到了串口調(diào)試助手。它可以在一臺機器上通過PC機的兩個串口,互相發(fā)送信息。在用PC機上兩個串口進行連接時,需要將兩個九針串口的2,3針互換,把5針相連接,如圖4.1:圖4.1串口連接圖在進行VB程序調(diào)試時也可以用串口助手來模擬單片機發(fā)送數(shù)據(jù),下圖是用串口助手模擬單片機發(fā)送的數(shù)據(jù)。9F010A0308056F串口助手的串口選擇coml,波特率選擇9600,校驗位選擇N,數(shù)據(jù)位選擇8,停止位選擇1。如圖4.2:SConMssistantV2?2ForWIN9X/NT/200083A1FF5ooo_uo_y6oOu3A1Fo_u_u_u_ySConMssistantV2?2ForWIN9X/NT/200083A1FF5ooo_uo_y6oOu3A1Fo_u_u_u_y3A1FF583o_uo_y6_uooA1FF583Ao_u_y6oooo1FF583A1o96ooo_uoFF583A1F_y6n-oooo_yF583A1FF_uon-o_u_y683A1FF5o_uooo_y6o80JA1FF58oooo_y6_uo3A1FF5Ou3oon-_y&oooA1FF580UAoo_y6oooo1FF583A1o_y6oooooFF583A1F_y6o_uo_uo-yF5Ou3A1FF_u_u_u_u_u_y6583A1FF5o_uo_uo_y6o83A1FF58ooo_u_y&oo3LA1FF583ooo96ooo6F05080A019F6F050803-0A019F6F0508030A01FF583A1FF_y6oo_u0096F583A1FF56oon-ooy6u030805OA030801OA039F01OA6F9F01056F9F08056F030805OA03089F010A6F9F01056F9F08056F030805OA030801UA039F01OA6F9F01眞空接收醫(yī)|停生顯示廳自動涪空(7十六進制顯示眼再顯委數(shù)呃更改I 選擇發(fā)送文啊發(fā)送文件計數(shù)潔零c'Acomdata選擇發(fā)送文啊發(fā)送文件計數(shù)潔零手動發(fā)送就十六進制發(fā)送手動發(fā)送r自動發(fā)送凋期改變后重選〕目動發(fā)送周期:1909毫秒-ta|STATUS:COMIOFENED>9600,N,8,1圖4.2串口助手調(diào)試圖結(jié)論歷時三個多月的畢業(yè)設(shè)計即將結(jié)束。在這期間我查閱了大量的與其相關(guān)的資料,這不但開闊了我的視野,又豐富了我的知識,同時也使我的自學(xué)能力大大提高。除此之外我也學(xué)會了怎樣調(diào)試程序,怎么樣檢查自己設(shè)計中存在的錯誤。通過三個多月的設(shè)計以及大量的實驗,本設(shè)計基本上達到了先前提出的設(shè)計技術(shù)指標,可以與硬件可靠通訊得到溫度數(shù)據(jù),軟件運行穩(wěn)定,溫度數(shù)據(jù)統(tǒng)計結(jié)果和溫度曲線符合真實情況。并且利用標準電阻箱進行了測試。但是由于時間關(guān)系和本人的能力與精力有限,如果要把本課題的整個系統(tǒng)做得十分完整,本人認為本課題還有以下幾項工作要進行:關(guān)于上位微機軟件的編制,由于在本系統(tǒng)中己經(jīng)將通信接口作為一個選件來考慮,從系統(tǒng)的完整性來看,應(yīng)將上位管理微機的軟件編制工作納入其中,當然,目前國內(nèi)外也有不少只告訴通信的標準以及通信的數(shù)據(jù)幀格式。而上位管理微機的軟件有使用測量儀器的末端用戶自己解決。從整個測溫系統(tǒng)來著,總體功能是較完善的,但唯一不足的是由于條件有限,沒有實現(xiàn)打印報表功能。致謝通過幾個月的學(xué)習(xí)和實踐,終于完成了本次設(shè)計,在此期間,通過對上位機軟件的了解,VB6.0及其控件的學(xué)習(xí),我進一步掌握了電子專業(yè)的技術(shù)知識,并且使所學(xué)到的知識得到了理論與實踐的相結(jié)合,為以后的學(xué)習(xí)和工作打下了良好的基礎(chǔ)。再本次設(shè)計過程中,我衷心感謝我的導(dǎo)師陳亮老師,陳老師在畢業(yè)設(shè)計期間給予我悉心的指導(dǎo)和幫助,引導(dǎo)我從畢業(yè)設(shè)計初期對課題的毫無所知到逐步的深入學(xué)習(xí)、不斷研究,熱心的幫助和鼓勵我解決設(shè)計上遇到的一些難題,培養(yǎng)了我正確的學(xué)習(xí)方法和研究問題的思路,以及發(fā)現(xiàn)問題解決問題的能力,為今后的工作、學(xué)習(xí)打下了堅實而牢固的基礎(chǔ)。在此對陳老師表示衷心地感謝,同時,感謝信息科學(xué)與工程分院的各位領(lǐng)導(dǎo)和老師的關(guān)心和支持,以及多年來對我孜孜不倦的培養(yǎng)和教誨,引導(dǎo)我學(xué)會了豐富的科學(xué)文化知識和解決問題的能力,使得我四年的大學(xué)生活充實和快樂,能在四年后順利的完成學(xué)業(yè)。參考文獻黃淼云,張學(xué)忠,王福成著.《VisualBasic控件應(yīng)用編程實例教程》?第1版?北京希望電子出版社,2002李廣弟,朱月秀,王秀山著.《單片機基礎(chǔ)》.第2版?北京航空航天大學(xué)出版社,2001趙新民著.《智能儀器設(shè)計基礎(chǔ)基礎(chǔ)》.第1版.哈爾濱工業(yè)大學(xué)大學(xué)出版社,1999李建華,郭明著.《RS-232和調(diào)制解調(diào)器高級通信編程》?第1版?人民郵電出版社,2001附錄附錄A部分程序清單DimI,jAsIntegerPrivateSubPicture1_Paint()DimIAsIntegerPicture1.Scale(0,110)-(500,0)ForI=10To100Step10Picture1.Line(0,I)-(10,I)Picture1.CurrentY=Picture1.CurrentY+3Picture1.PrintINextIPicture1.CurrentX=0:Picture1.CurrentY=Text1.TextEndSubPrivateSubPicture2_Paint()DimIAsIntegerPicture2.Scale(0,110)-(500,0)ForI=10To100Step10Picture2.Line(0,I)-(10,I)Picture2.CurrentY=Picture2.CurrentY+3Picture2.PrintINextIPicture2.CurrentX=0:Picture2.CurrentY=Text2.TextEndSubPrivateSubPicture3_Paint()DimIAsIntegerPicture3.Scale(0,110)-(500,0)ForI=10To100Step10Picture3.Line(0,I)-(10,I)Picture3.CurrentY=Picture3.CurrentY+3Picture3.PrintINextIPicture3.CurrentX=0:Picture3.CurrentY=Text3.TextEndSubPrivateSubPicture4_Paint()DimIAsIntegerPicture4.Scale(0,110)-(500,0)ForI=10To100Step10Picture4.Line(0,I)-(10,I)Picture4.CurrentY=Picture4.CurrentY+3Picture4.PrintINextIPicture4.CurrentX=0:Picture4.CurrentY=Text4.TextEndSubPrivateSubPicture5_Paint()DimIAsIntegerPicture5.Scale(0,110)-(500,0)ForI=10To100Step10Picture5.Line(0,I)-(10,I)Picture5.CurrentY=Picture5.CurrentY+3Picture5.PrintINextIPicture5.CurrentX=0:Picture5.CurrentY=Text5.TextEndSubPrivateSubPicture6_Paint()DimIAsIntegerPicture6.Scale(0,110)-(500,0)ForI=10To100Step10Picture6.Line(0,I)-(10,I)Picture6.CurrentY=Picture6.CurrentY+3Picture6.PrintINextIPicture6.CurrentX=0:Picture6.CurrentY=Text6.TextEndSubPrivateSubPicture7_Paint()DimIAsIntegerPicture7.Scale(0,110)-(500,0)ForI=10To100Step10Picture7.Line(0,I)-(10,I)Picture7.CurrentY=Picture7.CurrentY+3Picture7.PrintINextIPicture7.CurrentX=0:Picture7.CurrentY=Text7.TextEndSubPrivateSubPicture8_Paint()DimIAsIntegerPicture8.Scale(0,110)-(500,0)ForI=10To100Step10Picture8.Line(0,I)-(10,I)Picture8.CurrentY=Picture8.CurrentY+3Picture8.PrintINextIPicture8.CurrentX=0:Picture8.CurrentY=Text8.TextEndSubPrivateSubTimer1_Timer()j=j+5Picture1.Line-(j,Text1.Text)Picture2.Line-(j,Text2.Text)Picture3.Line-(j,Text3.Text)Picture4.Line-(j,Text4.Text)Picture5.Line-(j,Text5.Text)Picture6.Line-(j,Text6.Text)Picture7.Line-(j,Text7.Text)Picture8.Line-(j,Text8.Text)Ifj>=500Thenj=0Picture1.ClsPicture2.ClsPicture3.ClsPicture4.ClsPicture5.ClsPicture6.ClsPicture7.ClsPicture8.ClsForI=10To100Step10Picture1.Line(0,I)-(10,I)Picture1.CurrentY=Picture1.CurrentY+3Picture1.PrintI
NextIPicture1.CurrentX=0:Picture1.CurrentY=Text1.TextPicture1.CurrentX=0:Picture1.CurrentY=Text2.TextPicture1.CurrentX=0:Picture1.CurrentY=Text3.TextPicture1.CurrentX=0:Picture1.CurrentY=Text4.TextPicture1.CurrentX=0:Picture1.CurrentY=Text5.TextPicture1.CurrentX=0:Picture1.CurrentY=Text6.TextPicture1.CurrentX=0:Picture1.CurrentY=Text7.TextPicture1.CurrentX=0:Picture1.CurrentY=Text8.TextEndIfEndSubPrivateSubForm_Load()strset="9600,N,8,1"m_i_RecvCount=0m_b_SendData=FalseMSCommTemp.CommPort=Int(ComTemp.Text)MSCommTemp.Settings=strsetMSCommTemp.InputMode=comInputModeBinaryMSCommTemp.InputLen=0MSCommTemp.RThreshold=1MSCommTemp.PortOpen=TrueLabInfo.Caption="系統(tǒng)信息:串口打開成功!"MSCommTemp.InBufferCount=0EndSubTrueEndSubTruePrivateSubMSCommTemp_OnComm()Dimbuffer()AsBytePrivateSubMSCommTemp_OnComm()Dimbuffer()AsByteDimiAsIntegerDimjAsIntegerDimnegativeAsByteDimtempAsByteDimdisplay(0To9)AsSingleDimcountAsIntegerDimchecksumAsByteDimm_i_sumAsIntegerDimm_Start_TimeAsLongDimiLoopAsIntegerchecksum=0OnErrorResumeNextSelectCaseMSCommTemp.CommEventCasecomEvReceivem_Start_Time=GetTickCount()While((GetTickCount()-m_Start_Time)<30)DoEventsWendbuffer=MSCommTemp.InputIf(UBound(buffer)=2)ThenIf(buffer(0)=&HCDAndbuffer(1)=&HCD)ThenCallMsgBox("下載成功!",vblnformation,"操作提示")EndIfEndIfIf(UBound(buffer)<7)ThenExitSubForiLoop=0To7Arr(iLoop)=buffer(iLoop)NextiLoopIfArr(0)=&H9FThenm_i_RecvCount=0LabInfo.Caption="系統(tǒng)信息:正在接收數(shù)據(jù)..."EndIfIfArr(7)=&H6FThenm_i_sum=0Fori=1To7m_i_sum=m_i_sum+Arr(i)Nextichecksum=m_i_sumAnd255checksum=m_i_sumAnd127IfArr(1)>8ThenExitSubIf(Arr(2)=&HB)Thendisplay(Arr(1))=Arr(3)*10+Arr(4)+Arr(5)*0.1display(Arr(1))=display(Arr(1))*(-1)Elsedisplay(Arr(1))=Arr(3)*10+Arr(4)+Arr(5)*0.1EndioIfLabInfo.Captn="系統(tǒng)信息:接收數(shù)據(jù)成功!"Arr(20)=0EndIfm_i_RecvCount=m_i_RecvCount+1If(m_i_RecvCount>21)Thenm_i_RecvCount=21EndSelectEndSub附錄B英文原文Develop
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年08月中國光大銀行濟南分行綜合柜員(濱州)招聘筆試歷年參考題庫附帶答案詳解
- 天文歷法考試常識單選題100道及答案
- 2024年08月陜西華夏銀行延安分行社會招考筆試歷年參考題庫附帶答案詳解
- 2024年08月福建浙江泰隆商業(yè)銀行人力資源管理崗社會招考(808)筆試歷年參考題庫附帶答案詳解
- 2024年08月澳門2024年中國銀行澳門分行校園招考筆試歷年參考題庫附帶答案詳解
- 2024年08月湖北2024年中國農(nóng)業(yè)銀行湖北省分行校園招考筆試歷年參考題庫附帶答案詳解
- 2024年08月江蘇蘇州銀行金融市場總部投資交易部招考(135)號筆試歷年參考題庫附帶答案詳解
- 2025至2031年中國芳香花環(huán)掛件行業(yè)投資前景及策略咨詢研究報告
- 河南警察學(xué)院《鑄牢中華民族共同體意識教育》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年數(shù)字直播系統(tǒng)軟件項目可行性研究報告
- GB/T 39733-2024再生鋼鐵原料
- 第二章 粉體制備
- 《工業(yè)機器人現(xiàn)場編程》課件-任務(wù)3.涂膠機器人工作站
- 預(yù)應(yīng)力空心板計算
- 2024版珠寶鑒定技師勞動合同范本3篇
- 中國能源展望2060(2025年版)
- 2024年年第三方檢測行業(yè)分析報告及未來五至十年行業(yè)發(fā)展報告
- 李四光《看看我們的地球》原文閱讀
- GA/T 1740.2-2024旅游景區(qū)安全防范要求第2部分:湖泊型
- 華為公司戰(zhàn)略發(fā)展規(guī)劃匯報
- 2025年社區(qū)工作者考試試題庫及答案
評論
0/150
提交評論