版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要本文討論了單片機(jī)與PC機(jī)的串口,通過(guò)指令和數(shù)據(jù)的傳送來(lái)實(shí)現(xiàn)控制功能,并利用VB提供的MSComm通信控件非常方便地編寫(xiě)了Windows環(huán)境下的串口通信程序,且結(jié)合實(shí)例給出了具體說(shuō)明。上位機(jī)監(jiān)控管理軟件采用VB編制,用戶可以通過(guò)向通訊控制總站發(fā)送命令,提取下位機(jī)溫濕度數(shù)據(jù),完成溫度檢測(cè)。文中給出了通信協(xié)議設(shè)計(jì),硬件設(shè)計(jì)和軟件設(shè)計(jì)。協(xié)議中有6種通信命令,適用于各種數(shù)據(jù)交換。硬件方面設(shè)計(jì)了時(shí)鐘電路和波特率配置。軟件方面完成了中斷子程序、數(shù)據(jù)交換子程序和上位機(jī)串行通訊程序的設(shè)計(jì)、編寫(xiě)和調(diào)試??傮w說(shuō)來(lái),本系統(tǒng)上位機(jī)軟件功能齊全,系統(tǒng)實(shí)用性強(qiáng),成本低,數(shù)據(jù)傳輸率高,容量大,可靠性好。它不僅可以應(yīng)用于糧庫(kù)的監(jiān)控管理,而且也可推廣到其他監(jiān)控領(lǐng)域,因此具有廣泛的應(yīng)用前景。關(guān)鍵詞:VisualBasic6.0;單片機(jī);溫度曲線;串行通信;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)硬件簡(jiǎn)介 2單片機(jī)技術(shù)簡(jiǎn)介 2單片機(jī)技術(shù)的發(fā)展 2單片機(jī)技術(shù)的應(yīng)用 2課題研究的目的和意義 4主控單片機(jī)的選擇 4熱電阻測(cè)量模塊 4\o"CurrentDocument"通信部分 5\o"CurrentDocument"3 系統(tǒng)上位機(jī)軟件設(shè)計(jì) 6\o"CurrentDocument"VisualBasic功能簡(jiǎn)介和發(fā)展 6VB基本概念與VB編程環(huán)境 8VB的基本概念 8VB6.0的集成開(kāi)發(fā)環(huán)境簡(jiǎn)介 103.2.3利用VB開(kāi)發(fā)應(yīng)用程序的一般步驟 123.3設(shè)計(jì)中VB6.0所采用的控件 13SSTab控件的功能 13MSComm控件特點(diǎn) 13MSComm控件的介紹 133.4上位PC機(jī)VB通信程序設(shè)計(jì)串行通信程序設(shè)計(jì)方法 143.4.1上位機(jī)PC機(jī)端通訊軟件的實(shí)現(xiàn) 15溫度數(shù)據(jù)上傳部分 16VB編程程序 16\o"CurrentDocument"4 系統(tǒng)調(diào)試 24\o"CurrentDocument"結(jié)論 26致謝 27\o"CurrentDocument"參考文獻(xiàn) 28附錄 29附錄A 29部分程序清單 29附錄B 34英文原文 341緒論隨著電子技術(shù)、計(jì)算機(jī)技術(shù)、通信技術(shù)的迅速發(fā)展,工業(yè)測(cè)控領(lǐng)域采用先進(jìn)的技術(shù)對(duì)現(xiàn)場(chǎng)的工業(yè)生產(chǎn)參數(shù)進(jìn)行檢測(cè)、監(jiān)測(cè)是實(shí)現(xiàn)工業(yè)自動(dòng)化的重要標(biāo)志。目前,多點(diǎn)溫度檢測(cè)技術(shù)在現(xiàn)代化工農(nóng)業(yè)領(lǐng)域得到廣泛的應(yīng)用,如糧庫(kù)、程控交換機(jī)室、大型溫室等場(chǎng)合都需要大范圍集散分布監(jiān)測(cè)點(diǎn)對(duì)溫度進(jìn)行監(jiān)控。近年來(lái)單線多點(diǎn)數(shù)字化測(cè)量技術(shù)的發(fā)展使計(jì)算機(jī)檢測(cè)技術(shù)實(shí)現(xiàn)了快速、可靠、低成本、數(shù)字化與網(wǎng)絡(luò)化。而建立在該平臺(tái)上的檢測(cè)系統(tǒng)可以實(shí)現(xiàn)多傳感器的數(shù)據(jù)融合與處理,專家數(shù)據(jù)庫(kù)的應(yīng)用可以使系統(tǒng)達(dá)到最佳控制狀態(tài)。溫度測(cè)量的領(lǐng)域十分廣泛,其實(shí),不僅在工業(yè)領(lǐng)域,而且在民用領(lǐng)域、軍用領(lǐng)域,溫度的測(cè)量隨處可見(jiàn)。在工業(yè)領(lǐng)域,如電機(jī)的軸溫,膠帶滾筒的表面溫度,工業(yè)冷卻循環(huán)水溫,加熱設(shè)備的爐溫,啤酒的麥芽發(fā)酵溫度,各種化工原料在化學(xué)反應(yīng)時(shí)控制的溫度等等,在民用領(lǐng)域,超市的食品架內(nèi)溫度,人們生活空間環(huán)境的溫度,空調(diào)的控制溫度,人體的體溫檢測(cè),冰箱、冰柜的溫度測(cè)量等等。當(dāng)然,不同的場(chǎng)合,對(duì)測(cè)溫范圍的要求不一,即使相同的測(cè)溫范圍,測(cè)量不同的對(duì)象,其測(cè)量的精度要求也不盡相同,這些是顯而易見(jiàn)的,譬如,人體體溫測(cè)量,測(cè)量精度應(yīng)該要求比較高,達(dá)o.i°c左右,但在測(cè)量電機(jī)的軸溫時(shí),可能測(cè)量的允差達(dá)1C以上。傳統(tǒng)的測(cè)溫系統(tǒng)在測(cè)溫點(diǎn)上由傳感元件,信號(hào)調(diào)理電路、A/D轉(zhuǎn)換或T/F轉(zhuǎn)換、單片機(jī)數(shù)據(jù)采集等組成一個(gè)完整的微機(jī)系統(tǒng);或采用獨(dú)立式儀表測(cè)量單元,并通過(guò)串行口與上位機(jī)通訊,系統(tǒng)結(jié)構(gòu)復(fù)雜,成本較高。本文設(shè)計(jì)了一個(gè)由數(shù)字化測(cè)溫元件組成的單線多點(diǎn)溫度監(jiān)控系統(tǒng),該系統(tǒng)是由上位機(jī)和下位機(jī)兩大部分組成。下位機(jī)(單片機(jī))完成遠(yuǎn)程數(shù)據(jù)采集與控制,它是由單片機(jī)和LED顯示器、報(bào)警電路等組成、可以對(duì)64個(gè)測(cè)溫點(diǎn)進(jìn)行數(shù)字化測(cè)量。溫度傳感器采集的數(shù)據(jù)通過(guò)單總線方式傳送給單片機(jī)進(jìn)行數(shù)據(jù)處理;上位機(jī)具有良好的菜單操作方式,可以在線監(jiān)控和顯示所有測(cè)溫點(diǎn)實(shí)時(shí)溫度值。并具有數(shù)據(jù)庫(kù)管理功能:實(shí)時(shí)溫度曲線和歷史溫度曲線顯示以及數(shù)據(jù)打印等功能。并為數(shù)據(jù)處理與融合,以及專家數(shù)據(jù)庫(kù)建立了一個(gè)智能化應(yīng)用平臺(tái)。下位機(jī)(單片機(jī))與上位機(jī)(PC機(jī))通過(guò)RS-232串行口進(jìn)行數(shù)據(jù)通訊。系統(tǒng)硬件簡(jiǎn)介單片機(jī)技術(shù)簡(jiǎn)介2.1.1單片機(jī)技術(shù)的發(fā)展所謂單片機(jī)(microcontroller)是指在一個(gè)集成芯片中,集成微處理器(CPU)、存儲(chǔ)器、基本的I/O接口以及定時(shí)/計(jì)數(shù)、通信部件,即在一個(gè)芯片上實(shí)現(xiàn)一臺(tái)微型計(jì)算機(jī)的基本功能。1970年微型計(jì)算機(jī)研制成功之后,隨著就出現(xiàn)了單片機(jī)(即單片微型計(jì)算機(jī))。美國(guó)Intel公司1971年生產(chǎn)的4位單片機(jī)4004和1972年生產(chǎn)的雛形8位單片機(jī)8008,特別是1976年MCS-48單片機(jī)問(wèn)世以來(lái),在短短的二十幾年間,經(jīng)歷了四次更新?lián)Q代,其發(fā)展速度大約每二、三年要更新一代、集成度增加一倍、功能翻一番。其發(fā)展速度之快、應(yīng)用范圍之廣,己達(dá)到了驚人的地步。它己滲透到生產(chǎn)和生活的各個(gè)領(lǐng)域,可謂“無(wú)孔不入”。盡管日前單片機(jī)的品種很多,但其中最具典型性的當(dāng)數(shù)Intel公司的MCS-51系列單片機(jī)。MCS-51是在MCS-48的基礎(chǔ)上于80年代初發(fā)展起來(lái)的,雖然它仍然是8位的單片機(jī),但其功能有很大的增強(qiáng)。由于PHILIPS,ATMEL,WELBORD,LG等近百家IC制造商都主產(chǎn)51系列兼容產(chǎn)品,具有品種全、兼容性強(qiáng)、軟硬件資料豐富等特點(diǎn)。因此,MCS-51應(yīng)用非常廣泛,成為繼MCS-48之后最重要的單片機(jī)品種。直到現(xiàn)在MCS-51仍不失為單片機(jī)中的主流機(jī)型。國(guó)內(nèi)尤以Intel的MCS-51系列單片機(jī)應(yīng)用最廣。由于8位單片機(jī)的高性能價(jià)格比,估計(jì)近十年內(nèi),8位單片機(jī)仍將是單片機(jī)中的主流機(jī)型。單片機(jī)技術(shù)的應(yīng)用隨著計(jì)算機(jī)技術(shù)的發(fā)展和在控制系統(tǒng)中的廣泛應(yīng)用,以及設(shè)備向小型化、智能化發(fā)展,作為高新技術(shù)之一的單片機(jī)以其體積小、功能強(qiáng)、價(jià)格低廉、使用靈活等優(yōu)勢(shì),顯示出很強(qiáng)的生命力。它和一般的集成電路相比有較好的抗干擾能力,對(duì)環(huán)境的溫度和濕度都有較好的適應(yīng)性,可以在工業(yè)條件下穩(wěn)定工作。且單片機(jī)廣泛地應(yīng)用于各種儀器儀表,使儀器儀表智能化,提高它們的測(cè)量速度和測(cè)量精度,加強(qiáng)控制功能。如MCS-51系列單片機(jī)控制的“船舶航行狀態(tài)自動(dòng)記錄儀”、“煙葉水分測(cè)試儀”、“智能超聲波測(cè)厚儀”等。單片機(jī)也廣泛地應(yīng)用于實(shí)時(shí)控制系統(tǒng)中,例如對(duì)工業(yè)上各種窯爐的溫度、酸度、化學(xué)成分的測(cè)量和控制。將測(cè)量技術(shù)、自動(dòng)控制技術(shù)和單片機(jī)技術(shù)相結(jié)合,充分發(fā)揮其數(shù)據(jù)處理功能和實(shí)時(shí)控制功能,使系統(tǒng)工作處于最佳狀態(tài),提高系統(tǒng)的生產(chǎn)效率和產(chǎn)品質(zhì)量。從航空航天、地質(zhì)石油、冶金采礦、機(jī)械電子、輕工紡織等行業(yè)的分布系統(tǒng)與智能控制以及機(jī)電一體化設(shè)備和產(chǎn)品,到郵電通信、日用設(shè)備和器械,單片機(jī)都發(fā)揮了巨大作用。其應(yīng)用大致可分為以下幾方面:機(jī)電一體化設(shè)備的控制核心機(jī)電一體化是機(jī)械設(shè)備發(fā)展的方向。單片機(jī)的出現(xiàn)促進(jìn)了機(jī)電一體化技術(shù)的發(fā)展,它作為機(jī)電產(chǎn)品的控制器,充分發(fā)揮其自身優(yōu)點(diǎn),大大強(qiáng)化了機(jī)器的功能,提高了機(jī)器的自動(dòng)化、智能化程度。最典型的機(jī)電產(chǎn)品機(jī)器人,每個(gè)關(guān)節(jié)或動(dòng)作部位都是個(gè)單片機(jī)控制系統(tǒng)數(shù)據(jù)采集系統(tǒng)的現(xiàn)場(chǎng)采集單元大型數(shù)據(jù)采集系統(tǒng),要求數(shù)據(jù)采集的同步性和實(shí)時(shí)性要好。使用單片機(jī)作為系統(tǒng)的前端采集單元,由主控計(jì)算機(jī)發(fā)出采集命令,再將采集到的數(shù)據(jù)逐一送到主計(jì)算機(jī)中進(jìn)行處理。如有些氣象部門(mén)、油田采油部門(mén)以及電廠等均可采用這樣的系統(tǒng)。分布控制系統(tǒng)的前端控制器在直接控制級(jí)的計(jì)算機(jī)分布控制系統(tǒng)(DCS)中,單片機(jī)作為過(guò)程控制中每一分部操作或控制的控制器,進(jìn)行數(shù)據(jù)采集、反饋計(jì)算、控制輸出,并在上位機(jī)命令的指揮下進(jìn)行相應(yīng)協(xié)調(diào)工作。智能化儀表的機(jī)芯自動(dòng)化儀表的智能化程度越來(lái)越高。采用單片機(jī)的智能化儀表可具有自整定、自校正、自動(dòng)補(bǔ)償和自適應(yīng)功能,還可進(jìn)行數(shù)字PID調(diào)節(jié),軟件消除電流熱噪聲等等,解決傳統(tǒng)儀表所不能解決的難題。單片機(jī)的應(yīng)用使這種性能如虎添翼,如自動(dòng)計(jì)費(fèi)電度表、燃?xì)獗碇屑河羞@方面的應(yīng)用。許多工業(yè)儀表中的智能流量計(jì),氣體分析儀、成分分析僅等也采用了這項(xiàng)技基于單片機(jī)的烘爐溫度自動(dòng)檢測(cè)系統(tǒng)的研究與設(shè)計(jì)術(shù)。甚至有的保健治療儀中也采用了單片機(jī)控制。消費(fèi)類電子產(chǎn)品控制該應(yīng)用主要反映在家電領(lǐng)域,如洗衣機(jī)、空調(diào)器、保安系統(tǒng)、VCD視盤(pán)機(jī)、電子秤、IC卡、手機(jī)、BP機(jī)等。這些設(shè)備中使用了單片機(jī)機(jī)芯后,大大提高了其控制功能和性能,并實(shí)現(xiàn)了智能化、最優(yōu)化控制。終端及外圍設(shè)備控制計(jì)算機(jī)網(wǎng)絡(luò)終端設(shè)備,如銀行終端、商業(yè)POS(自動(dòng)收款機(jī))以及計(jì)算機(jī)外圍設(shè)備如打印機(jī)、通信終端和智能化UPS等。在這些設(shè)備中使用單片機(jī),使其具有計(jì)算、存儲(chǔ)、顯示、輸入等功能,具有和計(jì)算機(jī)連接的接口,使計(jì)算機(jī)的能力及應(yīng)用范圍大大提高。本課題以單片機(jī)作為控制器之一,進(jìn)一步研究單片機(jī)在自動(dòng)化檢測(cè)領(lǐng)域中的應(yīng)用。課題研究的目的和意義在工業(yè)生產(chǎn)中,上位機(jī)軟件占據(jù)著舉足輕重的地位。隨著4C技術(shù)(computer、control、communication、CRT)及監(jiān)控軟件的發(fā)展,使用上位機(jī)監(jiān)控管理系統(tǒng)已成為大中型控制系統(tǒng)的流行趨勢(shì),以PC機(jī)作為上位機(jī)應(yīng)用于控制系統(tǒng)中能提供一種良好的人機(jī)界面,減輕操作人員的負(fù)擔(dān),提高管理水平。近年來(lái),隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,給溫度的多點(diǎn)測(cè)量提供有力的技術(shù)支持。目前,計(jì)算機(jī)應(yīng)用控制領(lǐng)域采用三種配置:(1)可編程序控制器(PLC),(2)微型計(jì)算機(jī),(3)單片機(jī)。多點(diǎn)測(cè)溫系統(tǒng),作為檢測(cè)系統(tǒng)的一種,采用單片機(jī)作為前段數(shù)據(jù)采集單元,對(duì)溫度進(jìn)行采集和處理。應(yīng)用微型計(jì)算機(jī)實(shí)現(xiàn)數(shù)據(jù)保存、分析統(tǒng)計(jì)。本課題研究開(kāi)發(fā)的目的,就是要通過(guò)采用先進(jìn)的上位機(jī)軟件,研究出具有我國(guó)自主知識(shí)產(chǎn)權(quán)的多點(diǎn)測(cè)溫系統(tǒng)。研制的多點(diǎn)測(cè)溫系統(tǒng),可用來(lái)連續(xù)測(cè)量各點(diǎn)的溫度變化,準(zhǔn)確的繪制出各個(gè)時(shí)間上的時(shí)間曲線。主控單片機(jī)的選擇主控單片機(jī)我們選用新茂的SM8952單片機(jī)。SM8952單片機(jī)是內(nèi)嵌8K字節(jié)閃存的8位單片微控制器它具有多達(dá)32個(gè)I/O口,其8K的閃存既可做程序存儲(chǔ)空間也可以作數(shù)據(jù)存儲(chǔ)空間或程序數(shù)據(jù)混合空間這些硬件特征和其強(qiáng)大的指令系統(tǒng)使它應(yīng)用于不同的場(chǎng)合因此是通用的和性能價(jià)格比高的控制器。該單片機(jī)還具有穩(wěn)定性好,抗干擾等優(yōu)點(diǎn),非常適合本測(cè)溫系統(tǒng)設(shè)計(jì)的使用。熱電阻測(cè)量模塊我們采用的是PT100作為溫度傳感器。鉑電阻溫度傳感器的特點(diǎn)是:精度高,穩(wěn)定性好性能可靠。鉑在氧化性環(huán)境中,甚至在高溫下的物理和化學(xué)性質(zhì)都非常穩(wěn)定。因此鉑被公認(rèn)為是目前制造熱電阻的最好材料。鉑電阻主要作為標(biāo)準(zhǔn)電阻溫度計(jì)使用,也常被用在工業(yè)測(cè)量中。此外,還被廣泛地應(yīng)用于溫度的基準(zhǔn)和標(biāo)準(zhǔn)的傳遞。鉑電阻溫度計(jì)是目前測(cè)溫重復(fù)性最好的一種,它的長(zhǎng)時(shí)間穩(wěn)定的重復(fù)性可達(dá)104K,優(yōu)于其他所有溫度計(jì)。目前鉑電阻的純度已經(jīng)達(dá)到99.9995%。信號(hào)采集方式采用電橋。由于熱電阻安裝的地方距離測(cè)量模塊比較遠(yuǎn),當(dāng)環(huán)境的溫度變化時(shí)其連接導(dǎo)線電阻也要變化。因?yàn)樗c熱電阻Rt是串聯(lián)的,也就是電橋臂的一部分,所以會(huì)造成測(cè)量誤差。采用三線制接線方法就可以避免這種誤差的產(chǎn)生。2.5通信部分本系統(tǒng)采用RS-485通信方式,接口選擇芯片MAX487。MAX487是MAXIM公司生產(chǎn)的用于RS-485和RS—422通信的差分總線小功率收發(fā)器,它含有一個(gè)驅(qū)動(dòng)器和一個(gè)接收器,具有驅(qū)動(dòng)器/接收器使能功能,輸入阻抗為1/4負(fù)載(>48kW),節(jié)點(diǎn)數(shù)為128,即每個(gè)MAX487的驅(qū)動(dòng)器可驅(qū)動(dòng)128個(gè)標(biāo)準(zhǔn)負(fù)載。MAX487的驅(qū)動(dòng)器設(shè)計(jì)成限斜率方式,使輸出信號(hào)邊沿不至于過(guò)陡,以避免在傳輸線產(chǎn)生過(guò)多的高頻分量,從而有效扼制了干擾現(xiàn)象。MAX487的接收靈敏度為±200MV,即接收端的差分電壓>+200MV時(shí),接收器輸出為高電平,<-200MV時(shí)接收器輸出為低電平,介于土200MV之間時(shí)接收器輸出為不確定狀態(tài),因此,一旦某個(gè)節(jié)點(diǎn)的接收器在總線空閑、傳輸線開(kāi)路或短路時(shí)產(chǎn)生低電平,將使串行接收器找不到起始位,從而引起通信異常,為此,本系統(tǒng)在硬件上作了處理:將MAX487的A、B輸出端加接上拉、下拉電阻,保證在發(fā)出有效數(shù)據(jù)時(shí)所有接收器能接收到完整的數(shù)據(jù)。MAX487的數(shù)據(jù)傳輸速率為0.25Mbps,靜態(tài)工作電流為120yA,5V單電源工作,在本系統(tǒng)中,MAX487采用半雙工通信方式,各節(jié)點(diǎn)間的通信通過(guò)一對(duì)雙絞線作為傳輸介質(zhì),因雙絞線的特性阻抗為1200,因此系統(tǒng)在MAX487的始端和末端各接一個(gè)1200電阻以減少線路上傳輸信號(hào)的反射。由于主機(jī)與分機(jī)相隔較遠(yuǎn),而分機(jī)系統(tǒng)上電或復(fù)位又常常不在同一時(shí)刻完成,如在此時(shí)某個(gè)MAX487處于發(fā)送狀態(tài),將占用通信總線而使其它分機(jī)無(wú)法與主機(jī)進(jìn)行通信,本系統(tǒng)在SM8952的P3.5口與MAX487的DE端之間加接光耦TIL817,保證了系統(tǒng)上電復(fù)位時(shí)MAX487的DE端為“0”,有效解決了這個(gè)問(wèn)題。系統(tǒng)上位機(jī)軟件設(shè)計(jì)工業(yè)生產(chǎn)中上位機(jī)軟件有很多種,本設(shè)計(jì)采用的是VB6.0作為上位機(jī)軟件。3.1VisualBasic功能簡(jiǎn)介和發(fā)展VisualBasic(簡(jiǎn)稱VB)是Microsoft公司開(kāi)發(fā)的一種通用的基于對(duì)象的程序設(shè)計(jì)語(yǔ)言?!癡isual”指的是開(kāi)發(fā)圖形用戶界面(GUI)的方法——不需編寫(xiě)大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的對(duì)象add到屏幕上的一點(diǎn)即可。“Basic”指的是BASIC(BeginnersAll-PurposeSymbolicInstructionCode)語(yǔ)言,一種在計(jì)算技術(shù)發(fā)展歷史上應(yīng)用得最為廣泛的語(yǔ)言。VisualBasic在原有BASIC語(yǔ)言的基礎(chǔ)上進(jìn)一步發(fā)展,至今包含了數(shù)百條語(yǔ)句、函數(shù)及關(guān)鍵詞,其中很多和WindowsGUI有直接關(guān)系。專業(yè)人員可以用VisualBasic實(shí)現(xiàn)其它任何Windows編程語(yǔ)言的功能,而初學(xué)者只要掌握幾個(gè)關(guān)鍵詞就可以建立實(shí)用的應(yīng)用程序。VisualBasicScriptingEdition(VBScript)是廣泛使用的腳本語(yǔ)言,它是VisualBasic語(yǔ)言的子集,可嵌入HTML語(yǔ)言中,用于網(wǎng)頁(yè)設(shè)計(jì),如ASP(ActiveServerPage)文件。VB簡(jiǎn)單易學(xué),通用性強(qiáng),用途廣泛。VB可以用于可以開(kāi)發(fā)多媒體、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、圖形等方面的應(yīng)用程序。數(shù)據(jù)訪問(wèn)特性允許對(duì)包括MicrosoftSQLServer和其它企業(yè)數(shù)據(jù)庫(kù)在內(nèi)的大部分?jǐn)?shù)據(jù)庫(kù)格式建立數(shù)據(jù)庫(kù)和前端應(yīng)用程序,以及可調(diào)整的服務(wù)器端部件。有了ActiveX(TM)技術(shù)就可使用其它應(yīng)用程序提供的功能,例如MicrosoftWord字處理器,MicrosoftExcel電子數(shù)據(jù)表及其它Windows應(yīng)用程序。Internet能力強(qiáng)大,很容易在應(yīng)用程序內(nèi)通過(guò)Internet或intranet訪問(wèn)文檔和應(yīng)用程序,或者創(chuàng)建Internet服務(wù)器應(yīng)用程序。已完成的應(yīng)用程序是使用VisualBasic虛擬機(jī)真正.exe文件,可以自由發(fā)布。VB是伴隨Windows操作系統(tǒng)而發(fā)展的,在中國(guó)使用較廣的版本有VB4.0、VB5.0、VB6.0。VB4.0是為配合WIN95的問(wèn)世于1995年推出的,既可用于編寫(xiě)WIN3.X平臺(tái)的16位應(yīng)用程序也可編寫(xiě)WIN95平臺(tái)的32位應(yīng)用程序;VB5.0主要用于編寫(xiě)WIN95平臺(tái)的32位應(yīng)用程序,較之VB4.0主要擴(kuò)展了數(shù)據(jù)庫(kù)、ActiveX和Internet方面的功能;VB6.0是與WIN98配合于1998年推出的,進(jìn)一步加強(qiáng)了數(shù)據(jù)庫(kù)、Internet和創(chuàng)建控件方面的功能。本系統(tǒng)軟件采用VB進(jìn)行程序設(shè)計(jì)。因?yàn)関isualBasic是一種功能強(qiáng)大的高級(jí)程序設(shè)計(jì)語(yǔ)言,它可以實(shí)現(xiàn)一些基本的簡(jiǎn)單情況,也可以完成許多高級(jí)任務(wù),在這里關(guān)于VB方面的一些知識(shí)都將詳略的介紹到。整個(gè)系統(tǒng)軟件設(shè)計(jì)將被劃分為非本質(zhì)部分程序設(shè)計(jì)和本質(zhì)程序設(shè)計(jì)進(jìn)行分述。關(guān)于本質(zhì)與非本質(zhì)的劃分是基于這樣一個(gè)標(biāo)準(zhǔn):用VisualBasic可視手段對(duì)于封皮。菜單及其它部分簡(jiǎn)單設(shè)計(jì)稱為非本質(zhì)部分設(shè)計(jì);對(duì)用VisualBasic進(jìn)行測(cè)溫。子程序,溫度顯示,存盤(pán),讀盤(pán),單倉(cāng)數(shù)據(jù)監(jiān)察這些系統(tǒng)所必須的高級(jí)功能程序設(shè)計(jì)稱為系統(tǒng)的本質(zhì)程序設(shè)計(jì)。本人對(duì)于可視化VisualBasic的設(shè)計(jì)體會(huì)是:VB的優(yōu)點(diǎn)是在非本質(zhì)程序設(shè)計(jì)中有重要的反映,淡然在本質(zhì)程序部分設(shè)計(jì)中也有很多較之其它語(yǔ)言進(jìn)行程序設(shè)計(jì)所沒(méi)有的重要優(yōu)點(diǎn)。VisualBasicforwindows是一種具有良好圖形用戶界面(GUI)的程序設(shè)計(jì)語(yǔ)言,同時(shí)又是一種完美支持面向?qū)ο蟪绦蛟O(shè)計(jì)(00P)的語(yǔ)言。Visual指的是開(kāi)發(fā)圖形擁護(hù)(GUI)的方法,不需要像C語(yǔ)言那樣編寫(xiě)大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的對(duì)象拖放到窗體上即可。這種直觀的編程方法,也叫做可視化變編程。Basic指的是(BasicBeginnersAll-PurposeSymbolicInstructionCode)語(yǔ)言,是-一種在計(jì)算機(jī)技術(shù)發(fā)展歷史上應(yīng)用得最為廣泛的語(yǔ)言。而VisualBasic則綜合運(yùn)用了BASIC語(yǔ)言的結(jié)構(gòu)話特點(diǎn)和GUI可視化設(shè)計(jì)工具。既具有windows豐富的圖形窗口工作環(huán)境,又繼承了BASIC語(yǔ)言編程的簡(jiǎn)便性。與C語(yǔ)言相比,不能說(shuō)VB就比C語(yǔ)言優(yōu)秀,作為C語(yǔ)言,其靈活簡(jiǎn)便,對(duì)于運(yùn)行環(huán)境要求不高書(shū)共知的,而VB則要求很高的配置與條件。VisualBasic是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP),因而它具有OOP語(yǔ)言所具有的對(duì)象的創(chuàng)建機(jī)制,對(duì)象的繼承性,對(duì)象的多態(tài)性及對(duì)象的可見(jiàn)性等特征。所謂面向?qū)ο蟮某绦蛟O(shè)計(jì)是一種以對(duì)象為基礎(chǔ),以事件來(lái)驅(qū)動(dòng)對(duì)象執(zhí)行的程序設(shè)計(jì)技術(shù)。OOP把計(jì)算過(guò)程看作為對(duì)象的分類過(guò)程加上其狀態(tài)變換的過(guò)程也就是將一個(gè)應(yīng)用程序逐步劃分成互相關(guān)聯(lián)的多個(gè)對(duì)象,并且建立起與這些對(duì)象互相關(guān)聯(lián)的事件過(guò)程。通過(guò)對(duì)象對(duì)所發(fā)生的事件產(chǎn)生響應(yīng),并執(zhí)行相應(yīng)的事件過(guò)程,以引發(fā)對(duì)象狀態(tài)的改變,從而最終達(dá)到完成計(jì)算的目的。面向?qū)ο笤O(shè)計(jì)是一種全新的程序設(shè)計(jì)方法,它從根本上改變了傳統(tǒng)的程序設(shè)計(jì)模式,其基本思想是:通過(guò)建立于具體實(shí)際應(yīng)用相對(duì)應(yīng)的對(duì)象,并通過(guò)這些對(duì)象的組合來(lái)創(chuàng)建具體的應(yīng)用程序。3.2VB基本概念與VB編程環(huán)境VB變成是一種面向?qū)ο蟮某绦蛟O(shè)計(jì),要熟悉并掌握它必須先掌握其基本該您于編程環(huán)境。3.2.1VB的基本概念1、對(duì)象對(duì)象是代碼和數(shù)據(jù)的組合,可以作為一個(gè)單位來(lái)處理。對(duì)象可以是應(yīng)用程序的一部分,比如可以是控件或窗體。整個(gè)應(yīng)用程序也是一個(gè)對(duì)象。在VB中可能用到的幾種類型的對(duì)象,如表3.1所示:表3.1類型對(duì)象示例示例描述命令按鈕窗體上的控件,像命令按鈕和框架,它們都是對(duì)象窗體VisualBasic工程中的母一個(gè)窗體都是獨(dú)立的對(duì)象數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)是對(duì)象,并且還包含其他對(duì)象,如字段、索引等圖表MicrosoftExcel中的圖表是對(duì)象VB中的每個(gè)對(duì)象都是用類定義的。用餅干模子和餅干之間的關(guān)系作比,就會(huì)明白對(duì)象和它的類之間的關(guān)系。餅干模子是類。它確定了每塊餅干的特征,比如大小和形狀。用類創(chuàng)建對(duì)象,對(duì)象就是餅干。類是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心技術(shù),可以理解成一種定義了對(duì)象行為和外觀的模板;把對(duì)象看作是類的原原本本的復(fù)制品,類具有繼承性、封裝性、多態(tài)性、抽象性。(1)屬性屬性是對(duì)對(duì)象特性的描述,VB為每一類對(duì)象都規(guī)定了若干屬性,設(shè)計(jì)中可以改變具體對(duì)象的屬性值。比如窗體的背景顏色、高度與寬度。(2)事件(Event)事件是發(fā)生在對(duì)象上的動(dòng)作。事件的發(fā)生不是隨意的,某些事件僅發(fā)生在某些對(duì)象上。在VB中事件的調(diào)用形式是:PrivateSub對(duì)象名_事件名(事件內(nèi)容)EndSub(3)方法(Method)方法指的是控制對(duì)象動(dòng)作行為的方式。它是對(duì)象本身內(nèi)含的函數(shù)或過(guò)程,它也是一個(gè)動(dòng)作,是一個(gè)簡(jiǎn)單的不必知道細(xì)節(jié)的無(wú)法改變的事件,但不稱作事件;同樣,方法也不是隨意的,一些對(duì)象有一些特定的方法。在VB里方法的調(diào)用形式是:對(duì)象名.方法名2、 屬性、方法和事件之間的關(guān)系VB對(duì)象具有屬性、方法和事件。屬性是描述對(duì)象的數(shù)據(jù);方法告訴對(duì)象應(yīng)做的事情;事件是對(duì)象所產(chǎn)生的事情,事件發(fā)生時(shí)可以編寫(xiě)代碼進(jìn)行處理。VB的窗體和控件是具有自己的屬性、方法和事件的對(duì)象。可以把屬性看作一個(gè)對(duì)象的性質(zhì),把方法看作對(duì)象的動(dòng)作,把事件看作對(duì)象的響應(yīng)。日常生活中的對(duì)象,如小孩玩的氣球同樣具有屬性、方法和事件。氣球的屬性包括可以看到的一些性質(zhì),如它的直徑和顏色。其它一些屬性描述氣球的狀態(tài)(充氣的或未充氣的)或不可見(jiàn)的性質(zhì),如它的壽命。通過(guò)定義,所有氣球都具有這些屬性;這些屬性也會(huì)因氣球的不同而不同。氣球還具有本身所固有的方法和動(dòng)作。如:充氣方法(用氦氣充滿氣球的動(dòng)作),放氣方法(排出氣球中的氣體)和上升方法(放手讓氣球飛走)。所有的氣球都具備這些能力。氣球還有預(yù)定義的對(duì)某些外部事件的響應(yīng)。例如,氣球?qū)Υ唐扑氖录憫?yīng)是放氣,對(duì)放手事件的響應(yīng)是升空。在VB程序設(shè)計(jì)中,基本的設(shè)計(jì)機(jī)制就是:改變對(duì)象的屬性、使用對(duì)象的方法、為對(duì)象事件編寫(xiě)事件過(guò)程。程序設(shè)計(jì)時(shí)要做的工作就是決定應(yīng)更改哪些屬性、調(diào)用哪些方法、對(duì)哪些事件做出響應(yīng),從而得到希望的外觀和行為。3、 事件驅(qū)動(dòng)模型在傳統(tǒng)的或“過(guò)程化”的應(yīng)用程序中,應(yīng)用程序自身控制了執(zhí)行哪一部分代碼和按何種順序執(zhí)行代碼。從第一行代碼執(zhí)行程序并按應(yīng)用程序中預(yù)定的路徑執(zhí)行,必要時(shí)調(diào)用過(guò)程。在事件驅(qū)動(dòng)的應(yīng)用程序中,代碼不是按照預(yù)定的路徑執(zhí)行,而是在響應(yīng)不同的事件時(shí)執(zhí)行不同的代碼片段。事件可以由用戶操作觸發(fā)、也可以由來(lái)自操作系統(tǒng)或其它應(yīng)用程序的消息觸發(fā)、甚至由應(yīng)用程序本身的消息觸發(fā)。這些事件的順序決定了代碼執(zhí)行的順序,因此應(yīng)用程序每次運(yùn)行時(shí)所經(jīng)過(guò)的代碼的路徑都是不同的。因?yàn)槭录捻樞蚴菬o(wú)法預(yù)測(cè)的,所以在代碼中必須對(duì)執(zhí)行時(shí)的“各種狀態(tài)”作一定的假設(shè)。當(dāng)作出某些假設(shè)時(shí)(例如,假設(shè)在運(yùn)行來(lái)處理某一輸入字段的過(guò)程之前,該輸入字段必須包含確定的值),應(yīng)該組織好應(yīng)用程序的結(jié)構(gòu),以確保該假設(shè)始終有效(例如,在輸入字段中有值之前禁止使用啟動(dòng)該處理過(guò)程的命令按鈕)。在執(zhí)行中代碼也可以觸發(fā)事件。例如,在程序中改變文本框中的文本將引發(fā)文本框的Change事件。如果Change事件中包含有代碼,則將導(dǎo)致該代碼的執(zhí)行。如果原來(lái)假設(shè)該事件僅能由用戶的交互操作所觸發(fā),則可能會(huì)產(chǎn)生意料之外的結(jié)果。正因?yàn)檫@一原因,所以在設(shè)計(jì)應(yīng)用程序時(shí)理解事件驅(qū)動(dòng)模型并牢記在心是非常重要的。4、交互式開(kāi)發(fā)傳統(tǒng)的應(yīng)用程序開(kāi)發(fā)過(guò)程可以分為三個(gè)明顯的步驟:編碼、編譯和測(cè)試代碼。但是VisualBasic與傳統(tǒng)的語(yǔ)言不同,它使用交互式方法開(kāi)發(fā)應(yīng)用程序,使三個(gè)步驟之間不再有明顯的界限。VB在編程者輸入代碼時(shí)便進(jìn)行解釋,即時(shí)捕獲并突出顯示大多數(shù)語(yǔ)法或拼寫(xiě)錯(cuò)誤??雌饋?lái)就像一位專家在監(jiān)視代碼的輸入。除即時(shí)捕獲錯(cuò)誤以外,VB也在輸入代碼時(shí)部分地編譯該代碼。當(dāng)準(zhǔn)備運(yùn)行和測(cè)試應(yīng)用程序時(shí),只需極短時(shí)間即可完成編譯。如果編譯器發(fā)現(xiàn)了錯(cuò)誤,則將錯(cuò)誤突出顯示于代碼中。這時(shí)可以更正錯(cuò)誤并繼續(xù)編譯,而不需從頭開(kāi)始。由于VB的交互特性,代碼運(yùn)行的效果可以在開(kāi)發(fā)時(shí)進(jìn)行測(cè)試,而不必等到編譯完成以后。3.2.2VB6.0的集成開(kāi)發(fā)環(huán)境簡(jiǎn)介VB集成開(kāi)發(fā)環(huán)境(IDE——IntegratedDevelopingEnvironment)由以下元素組成:1、標(biāo)題欄用于顯示正在開(kāi)發(fā)或調(diào)試的工程名和系統(tǒng)的工作狀態(tài)(設(shè)計(jì)態(tài)、運(yùn)行態(tài)、中止態(tài))。2、菜單欄如圖3.1:文件迢)編輯⑥視圖②工程的格式?I調(diào)試?運(yùn)行⑥查詢?圖表①工具⑴外接程席九?窗口⑩幫助⑩圖3.1菜單欄示意圖3、工具欄如圖3.2:澎〒色k育心9|為電俚開(kāi)I口CIpII■I霸.圖嚼普法汶倉(cāng)出0.D還5055.40! P「 I圖3.2工具欄示意圖在編程環(huán)境下用于快速訪問(wèn)常用命令。缺省情況下,啟動(dòng)VB后顯示“標(biāo)準(zhǔn)”工具欄,附加的編輯、窗體設(shè)計(jì)和調(diào)試的工具欄可以從“視圖”菜單上的“工具欄”命令中移進(jìn)或移出。4、 窗體設(shè)計(jì)器用來(lái)設(shè)計(jì)應(yīng)用程序的界面。啟動(dòng)VB后,窗體設(shè)計(jì)器中自動(dòng)出現(xiàn)一個(gè)名為Forml的空白窗體,可以在該窗體中添加控件、圖形和圖片等來(lái)創(chuàng)建所希望的外觀,窗體的外觀設(shè)計(jì)好后,從菜單中選擇“文件”-“保存窗體”-在保存對(duì)話框中給出合適的文件名(注意擴(kuò)展名),并選擇所需的保存位置-確定。需要再設(shè)計(jì)另一個(gè)窗體時(shí),單擊工具欄上的“添加窗體”按鈕即可。5、 控件(工具)箱由一組控件按鈕組成,用于設(shè)計(jì)時(shí)在窗體中放置控件。除了缺省的工具箱布局之外,還可以通過(guò)從上下文菜單中選定“添加選項(xiàng)卡”并在結(jié)果選項(xiàng)卡中添加控件來(lái)創(chuàng)建自定義布局。6、 彈出式(上下文)菜單在要使用的對(duì)象上單擊鼠標(biāo)右鍵即可打開(kāi)快捷菜單,其上會(huì)出現(xiàn)與當(dāng)前對(duì)象相關(guān)的經(jīng)常執(zhí)行的操作,以加快操作速度。7、 工程管理器窗口用于瀏覽工程中所包含的窗體和模塊,還可以從中查看代碼、查看對(duì)象。8、 屬性窗口是VB中一個(gè)比較復(fù)雜的窗口,其中列出了對(duì)選定窗體和控件的屬性設(shè)置值。VB中正是通過(guò)改變屬性來(lái)改變對(duì)象的特征,如大小、標(biāo)題或顏色。9、 對(duì)象瀏覽器列出工程中有效的對(duì)象,并提供在編碼中漫游的快速方法??梢允褂谩皩?duì)象瀏覽器”瀏覽在VB中的對(duì)象和其它應(yīng)用程序,查看對(duì)那些對(duì)象有效的方法和屬性,并將代碼過(guò)程粘貼進(jìn)自己的應(yīng)用程序。10、 對(duì)象瀏覽器右擊窗體中的對(duì)象、從工程管理器中點(diǎn)“查看代碼”按鈕。11、窗體布局窗口FormLayoutwindow允許使用表示屏幕的小圖象來(lái)布置應(yīng)用程序中各窗體的位置。12、 立即、本地和監(jiān)視窗口這些附加窗口是為調(diào)試應(yīng)用程序提供的,它們只在IDE之中運(yùn)行應(yīng)用程序時(shí)才有效。2.3利用VB開(kāi)發(fā)應(yīng)用程序的一般步驟一個(gè)VB程序也稱為一個(gè)工程,由窗體、標(biāo)準(zhǔn)模塊、自定義控件及應(yīng)用所需的環(huán)境設(shè)置組成。開(kāi)發(fā)步驟一般如下:創(chuàng)建程序的用戶界面設(shè)置界面上各個(gè)對(duì)象的屬性編寫(xiě)對(duì)象響應(yīng)事件的程序代碼保存工程測(cè)試應(yīng)用程序,排除錯(cuò)誤創(chuàng)建可執(zhí)行程序本軟件各窗體簡(jiǎn)單介紹:本系統(tǒng)軟件部分包括8個(gè)窗體,1個(gè)模塊;模塊中主要包含有一些功能函數(shù)的實(shí)現(xiàn)。如打開(kāi),保存等等。窗體分別為封面窗體,主菜單,數(shù)據(jù)報(bào)表,單倉(cāng)溫度監(jiān)測(cè),幫助。這些窗體都具有界面美觀,操作方便的優(yōu)點(diǎn)。本系統(tǒng)可實(shí)現(xiàn)以下功能:可以設(shè)定報(bào)警溫度??杀O(jiān)視各個(gè)時(shí)刻的溫度??纱蛴∧硞€(gè)時(shí)刻的溫度報(bào)表??扇我獠榭茨骋粋}(cāng)溫度值。讀盤(pán)可對(duì)以往數(shù)據(jù)查詢??蓪?dāng)天當(dāng)時(shí)數(shù)據(jù)以日期命名存盤(pán),便于管理??煞奖阃顺鰬?yīng)用系統(tǒng)。幫助子菜單將讓你更清楚地了解整個(gè)系統(tǒng)的功能。3.3設(shè)計(jì)中VB6.0所采用的控件本設(shè)計(jì)在采用VB6.0作為上位機(jī)軟件的同時(shí),還應(yīng)用了VB6.0的兩個(gè)控件。SSTab和MSCOMM控件。3.3.1SSTab控件的功能SSTab控件提供了一組選項(xiàng)卡,每個(gè)選項(xiàng)卡都可以作為其它控件的容器。在控件中,同一時(shí)刻只有一個(gè)選項(xiàng)卡是活動(dòng)的,這個(gè)選項(xiàng)卡向用戶顯示它本身所包含的控件而隱藏其它選項(xiàng)卡中的控件。3.3.2MSComm控件特點(diǎn)MSComm控件是Microsoft提供的擴(kuò)展控件,用于支持VB程序?qū)Υ诘脑L問(wèn),該控制"隱藏"了大部分串口通信的底層運(yùn)行過(guò)程和許多煩瑣的處理過(guò)程,同時(shí)支持查詢方法和事件驅(qū)動(dòng)通信的機(jī)制,事件驅(qū)動(dòng)通信是交互方式處理串口事務(wù)的一種非常有效的方法,特別適合Windows程序的編寫(xiě).在通信過(guò)程中,當(dāng)發(fā)送數(shù)據(jù),收到數(shù)據(jù)或產(chǎn)生傳輸錯(cuò)誤時(shí),觸發(fā)MSComm控件的OnComm事件,然后可以通過(guò)判斷CommEvent屬性值獲得事件類型,再根據(jù)事件類型進(jìn)行相應(yīng)數(shù)據(jù)處理。因此用其實(shí)現(xiàn)微機(jī)串口的數(shù)據(jù)通信相當(dāng)簡(jiǎn)單,以很少的程序代碼就可以輕松實(shí)現(xiàn)串口的訪問(wèn)和數(shù)據(jù)通信。3.3.3MSComm控件的介紹一般來(lái)說(shuō),用VB進(jìn)行串口通信使用到的大部分都是這個(gè)MSComm這個(gè)控件,MSComm通信控件提供了一系列標(biāo)準(zhǔn)通信命令的接口,我們可以通過(guò)它可以建立串口連接、數(shù)據(jù)發(fā)送、命令發(fā)送以及監(jiān)視和響應(yīng)在通信過(guò)程中的事件和錯(cuò)誤。MSComm這個(gè)控件在一開(kāi)始的時(shí)候不是默認(rèn)的出現(xiàn)在Toolbox中的,我們要想使用它,就必須把它從VB中調(diào)出來(lái)。首先單擊Project(工程),選擇Components(控件),接著在Control(控制)選項(xiàng)卡中選中MicrosoftCommControl6.0這個(gè)控件,點(diǎn)擊確定,這時(shí)你就能在Toolbox上看到一個(gè)小電話的圖標(biāo),它就是MSComm控件。MSComm控件提供兩種處理通信的方法:第一種是當(dāng)串口發(fā)生事件或者錯(cuò)誤的時(shí)候,會(huì)產(chǎn)生一個(gè)OnComm的事件,我們可以通過(guò)對(duì)這個(gè)事件的捕捉,進(jìn)行相應(yīng)的處理,這種通過(guò)對(duì)OnComm事件進(jìn)行捕捉的方法稱為事件驅(qū)動(dòng)方式;第二種是定時(shí)或者不定時(shí)的查詢MSComm的屬性變化,從而選擇相應(yīng)的處理方式,這種方法我們稱為查詢方法。說(shuō)到OnComm事件,這里就的不得不說(shuō)到MSComm的另一個(gè)重要屬性--CommEvent屬性。當(dāng)串口發(fā)生事件或者錯(cuò)誤的時(shí)候,MSComm就為它賦不同的代碼,同時(shí),產(chǎn)生一個(gè)OnComm事件。這時(shí)候,我們就可以針對(duì)不同的代碼,進(jìn)行相應(yīng)的處理。下面提供一些CommEvent屬性的代碼、常數(shù)及含義:CommEvent通信事件:代碼常數(shù)含義ComEvReceive接受到Rthreshold個(gè)字符。該事件將持續(xù)產(chǎn)生,直到用Input屬性從接受緩沖區(qū)中讀取并刪除字符。ComEvSend發(fā)送緩沖區(qū)中數(shù)據(jù)少于Sthreshold個(gè),說(shuō)明串口已經(jīng)發(fā)送了一些數(shù)據(jù),程序可以用Output屬性繼續(xù)發(fā)送數(shù)據(jù)。ComEvCTSClearToSend信號(hào)線狀態(tài)發(fā)生變化。ComEvDSRDataSetReady信號(hào)線狀態(tài)從1變到0。ComEvCDCarrierDetect信號(hào)線狀態(tài)發(fā)生變化。ComEvRing檢測(cè)到振鈴信號(hào)。ComEvEOF接受到文件結(jié)束符。CommEvent通信錯(cuò)誤:代碼常數(shù)含義ComEvntBreak接受到一個(gè)中斷信號(hào)。ComEvntCTSTOClearToSend信號(hào)超時(shí)。ComEvntDSRTODataSetReady信號(hào)超時(shí)。ComEvntFrame幀錯(cuò)誤。ComEvntOverrun串口超速。ComEvntCDTO載波檢測(cè)超時(shí)。ComEvntRxOver接受緩沖區(qū)溢出,緩沖區(qū)中已沒(méi)有空間。ComEvntRxParity奇偶校驗(yàn)錯(cuò)。ComEvntTxFull發(fā)送緩沖區(qū)溢出,緩沖區(qū)中已沒(méi)有空間。ComEvntDCB檢索串口的設(shè)備控制塊時(shí)發(fā)生錯(cuò)誤。上位PC機(jī)VB通信程序設(shè)計(jì)串行通信程序設(shè)計(jì)方法在本溫度檢測(cè)系統(tǒng)中,上位機(jī)的主要功能有:串口通信功能設(shè)置;接收來(lái)自下位機(jī)的測(cè)溫值,并進(jìn)行實(shí)時(shí)顯示;向下位機(jī)發(fā)送溫度上、下限值;實(shí)時(shí)溫度曲線和歷史溫度曲線顯示;數(shù)據(jù)庫(kù)管理功能。利用VB開(kāi)發(fā)通信程序的主要方法有兩種:一種是利用VB本身提供的通信控件;另一種方法是利用WindowsAPI應(yīng)用程序接口。在實(shí)踐中,利用VB通信控件的方法比調(diào)用API動(dòng)態(tài)連接庫(kù)的方法更為簡(jiǎn)便,因而本系統(tǒng)主要采用利用VB通信控件進(jìn)行通信。VB中MSComm串口通信控件在正常的工具欄中沒(méi)有,需要在菜單"工程"的選項(xiàng)"部件"中添加,選擇MicrosoftCommControl6.0即可。3.4.1上位機(jī)PC機(jī)端通訊軟件的實(shí)現(xiàn)在Windows環(huán)境下,盡管VisualBasic6.0不能對(duì)I/O口直接進(jìn)行訪問(wèn),但其包含的MSComm部件為實(shí)現(xiàn)多機(jī)串行通信提供了有力工具。VB6.0具有面向?qū)ο蟮脑O(shè)計(jì)方法、友好的用戶界面、簡(jiǎn)單方便的串行通訊和實(shí)用性強(qiáng)等優(yōu)點(diǎn),無(wú)需借用其它語(yǔ)言就可以開(kāi)發(fā)出優(yōu)秀的控制系統(tǒng)通訊軟件。因此本系統(tǒng)采用VB6.0在Windows98環(huán)境下實(shí)現(xiàn)PC機(jī)與MCS-51系列8031單片機(jī)之間的串行通訊。VB提供了串行端口控件MSComm來(lái)為應(yīng)用程序提供串行通訊,該控件屏蔽了通信過(guò)程中的底層操作,程序員應(yīng)用時(shí)只需設(shè)置、監(jiān)控MSComm控件的屬性和時(shí)間即可完成對(duì)串行口的初始化和數(shù)據(jù)的輸入輸出工作。MSComm控件的主要屬性如下:Commport設(shè)置并返回端口號(hào)。設(shè)計(jì)時(shí)端口號(hào)可以設(shè)置成1到16的任何數(shù)。例如:MSCmport=2,即設(shè)置當(dāng)前通訊端口為COM2。Setting 設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位。格式為:MSComm.Setting=String,String是一個(gè)包含四部分的字符串。第一部分位波特率;第二部分為奇偶校驗(yàn),N表示不校驗(yàn),E表示偶校驗(yàn),O表示奇校驗(yàn),S表示空格校驗(yàn),M表示符號(hào)校驗(yàn);第三部分為數(shù)據(jù)位數(shù),其可選值為4,5,6,7,8;第四部分為停止位位數(shù),其可選值為1,1.5,2;Setting屬性的缺省值為“9600,N,8,1”。Portopen設(shè)置并返回通訊端口的狀態(tài),也可以打開(kāi)和關(guān)閉端口。Input從接收緩沖區(qū)返回和刪除字符,該屬性在運(yùn)行時(shí)為只讀。InputLen設(shè)置并返回每次Input屬性從接收緩沖區(qū)中讀取的字符數(shù)。InputLen屬性的缺省值為0時(shí),Input將讀取接收緩沖區(qū)的全部?jī)?nèi)容。Output向傳送緩沖區(qū)寫(xiě)數(shù)據(jù),要傳送的數(shù)據(jù)可以是文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。CommEvent返回最近的通訊時(shí)間或錯(cuò)誤。只要有通訊錯(cuò)誤或事件發(fā)生時(shí)都會(huì)產(chǎn)生OnComm事件,CommEvent屬性中存有該錯(cuò)誤或事件的數(shù)字代碼。3.4.2溫度數(shù)據(jù)上傳部分溫度數(shù)據(jù)上傳部分我們采用RS485的通信方式,該方式的優(yōu)點(diǎn)是數(shù)據(jù)可傳輸?shù)木嚯x遠(yuǎn),由于采用土200mV電勢(shì)差來(lái)表示傳輸?shù)倪壿?,所以具有很?qiáng)的抗干擾能力。在進(jìn)行數(shù)據(jù)上傳之前要將MAX487的讀寫(xiě)信號(hào)線置成寫(xiě),發(fā)送數(shù)據(jù)結(jié)束在將信號(hào)線置成讀。上傳數(shù)據(jù)幀格式,溫度上傳的楨格式為:起始字節(jié)為9F,通道字節(jié)用高四位表示通道號(hào),符號(hào)字節(jié)用11表示正數(shù),用12表示負(fù)數(shù),溫度值第一字節(jié)的低四位表示溫度值的十位,溫度值第二字節(jié)的低四位表示溫度值的個(gè)位,溫度值第三字節(jié)的低四位表示溫度值的小數(shù)位,校驗(yàn)位為從通道號(hào)開(kāi)始的五個(gè)字節(jié)的和的低字節(jié),停止字節(jié)為6F。串行口的通信波特率為9600bps,時(shí)鐘發(fā)生器用定時(shí)器1的工作方式2,采用8位自動(dòng)加載模式,計(jì)數(shù)初值為0XFD,波特率不增倍,SMOD=0;下面介紹發(fā)送一個(gè)字節(jié)的方法:先將MAX487置于寫(xiě)狀態(tài),然后把要發(fā)送的數(shù)據(jù)送到SBUF里,查詢TI的狀態(tài),如果為“0”,則繼續(xù)查詢,直到TI為“1”,表示發(fā)送的一個(gè)字節(jié)已經(jīng)結(jié)束,將MAX487置于讀狀態(tài)。向上位機(jī)發(fā)送溫度子程序如表3.2:表3.2傳送數(shù)據(jù)表開(kāi)始位通道號(hào)符號(hào)位十位個(gè)位小數(shù)位校驗(yàn)位停止位9FXXXX000011,120000XXXX0000XXXX0000XXXXSUM6F3.4.3VB編程程序首先打開(kāi)VB6.0應(yīng)用程序,如圖3.3:選擇標(biāo)準(zhǔn)EXE,點(diǎn)擊打開(kāi)進(jìn)入VB6.0操作界面,點(diǎn)擊“Project(工程)”——選擇“Components(控件)”接著在“Control(控制)”。選項(xiàng)卡中選中MicrosoftCommControl6.0這個(gè)控件,點(diǎn)擊確定,這時(shí)你就能在Toolbox上看到一個(gè)小電話的圖標(biāo),它就是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)信息:串口打開(kāi)成功!”MSCommTemp.InBuffercount=0M_b_Temp_Open=True上面這段程序是用VB6.0編程語(yǔ)言對(duì)MSComm控件的設(shè)置。波特率為:9600奇偶校驗(yàn)位為:N數(shù)據(jù)位為:8停止位為:1PrivateSubMSCommTemp_OnComm()采用MSComm控件中OnComm事件IfArr(0)=&H9FThenm_i_RecvCount=0LabInfo.Caption="系統(tǒng)信息:正在接收數(shù)據(jù)..."EndIf這段程序表示,數(shù)組Arr(0)接收到下位機(jī)傳送的代碼如果是“&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)接收到下位機(jī)傳送的代碼如果是“&H6F”則表示系統(tǒng)通訊結(jié)束。并且只接收1—8八個(gè)通道的數(shù)據(jù)。如果通道位的代碼大于8,則程序結(jié)束。通過(guò)數(shù)組Arr(2)的代碼來(lái)判斷接收到的溫度數(shù)據(jù)的正負(fù)。如果接收到的代碼是“&HB”則表示接收到的溫度數(shù)據(jù)為負(fù)數(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控件上畫(huà)上一個(gè)picturebox,并根據(jù)接收到的溫度數(shù)據(jù)畫(huà)出相應(yīng)的曲線。如圖3.5:100_90_80_70_6050-40—30圖3.5溫度曲線示意圖第一邇道[第二通道[第三通道[第四道道[第五通道[第責(zé)通道[100_90_80_70_6050-40—30圖3.5溫度曲線示意圖上位機(jī)采集上來(lái)的數(shù)據(jù)在Text.text文本框中顯示,如圖3.6:圖3.6溫度數(shù)據(jù)顯示圖讀存盤(pán)處理程序的編寫(xiě):在讀存盤(pán)處理程序編寫(xiě)過(guò)程中,關(guān)鍵涉及兩個(gè)問(wèn)題要加以討論與解決,一個(gè)是通用對(duì)話框,一個(gè)是文件的讀寫(xiě)操作即屬于文件管理的內(nèi)容。1、通用對(duì)話框?qū)υ捒蚴荲isualBasic應(yīng)用程序與擁護(hù)進(jìn)行信息交換的窗口,通過(guò)對(duì)話框可以輸入必要的信息和數(shù)據(jù)。包括三種設(shè)計(jì)方法:Msgbox和InPutBox及用CommonDialog控件設(shè)計(jì)標(biāo)準(zhǔn)窗體對(duì)話框。Msgbox功能是把消息傳遞給用戶,同時(shí)接收用戶在對(duì)話框中的選擇,使程序根據(jù)用戶的選擇來(lái)作出相應(yīng)的響應(yīng)。Msgbox(prompt,buttons,title,helpfile,Context])可看作輸出對(duì)話框,在交互或程序中,能反饋一些信息,進(jìn)行提示擁護(hù),其中prompt:顯示的消息字符串表達(dá)式。Buttons:顯示按鈕數(shù)目和形式以及對(duì)話框風(fēng)格的數(shù)字表達(dá)式表示Title:對(duì)話框標(biāo)題的字符串表達(dá)式。InPutBox:一般用作程序的輸入框,接收用戶的輸入,并根據(jù)接收到的消息,作出相應(yīng)的處理。InPutBox(prompt,title,default,xpos,ypos,helpfile,context)用CommonDialog控件創(chuàng)建,包括打開(kāi)文件,保存文件等標(biāo)準(zhǔn)對(duì)話框,在應(yīng)用程序中可以用不同的顯示方法來(lái)實(shí)現(xiàn)顯示對(duì)話框,以便給應(yīng)用程序提供信息數(shù)據(jù),然后根據(jù)接收來(lái)的信息作出不同的處理,可以在程序中通過(guò)調(diào)用CommonDialog控件的屬性來(lái)接收用戶在對(duì)話框中輸入的信息。用法:object.showopen顯示open對(duì)話框2、文件操作所謂文件一般是指存儲(chǔ)在計(jì)算機(jī)外部介質(zhì)上一些信息組成的集合,要求到存儲(chǔ)在外部介質(zhì)上的數(shù)據(jù)信息,必須先按所提供的文件名找到指定的文件,然后再?gòu)脑撐募凶x取數(shù)據(jù)信息。用戶要向外部介質(zhì)上存儲(chǔ)數(shù)據(jù)信息,也必須先建立一個(gè)文件,然后再向該文件輸出需要存儲(chǔ)的信息。文件存取的方式有順序文件和隨機(jī)文件兩種。順序文件的數(shù)據(jù)是一個(gè)接一個(gè)順序存放的,而且只提供第一個(gè)記錄的存儲(chǔ)位置,隨機(jī)文件的每個(gè)記錄均有固定的長(zhǎng)度,每個(gè)記錄都有一個(gè)記錄號(hào),在存放數(shù)據(jù)時(shí),只要指明是第幾個(gè)記錄號(hào),就可以把數(shù)據(jù)存入指定的位置;讀取數(shù)據(jù)時(shí),只需要給出某一個(gè)記錄的記錄號(hào),便能直接讀取記錄,隨機(jī)文件可以同時(shí)作輸入輸出操作,速度快。對(duì)隨機(jī)文件操作包括建立隨機(jī)文件,打開(kāi)隨機(jī)文件,關(guān)閉隨機(jī)文件和讀寫(xiě)隨機(jī)文件,以及對(duì)記錄的刪除和增加。建立和打開(kāi)文件:openfilenameforrandomasnum寫(xiě)文件 :Put#文件號(hào),記錄號(hào),記錄名稱讀文件 :Get#文件號(hào),記錄號(hào),記錄名稱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,"讀盤(pán)錯(cuò)誤"ExitSubEndSub系統(tǒng)調(diào)試VisualBasic6.0編程環(huán)境提供了許多運(yùn)行和調(diào)試應(yīng)用程序的工具,如啟動(dòng)工具如,設(shè)置斷點(diǎn)單步執(zhí)行等,程序的可視化設(shè)計(jì)和代碼編寫(xiě)完成后,可以選用不同的執(zhí)行方式,以對(duì)它進(jìn)行執(zhí)行,調(diào)試。VisualBasic本身不能診斷或者更改程序中的錯(cuò)誤,但能夠提供一些調(diào)試工具來(lái)幫助用戶分析程序的運(yùn)行是如何進(jìn)行的,分析如何從一個(gè)過(guò)程轉(zhuǎn)到另一個(gè)過(guò)程,分析變量和對(duì)象屬性在程序運(yùn)行過(guò)程是如何改變的。有了這些工具的幫助,用戶在調(diào)試程序時(shí)就可以深入觀察程序的執(zhí)行過(guò)程,以了解發(fā)生了什么事或錯(cuò)誤,是如何發(fā)生的。VisualBasic的調(diào)試支持包括斷點(diǎn),中斷表達(dá)式,監(jiān)視表達(dá),顯示變量和屬性的值。這些調(diào)試功能可以幫助用戶處理邏輯錯(cuò)誤,其調(diào)試工具可以從“Debug菜單上調(diào)用,也可以從調(diào)試工具欄中選擇。在進(jìn)行上位機(jī)軟件調(diào)試中,本設(shè)計(jì)還用到了串口調(diào)試助手。它可以在一臺(tái)機(jī)器上通過(guò)PC機(jī)的兩個(gè)串口,互相發(fā)送信息。在用PC機(jī)上兩個(gè)串口進(jìn)行連接時(shí),需要將兩個(gè)九針串口的2,3針互換,把5針相連接,如圖4.1:圖4.1串口連接圖在進(jìn)行VB程序調(diào)試時(shí)也可以用串口助手來(lái)模擬單片機(jī)發(fā)送數(shù)據(jù),下圖是用串口助手模擬單片機(jī)發(fā)送的數(shù)據(jù)。9F010A0308056F串口助手的串口選擇coml,波特率選擇9600,校驗(yàn)位選擇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ī)|停生顯示廳自動(dòng)涪空(7十六進(jìn)制顯示眼再顯委數(shù)呃更改I 選擇發(fā)送文啊發(fā)送文件計(jì)數(shù)潔零c'Acomdata選擇發(fā)送文啊發(fā)送文件計(jì)數(shù)潔零手動(dòng)發(fā)送就十六進(jìn)制發(fā)送手動(dòng)發(fā)送r自動(dòng)發(fā)送凋期改變后重選〕目動(dòng)發(fā)送周期:1909毫秒-ta|STATUS:COMIOFENED>9600,N,8,1圖4.2串口助手調(diào)試圖結(jié)論歷時(shí)三個(gè)多月的畢業(yè)設(shè)計(jì)即將結(jié)束。在這期間我查閱了大量的與其相關(guān)的資料,這不但開(kāi)闊了我的視野,又豐富了我的知識(shí),同時(shí)也使我的自學(xué)能力大大提高。除此之外我也學(xué)會(huì)了怎樣調(diào)試程序,怎么樣檢查自己設(shè)計(jì)中存在的錯(cuò)誤。通過(guò)三個(gè)多月的設(shè)計(jì)以及大量的實(shí)驗(yàn),本設(shè)計(jì)基本上達(dá)到了先前提出的設(shè)計(jì)技術(shù)指標(biāo),可以與硬件可靠通訊得到溫度數(shù)據(jù),軟件運(yùn)行穩(wěn)定,溫度數(shù)據(jù)統(tǒng)計(jì)結(jié)果和溫度曲線符合真實(shí)情況。并且利用標(biāo)準(zhǔn)電阻箱進(jìn)行了測(cè)試。但是由于時(shí)間關(guān)系和本人的能力與精力有限,如果要把本課題的整個(gè)系統(tǒng)做得十分完整,本人認(rèn)為本課題還有以下幾項(xiàng)工作要進(jìn)行:關(guān)于上位微機(jī)軟件的編制,由于在本系統(tǒng)中己經(jīng)將通信接口作為一個(gè)選件來(lái)考慮,從系統(tǒng)的完整性來(lái)看,應(yīng)將上位管理微機(jī)的軟件編制工作納入其中,當(dāng)然,目前國(guó)內(nèi)外也有不少只告訴通信的標(biāo)準(zhǔn)以及通信的數(shù)據(jù)幀格式。而上位管理微機(jī)的軟件有使用測(cè)量?jī)x器的末端用戶自己解決。從整個(gè)測(cè)溫系統(tǒng)來(lái)著,總體功能是較完善的,但唯一不足的是由于條件有限,沒(méi)有實(shí)現(xiàn)打印報(bào)表功能。致謝通過(guò)幾個(gè)月的學(xué)習(xí)和實(shí)踐,終于完成了本次設(shè)計(jì),在此期間,通過(guò)對(duì)上位機(jī)軟件的了解,VB6.0及其控件的學(xué)習(xí),我進(jìn)一步掌握了電子專業(yè)的技術(shù)知識(shí),并且使所學(xué)到的知識(shí)得到了理論與實(shí)踐的相結(jié)合,為以后的學(xué)習(xí)和工作打下了良好的基礎(chǔ)。再本次設(shè)計(jì)過(guò)程中,我衷心感謝我的導(dǎo)師陳亮老師,陳老師在畢業(yè)設(shè)計(jì)期間給予我悉心的指導(dǎo)和幫助,引導(dǎo)我從畢業(yè)設(shè)計(jì)初期對(duì)課題的毫無(wú)所知到逐步的深入學(xué)習(xí)、不斷研究,熱心的幫助和鼓勵(lì)我解決設(shè)計(jì)上遇到的一些難題,培養(yǎng)了我正確的學(xué)習(xí)方法和研究問(wèn)題的思路,以及發(fā)現(xiàn)問(wèn)題解決問(wèn)題的能力,為今后的工作、學(xué)習(xí)打下了堅(jiān)實(shí)而牢固的基礎(chǔ)。在此對(duì)陳老師表示衷心地感謝,同時(shí),感謝信息科學(xué)與工程分院的各位領(lǐng)導(dǎo)和老師的關(guān)心和支持,以及多年來(lái)對(duì)我孜孜不倦的培養(yǎng)和教誨,引導(dǎo)我學(xué)會(huì)了豐富的科學(xué)文化知識(shí)和解決問(wèn)題的能力,使得我四年的大學(xué)生活充實(shí)和快樂(lè),能在四年后順利的完成學(xué)業(yè)。參考文獻(xiàn)黃淼云,張學(xué)忠,王福成著.《VisualBasic控件應(yīng)用編程實(shí)例教程》?第1版?北京希望電子出版社,2002李廣弟,朱月秀,王秀山著.《單片機(jī)基礎(chǔ)》.第2版?北京航空航天大學(xué)出版社,2001趙新民著.《智能儀器設(shè)計(jì)基礎(chǔ)基礎(chǔ)》.第1版.哈爾濱工業(yè)大學(xué)大學(xué)出版社,1999李建華,郭明著.《RS-232和調(diào)制解調(diào)器高級(jí)通信編程》?第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)信息:串口打開(kāi)成功!"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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度川市正規(guī)事業(yè)編社會(huì)保障單位聘用合同與政策執(zhí)行3篇
- 2025年度工程款抵扣勞務(wù)派遣合作協(xié)議3篇
- 2025年度工廠生產(chǎn)線改造及生產(chǎn)線設(shè)備轉(zhuǎn)讓及技術(shù)服務(wù)合同2篇
- 2025年度二零二五婚前婚姻財(cái)產(chǎn)保全及子女撫養(yǎng)協(xié)議書(shū)2篇
- 2025年度二零二五年度企業(yè)總部場(chǎng)地?zé)o償使用協(xié)議書(shū)3篇
- 2025年度地下車(chē)庫(kù)車(chē)位使用權(quán)及增值服務(wù)合同3篇
- 2025年度個(gè)人租房合同二零二五年租賃托管服務(wù)
- 2025年度安全生產(chǎn)隱患排查治理服務(wù)合同集3篇
- 2025年度稻田土地承包經(jīng)營(yíng)與農(nóng)業(yè)廢棄物處理協(xié)議3篇
- 2025年度定制酒高端定制及品牌推廣合同3篇
- 質(zhì)量工具與方法試題及答案
- T∕CDHA 9-2022 熱力管道安全評(píng)估方法
- 一體化綜合指揮平臺(tái)(應(yīng)急指揮部分)建設(shè)方案
- 國(guó)家開(kāi)放大學(xué)電大??啤吨袊?guó)當(dāng)代文學(xué)》期末試題及答案
- 廣東話粵語(yǔ)姓名拼音大全
- 《金融工程原理-無(wú)套利均衡分析》筆記01
- 工程項(xiàng)目收尾管理辦法
- 閘門(mén)及啟閉機(jī)安裝專項(xiàng)施工方案
- 應(yīng)征公民體格檢查表(征兵)
- 電力系統(tǒng)分析名詞解釋、簡(jiǎn)答、模擬試卷
- 家具制造企業(yè)消防安全要求
評(píng)論
0/150
提交評(píng)論