新聞中心

EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于LabVIEW的智能家居報(bào)警系統(tǒng)

基于LabVIEW的智能家居報(bào)警系統(tǒng)

作者: 時(shí)間:2016-12-27 來源:網(wǎng)絡(luò) 收藏
昨天晚上,幫師弟用LabVIEW做了一個(gè)智能家居報(bào)警系統(tǒng)的上位機(jī)軟件,挺好玩的,雖然功能不多、結(jié)構(gòu)也簡單,但是,所用到的技術(shù)對(duì)于學(xué)習(xí)LabVIEW的人來說很重要。

首先,貼出前面板的圖片來。單片機(jī)向上位機(jī)發(fā)送的幀格式為:0x0A+3字節(jié)的溫度數(shù)據(jù)+0x0B+4字節(jié)的煙霧濃度數(shù)據(jù)+0x0C+1字節(jié)的開關(guān)門信號(hào)(總共11個(gè)字節(jié)),發(fā)送的波特率為9600,發(fā)送周期為200ms。上位機(jī)采集軟件每隔10ms(就是前面板上的隊(duì)列循環(huán)周期)從串口緩存區(qū)里讀取11個(gè)字節(jié)的數(shù)據(jù),然后將其進(jìn)行解析和顯示。

本文引用地址:http://m.butianyuan.cn/article/201612/334160.htm

圖1 軟件的前面板截圖

然后,再把程序框圖一一給大家亮出來。

圖2 串口配置和串口收/發(fā)的程序圖

如圖2所示,VISA每隔10ms從串口緩存區(qū)讀取11個(gè)字節(jié)的數(shù)據(jù),然后將數(shù)據(jù)送入串口接收數(shù)據(jù)隊(duì)列中。這里采用的是生產(chǎn)者-消費(fèi)者模型的循環(huán)結(jié)構(gòu),讀串口采用的是生產(chǎn)者循環(huán)結(jié)構(gòu),解析數(shù)據(jù)采用的是消費(fèi)者循環(huán)結(jié)構(gòu)。

圖3 數(shù)據(jù)解析和數(shù)據(jù)顯示部分的程序圖

如圖3所示,消費(fèi)者循環(huán)用于解析數(shù)據(jù),根據(jù)0x0A、0x0B、0x0C三個(gè)屬性字節(jié)分別對(duì)溫度值、煙霧濃度值以及開關(guān)門信號(hào)進(jìn)行解析和顯示,波形顯示采用的是波形圖表,溫度值可通過溫度計(jì)顯示,煙霧濃度可通過指針式儀表盤顯示,顯示效果直觀、大方。

圖4 聲音報(bào)警部分的程序圖

如圖4所示是聲音報(bào)警部分的程序圖,上半部分是溫度報(bào)警程序,報(bào)警聲音持續(xù)時(shí)間為2秒鐘,報(bào)警聲頻率為3KHz;下半部分是煙霧濃度報(bào)警程序,報(bào)警聲音持續(xù)時(shí)間為1秒鐘,報(bào)警聲頻率為1KHz。由于聲音報(bào)警持續(xù)的時(shí)間為1~2秒鐘,如果將報(bào)警程序放在解析數(shù)據(jù)的那個(gè)大循環(huán)里,則會(huì)導(dǎo)致大循環(huán)的執(zhí)行被延遲1~2秒鐘,因此,必須將報(bào)警程序提出來單獨(dú)寫,從而使之變成了兩個(gè)獨(dú)立運(yùn)行的線程。

以上就是對(duì)本軟件的介紹,本軟件依然存在一些小BUG,比如說:有時(shí)候第一次啟動(dòng)這個(gè)軟件后,串口讀到的數(shù)據(jù)幀并不是0x0A+3字節(jié)的溫度數(shù)據(jù)+0x0B+4字節(jié)的煙霧濃度數(shù)據(jù)+0x0C+1字節(jié)的開關(guān)門信號(hào),通過探針我看到的是1字節(jié)的開關(guān)門信號(hào)+0x0A+3字節(jié)的溫度數(shù)據(jù)+0x0B+4字節(jié)的煙霧濃度數(shù)據(jù)+0x0C,開關(guān)門信號(hào)跑到幀首去了,出現(xiàn)了斷幀的現(xiàn)象。這個(gè)結(jié)果是由設(shè)置串口每次讀取11個(gè)字節(jié)引起的,當(dāng)串口緩存區(qū)里的字節(jié)數(shù)大于11時(shí)就會(huì)出現(xiàn)這種結(jié)局,因此,需要在開啟軟件之后對(duì)串口緩存區(qū)進(jìn)行清除操作,并且要求讀串口的速率大于單片機(jī)發(fā)送數(shù)據(jù)的速率。



評(píng)論


技術(shù)專區(qū)

關(guān)閉