發布日期:2022-10-09 點擊率:112
OFweek智能硬件網訊 用LabVIEW做了一個智能家居報警系統的上位機軟件,挺好玩的,雖然功能不多、結構也簡單,但是,所用到的技術對于學習LabVIEW的人來說很重要。
首先,貼出前面板的圖片來。單片機向上位機發送的幀格式為:0x0A+3字節的溫度數據+0x0B+4字節的煙霧濃度數據+0x0C+1字節的開關門信號(總共11個字節),發送的波特率為9600,發送周期為200ms。上位機采集軟件每隔10ms(就是前面板上的隊列循環周期)從串口緩存區里讀取11個字節的數據,然后將其進行解析和顯示。
圖1 軟件的前面板截圖(點擊圖片查看大圖)
然后,再把程序框圖一一給大家亮出來。
圖2 串口配置和串口收/發的程序圖(點擊圖片查看大圖)
如圖2所示,VISA每隔10ms從串口緩存區讀取11個字節的數據,然后將數據送入串口接收數據隊列中。這里采用的是生產者-消費者模型的循環結構,讀串口采用的是生產者循環結構,解析數據采用的是消費者循環結構。
圖3 數據解析和數據顯示部分的程序圖(點擊圖片查看大圖)
如圖3所示,消費者循環用于解析數據,根據0x0A、0x0B、0x0C三個屬性字節分別對溫度值、煙霧濃度值以及開關門信號進行解析和顯示,波形顯示采用的是波形圖表,溫度值可通過溫度計顯示,煙霧濃度可通過指針式儀表盤顯示,顯示效果直觀、大方。
圖4 聲音報警部分的程序圖(點擊圖片查看大圖)
如圖4所示是聲音報警部分的程序圖,上半部分是溫度報警程序,報警聲音持續時間為2秒鐘,報警聲頻率為3KHz;下半部分是煙霧濃度報警程序,報警聲音持續時間為1秒鐘,報警聲頻率為1KHz。由于聲音報警持續的時間為1~2秒鐘,如果將報警程序放在解析數據的那個大循環里,則會導致大循環的執行被延遲1~2秒鐘,因此,必須將報警程序提出來單獨寫,從而使之變成了兩個獨立運行的線程。
以上就是對本軟件的介紹,本軟件依然存在一些小BUG,比如說:有時候第一次啟動這個軟件后,串口讀到的數據幀并不是0x0A+3字節的溫度數據+0x0B+4字節的煙霧濃度數據+0x0C+1字節的開關門信號,通過探針我看到的是1字節的開關門信號+0x0A+3字節的溫度數據+0x0B+4字節的煙霧濃度數據+0x0C,開關門信號跑到幀首去了,出現了斷幀的現象。這個結果是由設置串口每次讀取11個字節引起的,當串口緩存區里的字節數大于11時就會出現這種結局,因此,需要在開啟軟件之后對串口緩存區進行清除操作,并且要求讀串口的速率大于單片機發送數據的速率。
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV