【正文】
串行通信編程的ActiveX控件,為應用程序提供了通過串行口收發(fā)數(shù)據(jù)的簡便方法。MSComm控件在編程時比較方便,程序員不必去花時間了解較為復雜的API函數(shù)。它提供一系列標準通信命令的使用接口,利用它可以建立與串口的連接,并可以通過串口連接到其他通信設備,發(fā)送命令,交換數(shù)據(jù)以及監(jiān)視和響應串行連接中發(fā)生的事件和錯誤。在本設計中,便使用了MSComm控件進行串口編程。下面就程序中使用的MSComm控件的主要屬性作以說明。1) CommPort屬性功能:設置并返回端口號說明:串口號設置返回范圍從1到16。2) RThreshold屬性功能:在MSComm控件設置CommEvent屬性為ComEvRecevie并產(chǎn)生OnComm事件之前,設置并返回要接受的字符數(shù)。說明:接收緩沖區(qū)接收到指定字符時差生OnComm事件。當指定字符設置為零,不產(chǎn)生OnComm事件。3) Settings屬性功能:設置返回波特率、奇偶校驗、數(shù)據(jù)位、停止位參數(shù)。說明:設置時以字符串常量或字符串指針傳遞參數(shù)。格式為“BBB,P,D,S”BBBB為波特率,P為奇偶校驗,D為數(shù)據(jù)位數(shù),S為停止位數(shù)。4) InPut屬性功能:從接受區(qū)內(nèi)讀取數(shù)據(jù)。說明:返回數(shù)據(jù)類型為VARIANT型變量,該屬性在串口沒有打開時不能用,在運行時只讀。當InputMode屬性為0時,變量中含有String型數(shù)據(jù);當InputMode屬性為1時,變量中含有Byte型數(shù)據(jù);5) OutPut屬性功能:想緩沖區(qū)寫數(shù)據(jù),發(fā)送緩沖區(qū)當前數(shù)據(jù)。說明:寫入緩沖區(qū)變量類型為VARIANT。發(fā)送二進制數(shù)據(jù)時,將Byte型數(shù)據(jù)放入VARIANT型變量中。6) PortOpen屬性功能:打開或關閉串口,或者返回串口開、關狀態(tài)說明:傳入?yún)?shù)為BOOL行,為TRUE時,打開串口;為FALSE時關閉串口。串口的使用需要初始化,一般初始化需要以下幾個步驟:1) 選擇串口號2) 選擇輸入方式3) 設置輸入輸出緩沖區(qū)大小4) 設置波特率、奇偶校驗、數(shù)據(jù)位數(shù)、停止位數(shù)參數(shù)5) 打開串口6) 設置接收緩沖區(qū)接收多少數(shù)據(jù)響應OnComm事件7) 設置當前接受區(qū)長度8) 先預讀緩沖區(qū)以清除殘留數(shù)據(jù)在串口初始化完成根據(jù)設置響應OnComm事件,在OnComm事件處理函數(shù)中對數(shù)據(jù)進行相應的處理。在此次上位機軟件中OnComm事件處理的思路是這樣的:由于采用的是主從式通信方式,在某個功能按鈕按下后,上位機使用SetOutPut函數(shù)發(fā)送指令,等待系統(tǒng)設備的響應,待接收到設備響應時,響應OnComm事件,根據(jù)返回的指令設置下一次響應OnComm事件的字符數(shù)或發(fā)送相應的數(shù)據(jù)。這樣設計的優(yōu)點是結合系統(tǒng)軟件的設計,在沒有奇偶校驗等差錯控制的情況下,盡量保證發(fā)送、接收數(shù)據(jù)的完整性。避免因系統(tǒng)在數(shù)據(jù)處理時的數(shù)據(jù)丟失。經(jīng)實踐證明,這樣的辦法是可行的。 上位機軟件中的數(shù)據(jù)處理由于MFC下的編程設計許多不同的類,不同類中的成員變量與成員函數(shù)參數(shù)的類型不盡相同,因此在實現(xiàn)某些參數(shù)傳遞的過程中不免需要參數(shù)類型的轉換。這也是此次上位機軟件設計的難點之一。在軟件的編寫過程中設計了以下幾個類或參數(shù)類型:CString類:CString是一種很有用的數(shù)據(jù)類型。它們很大程度上簡化了MFC中的許多操作,使得MFC在做字符串操作的時候方便了很多。在軟件中,CString主要用來可視化輸出。Byte類型:Byte是字節(jié)類型,由于通信過程中有大量的二進制數(shù)據(jù)傳輸,因此Byte類型是必不可少的。VARIANT類型:使用MSComm控件,在發(fā)送和接收數(shù)據(jù)時,都要用到VARIANT數(shù)據(jù)類型,VARIANT實際上是一種共用體,它由各種類型的的數(shù)據(jù)成員構成。Byte轉CString:CString中保存的是字符的ASKII碼,如果直接將Byte強制轉換為CString是不行的,因為Byte保存的是二進制數(shù)據(jù)。強制轉換的結果在顯示時將出現(xiàn)亂碼。因此需要自行構造轉換函數(shù)。由于設備系統(tǒng)軟件中處理傳輸?shù)臄?shù)據(jù)為壓縮BCD碼,因此,采用移位+48地方法將Byte轉換為CString。Byte轉VARIANT:Byte不能直接轉換為VARIANT以字符串形式發(fā)送數(shù)據(jù)。這里引入CbyteArray類與COleVariant類間接進行轉換,首先使用CbyteArry的成員函數(shù)Add()將Byte依次連接成CbyteArray字符串,使用ColeVariant類將CbyteArray強制轉換為VARIANT,進行串行發(fā)送。VARIANT轉Byte:同樣,二者之間不能直接轉換,需要引入COleSafeArray類間接進行轉換?,F(xiàn)將VARIANT強制轉換為COleSafeArray,再使用COleSafeArray的GetElement成員函數(shù)將數(shù)據(jù)轉換為Byte類型。這種轉換在接收數(shù)據(jù)時出現(xiàn)。解決了類型的轉換問題,在發(fā)送、接收、數(shù)據(jù)顯示、數(shù)據(jù)運算等方面便可根據(jù)需要使用相應的數(shù)據(jù)類型了。結論與展望此次歷時一學期的設計研究工作,我受益匪淺。查閱了大量的中英文資料,做了許多驗證性試驗,為最終設計的完成打下了堅實的基礎。設計研究的過程也是一個學習的過程,其中使用的許多知識、技術是大學課程中未涉及的,這就需要在短時間內(nèi)將這些知識、技術學以致用。在這里,我將此次設計中值得注意的地方加以總結。以單片機為基礎的應用系統(tǒng)的開發(fā)是一個有序的過程,同時也是一個經(jīng)驗積累的過程。一個有豐富開發(fā)經(jīng)驗的開發(fā)人員在硬件方案討論,電路設計,軟件設計及調(diào)試的過程中能夠合理有效的開展各個階段的工作,減少錯誤的發(fā)生,縮短研發(fā)周期。因此,多看、多做能夠積累工程人員的經(jīng)驗,提高技能,在產(chǎn)品研發(fā)的過程中能夠有所突破,有所創(chuàng)新。電子技術應用廣,設計領域多。在熟悉本職的技術工作外,開發(fā)設計人員還需對其他各個行業(yè)有所了解,這樣才能使產(chǎn)品的功能更貼近實際,更合理,更行之有效。技術的革新日新月異,為了保證開發(fā)產(chǎn)品成本更低、性能更強,開發(fā)更容易,周期更短,電子電路設計開發(fā)人員需要不斷地學習掌握新技術,與時俱進。液位測量監(jiān)控系統(tǒng)的設計的基本功能的實現(xiàn),說明設計思路的可行性。然而,在本次設計中仍有許多不足。由于時間和精力有限,在上位機軟件設計上,未對數(shù)據(jù)處理模塊進行進一步的實現(xiàn)與討論。由于專業(yè)知識有限,在此僅提出自己一些淺薄的看法。先假設已有5項接收的數(shù)據(jù),如:設水箱上下液位間容積為V,水泵單位時間供水量恒定為m。設5項數(shù)據(jù)相鄰兩項間間隔時間為,,第一項至第五項總時間為T。m,V為已知量,t1~t4以及T可通過獲得的數(shù)據(jù)計算得到。設某段時間內(nèi)平均耗水量為,水泵啟動期間時平均耗水量為,水泵停止期間平均耗水量為。 通過記錄的數(shù)據(jù),經(jīng)過計算,便可獲得單位時間內(nèi)平均耗水量。大量的數(shù)據(jù),結合相應的理論算法,重中可以提取出有價值的分析與推測。與此同時,根據(jù)以上舉例數(shù)據(jù)使用Matlab繪制圖形(這個工作使用VC++編程繪制亦可以完整)如圖51:圖51 Matlab繪制圖形通過圖形,我們可以觀察直線的斜率,直觀的觀察出某一時間段耗水的快慢程度。當然,這僅僅是一個十分簡單的舉例,計算、繪圖方法不一定科學有效,僅起啟發(fā)思維的作用。在復雜的計算分析中,僅在水泵狀態(tài)變化時記錄數(shù)據(jù)往往是不夠的,一項數(shù)據(jù)的內(nèi)容也不夠豐富。我們可在系統(tǒng)程序中,多增加若干個數(shù)據(jù)記錄點記錄數(shù)據(jù)。同時可增加實時高低液位間容積數(shù)據(jù)等內(nèi)容,完善數(shù)據(jù)結構。盡管系統(tǒng)設計在始終工作地情況下,沒有考慮現(xiàn)實中萬一掉電的數(shù)據(jù)保護問題,解決這個方法可以擴展大容量FLASH存儲器,即使掉電,已經(jīng)保存的數(shù)據(jù)也不會丟失。本設計中沒有加入系統(tǒng)冗余設計,結合實際情況,可增加看門狗電路,或使用單片機內(nèi)部看門狗,防止程序跑飛。人多水少,水資源時空分布不均,水土資源與經(jīng)濟社會發(fā)展布局不相匹配,是我國的基本水情。宏觀上講,通過對液位變化的分析,統(tǒng)計某一地區(qū)用水量,對水資源的統(tǒng)籌調(diào)配是有意義的。微觀上說,根據(jù)統(tǒng)計出數(shù)據(jù)計算某一水箱在一定得統(tǒng)計規(guī)律中最佳的高低警戒線位置,從而減少水泵啟動次數(shù),降低能源消耗,延長水泵受用壽命。在“十二五”期間,水利政策正在進一步完善,水利基礎建設正在逐步走向現(xiàn)代化。在我黨科學發(fā)展觀的指導下,新型、環(huán)保、具有可持續(xù)發(fā)展設計思想的設備儀器正逐步被人們重視。致 謝本論文是在高文根老師的悉心指導下完成的。導師淵博的專業(yè)知識,嚴謹?shù)闹螌W態(tài)度,精益求精的工作作風,誨人不倦的高尚師德,嚴以律己、寬以待人的崇高風范,樸實無華、平易近人的人格魅力對我影響深遠。本論文從選題到完成,每一步都是在導師的指導下完成的,傾注了導師大量的心血。在此,謹向導師表示崇高的敬意和衷心的感謝!本論文的順利完成,離不開各位老師、同學和朋友的關心和幫助。在此表示深深的感謝! 作者: 2011 年 06 月 15 日參考文獻[1]張毅剛,彭喜元,[M].北京:高等教育出版社,2003.[2]李書旗,[J].計算機測量與控制,2009,17(11):21312133.[3]鄭偉建,夏揚,[J].計算機仿真,2009,26(10):190193.[4][J].現(xiàn)代電子技術,2009,32(2):5153.[5][J].儀器儀表用戶,2007,14(4):4445.[6]陳霞,[J].武漢理工大學學報,2007,29(3):35.[7]陳新昌,王萬章,[J].中國科技信息,2006,(24):8990,94.[8]蘇曉龍,[J].儀表技術與傳感器,2007,(12).[9] VIEW的液位監(jiān)控系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學,2007.[10][D].北京:北方工業(yè)大學,2010.[11]任開春,[J].工業(yè)儀表與自動化裝置,2003,(5):1216.[12]柳軍,[J].中國醫(yī)療設備,2009,24(12):2730.[13][J].安陽師范學院學報,2005(2):7173.[14]:Protel 99SE入門與提高[M].北京:人民郵電出版社,2007.[15][M].西安:西安電子科技大學出版社,2003.[16][M].北京:電子工業(yè)出版社,2003.[17]劉鯤,[M].北京:人民郵電出版社,2008.[18]姚振東,[J].傳感器世界,2000,(9):47.[19] Maurice Wilkes. Progress in Computers [J]. IEEE Trans on PE, Feb 2004,():470472. [20] Jae Hyeong Seo, Cang Ho Choi. A new simplified SpaceVector PWM Method for ThreelevelInverters [J].IEEE Trans on PE, July 2001, ():545550.附 錄 A 系統(tǒng)電路原理圖附 錄 B 外文文獻及譯文Progress in ComputersPrestige Lecture delivered to IEE, Cambridge, on 5 February 2004Maurice WilkesComputer LaboratoryUniversity of CambridgeThe first stored program puters began to work around 1950. The one we built in Cambridge, the EDSAC was first used in the summer of 1949.These early experimental puters were built by people like myself with varying backgrounds. We all had extensive experience in electronic engineering and were confident that that experience would stand us in good stead. This proved true, although we had some new things to learn. The most important of these was that transients must be treated correctly。 what would cause a harmless flash on the screen of a television set could lead to a serious error in a puter.As far as puting circuits were concerned, we found ourselves with an embarass de richess. For example, we could use vacuum tube diodes for gates as we did in the EDSAC or pentodes with control signals on both grids, a system widely used elsewhere. This sort of choice persisted and the term families of logic came into use. Those who have worked in the puter field will remember TTL, ECL and CMOS. Of these, CMOS has now bee dominant.In those early