|
XX學(xué)院
單片機系統(tǒng)設(shè)計三級項目
設(shè)計說明書
(2011/2012學(xué)年第二學(xué)期)
題 目 :基于單片機的水位檢測報警系統(tǒng)_
專業(yè)班級 : XXXXXXXX
學(xué)生姓名 : XXX XX
學(xué) 號: XXXXX
指導(dǎo)教師 :XXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXX
設(shè)計周數(shù) : XXXXXXXXX
設(shè)計成績 :
XXXX年XX月XX日
XX學(xué)院
單片機系統(tǒng)設(shè)計 三級項目任務(wù)書
一、題目: 基于單片機基于單片機的水位檢測報警系統(tǒng)設(shè)計與實現(xiàn)
二、參與項目班級: XXXXXXXXXXXXXX
三、項目起止時間: XXXXXXXXXXXXXXXXXXXXX
四、原始數(shù)據(jù)及主要任務(wù):
原始數(shù)據(jù):水位傳感器;51單片機;揚聲器。
主要任務(wù):⑴根據(jù)技術(shù)要求和現(xiàn)有開發(fā)環(huán)境,分析設(shè)計題目;⑵設(shè)計系統(tǒng)實現(xiàn)的方案;⑶設(shè)計并繪制電路原理圖;⑷畫出功能模塊的程序流程圖;⑸使用匯編語言(或C語言)編寫實現(xiàn)程序;⑹結(jié)合硬件調(diào)試、修改并完善程序;⑺編寫項目報告。
五、技術(shù)要求:
⑴利用單片機及揚聲器、水位傳感器等器件設(shè)計;
⑵將探測到的水位變化信號轉(zhuǎn)換為電壓信號,經(jīng)調(diào)理電路整形處理為TTL電平送入單片機;
⑶單片機對送入的信號進行數(shù)據(jù)處理,在LED或LCD上進行水位顯示,超出水位警戒線時發(fā)出報警提示。
學(xué) 生(簽字): 系 主 任(簽字):
指導(dǎo)教師(簽字): 院 長 (簽字):
目錄
1.項目設(shè)計要求與任務(wù) 3
2.項目設(shè)計正文 3
2.1 課題背景及研究意義分析 3
2.2 課題現(xiàn)狀 4
2.3 設(shè)計思路及方案 4
2.3.1 水位傳感方式的選擇 4
2.3.2 水位傳感器的特點及應(yīng)用 5
2.4系統(tǒng)的組成 6
2.4.1系統(tǒng)工作原理 6
2.4.2穩(wěn)壓電路 6
2.4.3水位顯示電路 7
2.4.4振蕩電路和復(fù)位電路 8
2.4.5自動報警電路 8
3.水位檢測系統(tǒng)的整體電路仿真圖 9
3.1硬件連接實物圖 9
4. 各種水位下的仿真圖 10
4.1 高水位狀態(tài)下仿真圖 10
4.2 低水位狀態(tài)下仿真圖 10
5. 通信單元硬件設(shè)計 11
6.上位機顯示單元 11
6.1上位機接受部分窗體控件 12
7. 項目設(shè)計總結(jié) 14
8. 參考文獻 15
附錄1 16
1設(shè)計要求與任務(wù)
設(shè)計要求:⑴利用單片機及揚聲器、水位傳感器等器件設(shè)計;⑵將探測到的水位變化信號轉(zhuǎn)換為電壓信號,經(jīng)調(diào)理電路整形處理為TTL電平送入單片機;⑶單片機對送入的信號進行數(shù)據(jù)處理,在LED或LCD上進行水位顯示,超出水位警戒線時發(fā)出報警提示。
原始數(shù)據(jù):水位傳感器;51單片機;揚聲器。
主要任務(wù):⑴根據(jù)技術(shù)要求和現(xiàn)有開發(fā)環(huán)境,分析設(shè)計題目;⑵設(shè)計系統(tǒng)實現(xiàn)的方案;⑶設(shè)計并繪制電路原理圖;⑷畫出功能模塊的程序流程圖;⑸使用匯編語言(或C語言)編寫實現(xiàn)程序;⑹結(jié)合硬件調(diào)試、修改并完善程序;⑺編寫項目報告。
2 項目設(shè)計正文
2.1 課題背景及研究意義分析:
在工農(nóng)業(yè)生產(chǎn)中,常常需要測量液體液位。隨著國家工業(yè)的迅速發(fā)展,液位測量技術(shù)被廣泛應(yīng)用到石油、化工、醫(yī)藥、食品等各行各業(yè)中。低溫液體(液氧、液氮、液氬、液化天然氣及液體二氧化碳等)得到廣泛的應(yīng)用,作為貯存低溫液體的容器要保證能承受其載荷;在發(fā)電廠、煉鋼廠中,保持正常的鍋爐汽包水位、除氧器水位、汽輪機凝氣器水位、高、低壓加熱器水位等,是設(shè)備安全運行的保證;在教學(xué)與科學(xué)研究中,也經(jīng)常碰到需要進行液位控制的實驗裝置。
本設(shè)計是利用STC89C52單片機設(shè)計一種水位控制系統(tǒng)。主要是基于單片機的硬件設(shè)計以及程序設(shè)計, 包括測量電路部分、鍵盤輸入控制部分、液位實時數(shù)顯輸出部分以及液位控制部分,還在此基礎(chǔ)上添加報警器。本設(shè)計只是概念性設(shè)計了電路部分,并不涉及具體的數(shù)值設(shè)定,經(jīng)過了實際應(yīng)用檢測。
該系統(tǒng)實現(xiàn)了水位監(jiān)測,水位控制,水位顯示,故障報警功能。在設(shè)計中主要采用了傳感技術(shù)、單片機技術(shù)、弱電控制強電技術(shù)、C語言編程等技術(shù)。本文還講述了水位控制系統(tǒng)工作的基本原理,介紹了電路接口原理圖,給出了相應(yīng)了設(shè)計流程圖和C語言程序。
本文主要是為了更多得了解單片機,掌握單片機的組成部分和控制原理,最終達到設(shè)計出“單片機水位控制系統(tǒng)的”的目的。實驗證明,單片機控制的水位控制系統(tǒng)的硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,充分發(fā)揮了單片機的性能,可以大大的提高單片機的開發(fā)效率。
2.2 課題現(xiàn)狀
目前,市面上進行液位測量的儀表種類繁多,但是同時具有測量、監(jiān)控、數(shù)據(jù)記錄及處理的液位測量裝置并不多。在某些工業(yè)控制系統(tǒng)中,數(shù)據(jù)的測量這一基本功能已不能滿足現(xiàn)代工業(yè)的要求,往往需要對大批數(shù)據(jù)進行記錄,對其進行后期處理分析,實現(xiàn)差錯控制、工藝改善、資源優(yōu)化等一系列工作。為了獲得大批量的數(shù)據(jù),得到可靠的分析資料,往往需要長期、多網(wǎng)點的監(jiān)控記錄。在液位測量這一領(lǐng)域中,如江河湖海、城市用水等方面,大量數(shù)據(jù)長時間,多網(wǎng)點的采集記錄分析具有普遍的意義。液位的變化分析,有助于人們進一步對自然環(huán)境、天氣變化甚至是災(zāi)害預(yù)警提供可靠的支持。
單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨即存儲器RAM,只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器、計時器等功能集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。
中央處理器CPU是單片微型計算機指揮、執(zhí)行中心,由它讀程序并執(zhí)行指令。CPU功能,是以不同方式來執(zhí)行各種指令。有的指令涉及到各個寄存器之間的關(guān)系;有的指令涉及到單片機核心電路內(nèi)部各功能部件的關(guān)系;有的則與外部器件發(fā)生關(guān)系。總的來說CPU是通過復(fù)雜的時序電路來完成不同的指令功能的。
對于本設(shè)計單片機結(jié)構(gòu)簡單實用性強,功能齊全,技術(shù)先進,使實現(xiàn)這設(shè)計不難實現(xiàn)。同時,C語言是單片機的重要“組成”,如果能掌握好C語言編程,這將很大程度上提高了開發(fā)效率。
在設(shè)計過程中我們采用了軟硬件雙結(jié)合的方式,軟件設(shè)計的方法簡化了硬件的要求,為設(shè)計創(chuàng)造了條件。單片機采用的STC89C52的單片機。
2.3 設(shè)計思路及方案
2.3.1水位傳感方式的選擇
簡單的控制方式有浮標(biāo)式、電極式等,這些控制方式的優(yōu)點是結(jié)構(gòu)簡單,成本低廉。但有很多問題存在,比如是精度不高,不能進行數(shù)值顯示,另外很容易引起誤查,且只能單獨控制,與計算機進行通信連接比較難實現(xiàn),很難快速準(zhǔn)確傳輸信號,所以不利于水位信號的傳送。
2.3.2水位傳感器的特點及應(yīng)用
水位浮球開關(guān)特點:1小型浮球液位開關(guān)是一種結(jié)構(gòu)簡單,使用方便的液位控制零件,它設(shè)有復(fù)雜的電路,不會受到干擾,只要材質(zhì)選擇正確,任何性質(zhì)液體、壓力、溫度皆可使用。液體介質(zhì)性質(zhì)與浮球關(guān)系:2液體比重不同時,浮球的動作位置將會有所變動,一般SG比水小時,浮球浸在液體中部分將相對增多。3浮球開關(guān)產(chǎn)品參考比重以水(SG=1)所以使用時在選用浮球時須考慮液位的比重SG,一定大于浮球規(guī)格所標(biāo)示,否則,浮球開關(guān)無法浮動。4粘度高不會干涸的液體,一般應(yīng)選用外徑較大的不銹鋼浮球。5浮球開關(guān)是使用磁鐵來感應(yīng)磁簧開關(guān),因此被測液位應(yīng)無鐵屑,否則鐵屑粘在浮球上面浮球浮不起來會影響浮球隊開關(guān)的動作。用途:不銹鋼浮球液位開關(guān)專門用于各種中小型常壓和受壓儲液罐的液位檢測、信號遠傳、開關(guān)報警,可適用于各種衛(wèi)生、環(huán)保、有毒、帶濃酸堿腐蝕性強介液體使用。
圖1 水位浮球式傳感器及工作原理
浮子開關(guān)是利用開關(guān)上面磁性浮子隨液位升或降,使開關(guān)檢測管內(nèi)設(shè)定位置的干簧管芯片動作,發(fā)出接點開(關(guān))轉(zhuǎn)換信號。
動作原理:在密閉的非導(dǎo)磁性管內(nèi)安裝有一個或多個干簧管,然后將此管穿過一個或多個中空且內(nèi)部有環(huán)形磁鐵的浮球,液體的上升或下降將帶動浮球一起上下移動,從而使該非導(dǎo)磁性管內(nèi)的干簧管產(chǎn)生吸合或斷開的動作,從而輸出一個開關(guān)信號,也叫做無源觸點信號。
應(yīng)用范圍:
我們常見的浮子開關(guān)一般水箱里面控制水位,用水箱高液位或者低液位報警作用。還可以用在飲水機、空調(diào)、加濕器、霧化器、空壓機、凈水器、水箱、熱水爐、水池、油箱、油罐、壓力罐、一些有酸堿液體的大小型設(shè)備。
適用范圍廣、安裝形式多樣側(cè)裝、直裝、頂部和底部安裝、螺紋法蘭安裝達到多點液位報警效果。
無源器件,性能穩(wěn)定可靠,安全方便,抗干擾能力強,結(jié)構(gòu)簡單,安裝方便,維護費用低。
2.4系統(tǒng)的組成
水位控制系統(tǒng)由電源電路、水位探測傳感電路、穩(wěn)壓電路、繼電器控制電機加水電路、水位顯示電路、單片機STC89C52組成。系統(tǒng)組成的方框圖如下:
圖2 系統(tǒng)組成方框圖
2.4.1系統(tǒng)工作原理
當(dāng)水箱里的水位在低水位的時候傳感器傳給穩(wěn)壓電路一個低電平,低電平通過穩(wěn)壓電路里的NPN三極管、電容、電阻轉(zhuǎn)換成高電平。單片機收到高電平,表示水箱里沒有水了需要系統(tǒng)開始運作,給水箱加水,這時單片機通知紅燈緩慢閃爍,蜂鳴器報警。水位達到高水位時傳感器同時傳送給單片機一個低電平,紅燈閃爍頻率加快,蜂鳴器報警頻率加快。
同理,水位從高水位下降時,水位離開高水位線時,高水位傳感器探頭與電源斷開,傳感器輸出高電平給單片機。當(dāng)水位下降到蓄水位時,紅燈閃爍變慢。2.4.2穩(wěn)壓電路
圖3 穩(wěn)壓電路圖
本電路的主要作用是使從傳感器輸入的電平能夠穩(wěn)定的輸入到單片機中,,是由三極管9013、兩個電阻、和一個無極性電容組成。
如果我們不使用此穩(wěn)壓電路也能實現(xiàn)我們的設(shè)計目的,但有時會產(chǎn)生水位誤判和不穩(wěn)定現(xiàn)象,所以我認(rèn)為此電路是不可缺少的。
2.4.3水位顯示電路
圖4 水位顯示電路圖
本電路采用不不同顏色的LED作為顯示裝置,有單片機P2.0、P2.3口控制進行水位顯示。紅燈閃爍緩慢代表水位在低水位。紅燈閃爍急促表示在高水位以上。
此電路采用的是共陽極的,所以只有單片機給發(fā)光二極管為低電平的時候才能是發(fā)光二極管點亮。R1, R4,為上拉電阻起限壓控流作用。
LED(Light Emitting Diode),發(fā)光二極管,是一種固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。LED的心臟是一個半導(dǎo)體的晶片,晶片的一端附著LED燈株在一個支架上,一端是負(fù)極,另一端連接電源的正極,使整個晶片被環(huán)氧樹脂封裝起來。半導(dǎo)體晶片由兩部分組成,一部分是P型半導(dǎo)體,在它里面空穴占主導(dǎo)地位,另一端是N型半導(dǎo)體,在這邊主要是電子。但這兩種半導(dǎo)體連接起來的時候,它們之間就形成一個“P-N結(jié)”。當(dāng)電流通過導(dǎo)線作用于這個晶片的時候,電子就會被推向P區(qū),在P區(qū)里電子跟空穴復(fù)合,然后就會以光子的形式發(fā)出能量,這就是LED發(fā)光的原理。而光的波長決定光的顏色,是由形成P-N結(jié)材料決定的。
2.4.4振蕩電路和復(fù)位電路
圖5 振蕩電路和復(fù)位電路圖
振蕩電路和復(fù)位電路是單片機不可缺少的部分,是單片機的重要組成,它們集成在單片機里,對于單片機穩(wěn)定工作有至關(guān)重要的作用。并且可以延長它的使用壽命。
2.4.5自動報警電路
下列二種情況發(fā)生系統(tǒng)報警:
1當(dāng)水位達到上限極限水位時報警,水位到達上限極限水位時系統(tǒng)發(fā)出報警;
2當(dāng)水位達到下限極限水位時報警,水位到達下限極限水位時系統(tǒng)發(fā)出報警;
圖6 自動報警電路的接線圖
3水位檢測系統(tǒng)的整體電路仿真圖
圖7 水位控制系統(tǒng)仿真圖
3.1實物圖
圖8 實物圖
4 各種水位情況下的仿真圖
4.1 高水位狀態(tài)
加水水到達在蓄水位時:高水位警示燈紅燈閃爍急促,蜂鳴器快頻率鳴叫。仿真圖如下所示:
圖9高水位仿真圖
4.2 低水位狀態(tài)
水位減少到低水位時:低水位警示紅燈閃爍,蜂鳴器低頻率鳴叫。仿真圖如下所示:
圖10 低水位仿真圖
5通信單元硬件設(shè)計
MAX485僅有8個管腳,電路設(shè)計比較簡單。
RO引腳接到單片機串口接收引腳RXD(P3.0),DI引腳接到單片機串口發(fā)送引腳TXD(P3.1)。由于MAX485為半雙工通信方式,不能同時發(fā)送和接收數(shù)據(jù),只能通過控制RE和DE引腳的狀態(tài)來進行發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的轉(zhuǎn)換。為了節(jié)省單片機I/O口資源,將RE和DE引腳連在一起,輸入低電平時,MAX485處于接收狀態(tài);輸入高電平時,其處于發(fā)送數(shù)據(jù)狀態(tài)。定義RE和DE連接在一起的網(wǎng)絡(luò)標(biāo)號為E,接入單片機P1口,用于發(fā)送與接收的轉(zhuǎn)換。A,B端為發(fā)送接收差分信號端,一般需在A,B端之間加匹配電阻,匹配電阻為120Ω。
硬件電路如圖3-13:
圖12 串行通信模塊電路圖
6上位機顯示單元
上位機編程與下位機結(jié)合對應(yīng),下位機發(fā)“0”代表當(dāng)前水位為高水位,下位機發(fā)“1” 代表當(dāng)前水位為低水位。
水位變化當(dāng)高水位發(fā)“0”時上位機接受到對應(yīng)ASCII碼為48,此時上位機顯示“警戒!當(dāng)前水位為高水位!”。
水位變化當(dāng)高水位發(fā)“1”時上位機接受到對應(yīng)ASCII碼為49,此時上位機顯示“警戒!當(dāng)前水位太低!”。
圖13 上位機程序代碼
6.1上位機接受部分控件窗體
圖14 水位檢測報警系統(tǒng)窗體
7設(shè)計總結(jié)
通過這次項目設(shè)計,上位機和下位機的編程中我對軟件開發(fā)有了進步的了解,把理論知識應(yīng)用于實驗中。也讓我重新熟悉了C語言和C#語言的相關(guān)內(nèi)容,加深了對C語言、C#語言知識的深化和用途的理解。在這次的項目設(shè)計過程中,我發(fā)現(xiàn)自己的基礎(chǔ)知識和應(yīng)用能力都很差。剛接過項目,按照設(shè)計步驟走的時候,在很多都卡住了,原理的知識忘記了很多,以至于在設(shè)計開始時必須得先復(fù)習(xí)一下相關(guān)的基礎(chǔ)知識。
在老師和同學(xué)的幫助下我順利的完成了這次項目設(shè)計,對于我來說,收獲最大的是方法和能力;那些分析和解決問題的能力。在整個項目設(shè)計的過程中,我發(fā)現(xiàn)我們學(xué)生在經(jīng)驗方面十分缺乏,空有理論知識,沒有理性的知識;有些東西可能與實際脫節(jié)。總體來說,我覺得像課程設(shè)計這種類型的作業(yè)對我們的幫助還是很大的,它需要我們將學(xué)過的相關(guān)知識系統(tǒng)地聯(lián)系起來,從中暴露出自身的不足,以待改進!
本次的項目設(shè)計,培養(yǎng)了我們綜合應(yīng)用設(shè)計項目及其他項目的理論知識和理論聯(lián)系實際,應(yīng)用生產(chǎn)實際知識解決工程實際問題的能力;在設(shè)計的過程中還培養(yǎng)出了我們的團隊精神,同學(xué)們共同協(xié)作,解決了許多個人無法解決的問題;在今后的學(xué)習(xí)過程中我們會更加努力和團結(jié)。
我決定認(rèn)真總結(jié)這次項目設(shè)計的經(jīng)驗,以及學(xué)習(xí)到的知識,來更加的充實自己的頭腦和完善自己的知識結(jié)構(gòu)。另外,我也在這次設(shè)計中看到了自己的許多不足之處,通過項目設(shè)計,發(fā)現(xiàn)自己在理論研究和實際工作能力等方面都得到了提高,同時在老師的指導(dǎo)和課題組同學(xué)的共同幫助下,及時總結(jié)研究成果,這些無疑會對我今后的工作和學(xué)習(xí)帶來很大的幫助。總之,這次的課程設(shè)計的順利完成使我受益匪淺。
要做好一個項目的設(shè)計,就必須做到:在設(shè)計程序之前,對所用單片機的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片機有哪些資源;要有一個清晰的思路和一個完整的軟件流程圖;在設(shè)計程序時,不能妄想一次將整個程序設(shè)計好,反復(fù)修改、不斷改進是程序設(shè)計的必經(jīng)之路;要養(yǎng)成注釋程序的好習(xí)慣,這樣為資料的保留和交流提供了方便;在設(shè)計中遇到的問題要記錄,以免下次遇到同樣的問題。
在這次的項目設(shè)計中,我真正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實際,把我們所學(xué)的理論知識用到實際當(dāng)中,學(xué)習(xí)單片機更是如此,程序只有在經(jīng)常寫與讀的過程中才能提高,這就是這次項目設(shè)計的最大收獲。
8 參考文獻
[1]王祁. 智能儀器設(shè)計基礎(chǔ)[M]. 北京:機械工業(yè)出版社,2009.
[2]張毅剛,彭喜元,董繼成.單片機原理及應(yīng)用[M].北京:高等教育出版社,2003.
[3]蔡黎.一種基于單片機的水位控制系統(tǒng)設(shè)計[J].儀器儀表用戶,2007,14(4):44-45.
[4]李書旗,沈金榮.液位測量傳感器系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機測量與控制,2009,17(11):2131-2133.
[5]王洪君.單片機原理及應(yīng)用[M]. 濟南:山東大學(xué)出版社,2009
[6]閻石. 數(shù)字電子技術(shù)基礎(chǔ)[M]. 北京:高等教育出版社,2006.
[7]劉得營,張志霞等.單片機原理及接口技術(shù)[M].中國水利水電出版社 2006.3-4
[8]劉剛 《單片機原理及應(yīng)用》 中國林業(yè)出版社
評 語
成 績
指導(dǎo)教師
(簽字)
年 月 日
附錄1
上位機程序設(shè)計
水位檢測報警系統(tǒng)C#語言程序如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
namespace 水位檢測報警系統(tǒng)上位機控制
{
public partial class Form1 : Form
{
SerialPort port;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
String[] PortNames = SerialPort.GetPortNames();
comboBoxPort.Items.Clear();
if (PortNames.Length > 0)
{
for (Int32 i = 0; i < PortNames.Length; i++)
{
comboBoxPort.Items.Add(PortNames);
}
comboBoxPort.SelectedIndex = 0;
comboBoxBaudRate.SelectedIndex = 1;
comboBoxData.SelectedIndex = 0;
comboBoxStop.SelectedIndex = 1;
}
else
{comboBoxPort.Text = "無串口"; }
btnClosePort.Enabled = false;
}
public delegate void showInfo(string str);
byte[] cmd = new byte[2];
Thread t;
private void btnOpenPort_Click(object sender, EventArgs e)
{
port = new SerialPort();
port.PortName = comboBoxPort.SelectedItem.ToString();
port.BaudRate = Convert.ToInt32(comboBoxBaudRate.SelectedItem);
port.Parity = Parity.None;
port.DataBits = Convert.ToInt16(comboBoxData.SelectedItem);
port.StopBits = StopBits.One;
if (port.IsOpen == false)
{
try
{
port.Open();
t = new Thread(new ThreadStart(RecieveData));
t.Start();
listBox1.Items.Add("串口打開成功!");
btnClosePort.Enabled = true;
btnOpenPort.Enabled = false;
comboBoxBaudRate.Enabled = false;
comboBoxData.Enabled = false;
comboBoxPort.Enabled = false;
comboBoxStop.Enabled = false;
}
catch {
listBox1.Items.Add("串口打開失敗");
}
}
}
private void RecieveData()
{
while (true)
{
int str;
float st;
string info;
str = port.ReadByte();
switch (str)
{
case 48:
info = "警戒!當(dāng)前水位為高水位!";
break;
case 49:
info = "警戒!當(dāng)前水位太低!";
break;
default:
info = "接收數(shù)據(jù)失敗,無法知道當(dāng)前水位!";
break;
}
showinfo(info);
}
}
public void showinfo(string str)
{
if (listBox1.InvokeRequired)
{
showInfo d = new showInfo(showinfo);
listBox1.Invoke(d, str);
}
else
{
listBox1.Items.Add(str);
listBox1.SelectedIndex = listBox1.Items.Count - 1;
}
}
private void btnClosePort_Click(object sender, EventArgs e)
{
if(t.IsAlive)
{
t.Abort();
}
try
{
port.Close();
listBox1.Items.Add("串口關(guān)閉成功!");
btnOpenPort.Enabled = true;
comboBoxBaudRate.Enabled = true;
comboBoxData.Enabled = true;
comboBoxPort.Enabled = true;
comboBoxStop.Enabled = true;
btnClosePort.Enabled = false;
}
catch {
listBox1.Items.Add("串口關(guān)閉失敗!");
}
}
private void btnOpen_Click(object sender, EventArgs e)
{
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void comboBoxStop_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (t.IsAlive)
{
t.Abort();
}
try
{
port.Close();
listBox1.Items.Add("串口關(guān)閉成功!");
}
catch
{
listBox1.Items.Add("串口關(guān)閉失敗!");
}
}
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
}
}
}
|
|