鄭 旭 耿 健 王玉亮
(南京熊貓漢達科技有限公司,江蘇南京210000)
實驗室中對溫濕度的監(jiān)測有著很高的要求,比如在長度計量中,溫度發(fā)生零點幾攝氏度的變化就可能對測量結(jié)果產(chǎn)生很大的影響。公司目前是使用機械式溫濕度計和數(shù)顯溫濕度計采集溫濕度,溫濕度記錄由人工填寫,溫濕度的準(zhǔn)確性和數(shù)據(jù)記錄的連續(xù)性都無法保證,所以迫切需要研制一套溫濕度自動采集監(jiān)控系統(tǒng),以滿足平時工作的需求。本項目旨在開發(fā)一套溫濕度自動采集監(jiān)控系統(tǒng),對整個實驗室的工作環(huán)境進行實時監(jiān)測。
采集通道數(shù):16路;溫度測量范圍:-40~125℃;相對濕度測量范圍:0~99%RH;準(zhǔn)確度:溫度±0.2℃、相對濕度±3%RH;分辨力:溫度0.1℃、相對濕度1%RH。
在Visual C#中UDP協(xié)議的實現(xiàn),最為常用也是最為關(guān)鍵的類就是UdpClient類,UdpClient類位于命名空間System.Net.Sockets中,Visual C#中UDP數(shù)據(jù)包的發(fā)送、接收都是通過UdpClient類實現(xiàn)的。下面對UdpClient類中常用方法和屬性進行簡要說明。
2.1.1 常用方法說明
Close:關(guān)閉UDP連接。
Connect:建立與遠程主機的連接。
Receive:返回已由遠程主機發(fā)送的UDP數(shù)據(jù)包。Send:將UDP數(shù)據(jù)包發(fā)送到遠程主機。
2.1.2 常用屬性說明
Active:獲取或設(shè)置一個值,該值指示是否已建立了與遠程主機的連接。
Client:獲取或設(shè)置基礎(chǔ)網(wǎng)絡(luò)套接字。
2.1.3 C#中UdpClient類發(fā)送UDP數(shù)據(jù)包
“Send”方法的調(diào)用語法如下:
Public int Send(byte[]dgram,int bytes,IPEndPoint endPoint);
下面是程序中使用UdpClient發(fā)送UDP數(shù)據(jù)包的代碼:
2.1.4 C#中UdpClient類接收UDP數(shù)據(jù)包
“Receive”方法的調(diào)用語法如下:
Public byte[]Receive(ref IPEndPoint remoteEP);
下面是程序中通過偵聽端口號“2040”來獲取UDP數(shù)據(jù)包的代碼:
該系統(tǒng)軟件采用Windows操作系統(tǒng),以C#語言編制,軟件采用模塊化的設(shè)計,其功能模塊如圖1所示,軟件系統(tǒng)的流程圖如圖2所示。
圖1 系統(tǒng)模塊框圖
圖2 系統(tǒng)流程圖
2.2.1 溫濕度傳感器模塊
溫濕度傳感器模塊包括傳感器配置模塊和通信模塊。溫濕度傳感器配置模塊對應(yīng)程序中的系統(tǒng)設(shè)置和條件設(shè)置功能,配置傳感器的各類參數(shù)如溫濕度上下限、所在房間名稱、IP地址、采樣時間、溫度波動范圍等。溫濕度傳感器通信模塊負責(zé)上位機與傳感器間進行UDP通信,獲取各個傳感器的數(shù)據(jù)。
2.2.2 屏幕顯示模塊
屏幕顯示模塊包括小屏幕配置模塊和小屏幕通信模塊。小屏幕配置模塊負責(zé)對小屏幕的參數(shù)進行配置,包括小屏幕的IP地址和顯示顏色,并將設(shè)置寫入配置文件中。小屏幕通信模塊負責(zé)程序與小屏幕之間的SOCKET通信,即向小屏幕發(fā)送要顯示的溫濕度數(shù)據(jù)和自定義顯示的字符。
2.2.3 數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊包括溫濕度數(shù)據(jù)存儲模塊、溫濕度數(shù)據(jù)實時顯示模塊和溫濕度歷史數(shù)據(jù)查詢模塊。溫濕度數(shù)據(jù)存儲模塊負責(zé)將從傳感器獲取的溫濕度數(shù)據(jù)信息寫入相對應(yīng)的數(shù)據(jù)庫文件中。溫濕度數(shù)據(jù)實時顯示模塊負責(zé)將從傳感器獲取的各個通道的溫濕度數(shù)據(jù)在軟件主界面上實時顯示。溫濕度歷史數(shù)據(jù)查詢模塊分為按間隔查詢、按點查詢和自動生成各個房間溫濕度記錄三個功能:按間隔查詢功能負責(zé)查詢一段時間內(nèi)某個房間每隔一個固定時間間隔的溫濕度歷史數(shù)據(jù)和溫濕度曲線圖,并可以保存到指定路徑的word文件中;按點查詢功能負責(zé)查詢一段時間內(nèi)某個房間每天某幾個固定時間點的溫濕度歷史數(shù)據(jù),并可以保存到指定路徑的word文件中;自動生成溫濕度記錄功能是自動把每個房間整點的溫濕度數(shù)據(jù)寫到對應(yīng)的word中,供用戶查看。
通過程序的編譯、調(diào)試,最后在LED顯示屏和上位機顯示出實時的溫度和濕度,如圖3所示。從整個實現(xiàn)過程來看,首先是溫濕度模塊對環(huán)境溫濕度采集后,將相應(yīng)數(shù)據(jù)傳輸?shù)缴衔粰C;然后通過上位機將溫濕度數(shù)據(jù)傳輸?shù)矫總€小屏幕上實時顯示。
圖3 溫濕度顯示界面
通過此次溫濕度自動采集監(jiān)控系統(tǒng)的開發(fā),筆者對C#中Socket通信原理有了更深刻的理解,這對后面的項目開發(fā)起到很大的幫助。另外,這次系統(tǒng)的開發(fā)也驗證了理論與實際相結(jié)合的重要性,這樣才能更好地完成系統(tǒng)設(shè)計工作。