摘要:基于Internet聯網構成的溫濕度監測系統,架構于因特網、微機和溫濕度變送器等。采用VC、C++和ASP.NET等編程,實現對多個特殊倉庫溫濕度的遠程實時監測。
關鍵詞:Internet;監測;溫濕度
中圖分類號:TP393.09文獻標識碼:A 文章編號:1009-3044(2009)25-7103-02
Temperature and Humidity Observation System Based on Network Transmission
RON Wu, YANG Ya-fang
(Yangtze University, Jingzhou 434023,China)
Abstract: Based on Internet networking constitution temperature and humidity observation system,Construction in the Internet, microcomputer and transmitting instrument oftemperature and humidity and so on.Realizes to the many special warehouse temperature and humidity long-distance real-time monitor,uses programming and so on VC 、C++ and ASP.NET.
Key words: internet; observation; temperature and humidity
隨著網絡技術的發展,其應用越來越廣泛,不僅在辦公自動化及各項管理中得到了廣泛的應用,而且在各領域的視頻監控及企業對生產過程和環境信息的監測也得到了應用推廣。
1 系統的硬件組成
本系統的結構如圖1所示。主要由JWSL—2系列壁掛型溫濕度變送器、PC微機、網絡通信、后臺服務器及客戶端等組成。JWSL—2系列壁掛型溫濕度變送器采集當前溫度和濕度,再通過變送器內部的A/D轉換芯片將溫濕度轉換為數字量。當PC機通過串口向變送器發送一條數據接收指令時,變送器將對應于溫濕度的數字信息發送給RS-485總線上,經長距離傳輸到PC機,其中,要經過RS—485電平轉換成RS—232電平,才能被PC微機的串口接收。PC機通過串口通信接收和處理數據,并與互聯網相連后將數據上傳到后臺服務器,客戶終端可以上網查看監視各個監測點溫濕的變化情況,并做出相應的管理措施。
2 JWSL—2系列壁掛型溫濕度變送器
變送一體化設計,用于感應、處理與輸出溫濕度值,適用于普通室內環境溫濕度的測量。
2.1 主要技術參數
量程:濕度: 0~100%RH,溫度:±0.5℃(0~50℃)
輸出信號:電流輸出型:兩線制4-20mA;電壓輸出型:0-5V ;網絡輸出型:RS485 RS232
3.2 通訊協議
1)符合 MODBUS 標準(16 進制方式)。主機查詢,變送器應答的主從方式查詢溫濕度數據。
地址 03 00 00 00 02
例:對地址為01的變送器讀溫濕度的操作為:010300000002C40B
應答為:
其中,CRCH為CRC 校驗的高字節,CRCL為CRC 校驗的低字節。
2)數據H(高位字節)和數據L(低位字節)為各自對應的當前溫濕度值:
上傳的數據需要除十,如濕度上傳16進制數0X0311,對應十進制為00785,即78.5%RH。
零下溫度換算,如溫度上傳16進制0XFF8C,對應十進制數為:0XFFFF-0XFF8C=0X73=115表示-11.5℃。
3)幀格式中有8位數據位,無校驗,1位停止位,波特率可以設定1200,2400,4800,9600。
3 軟件編程
3.1 PC機RS-232C串口接收溫濕度變送器傳送來的溫濕度值
Microsoft Communications Control(簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發數據的簡便方法,MSComm控件通過串行端口傳輸和接收數據。選用VC編程,通過調用復雜的API函數,而且采用事件驅動(Event-driven)的方法。利用MSComm控件的OnComm事件,就可以在OnComm事件處理函數中加入自己的處理代碼,遵守溫濕度傳感器的通訊協議編程,即實現捕獲并處理通訊事件中接收到的溫濕度值,并存入相應的表格中,。只需擁有一個MSComm控件對應著一個串行端口。
// 接受數據
for(k=0; k {
safearray_inp.GetElement(k,rxdata+k); //轉換為BYTE型數組
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format(“%c”,bt); //將字符送入臨時變量strtemp存放
recd+=strtemp; }
3.2 保存采集的數據
在C++ 環境中利用ADO方式連接SQL數據庫并將捕獲的數據保存在數據庫中,步驟如下:
1)首先需要導入ADO類,方式如下:
#import\"C:\\\\ProgramFiles\\\\CommonFiles\\\\System\\\\ado\\\\msado15.dll\" no_namespace rename(\"EOF\",\"adoEOF\")rename(\"BOF\",\"adoBOF\")
2)添加一個指向Connection對象的指針:
_ConnectionPtr m_pConnection; //連接對象
m_pConnection.CreateInstance(\"ADODB.Connection\");
3)連接數據庫:
m_pConnection->Open(\"Provider=SQLOLEDB.1;server=.;database=temperatuer;uid=yinan;pwd=123456;\",\"\",\"\",adModeUnknown);
//其中temperature為數據庫名,yinan和123456 為測試的測試名和密碼。
4)執行SQL命令將采集的數據保存在數據庫中:
m_pConnection->Execute(\"insert into data(temperature,humidty,name,) values (tem, hum,’倉庫1’)\",RecordsAffected,adCmdText);
//其中tem為采集的溫度,hum為采集的濕度,倉庫1為倉庫的名稱
5)關閉與數據庫的連接,釋放內存資源:
if(m_pConnection->State)m_pConnection->Close();
3.3 客戶端瀏覽數據
使用B/S模式讓客戶在瀏覽器中觀察采集的數據,采用的方式是使用ASP.NET編程。具體方式如下:
添加一個.aspx頁面,頁面中包括一個Repeater數據綁定控件,用來顯示數據庫中的數據,還包括一個下拉列表框,用來選擇查看數據的方式,該頁面所對應的.cs文件的關鍵代碼如下:
if (ddlChoice.SelectedValue == \"storage\")
{cmdStr = \"select name, temperature ,humidity,addDate from data,storage where data.storageid = storage.idorder by name desc,addDate desc\";
BindData(cmdStr);
}
if (ddlChoice.SelectedValue == \"date\")
{ cmdStr = \"select name, temperature ,humidity,addDate from data,storage where data.storageid = storage.idorder by data.addDate desc,name desc\";
BindData(cmdStr);
}
// 其中ddlChoice為下拉列表框的名稱,cmdStr是要執行的SQL語句,BindData方法實現了綁定數據的過程,該頁面瀏覽效果如圖2所示。
也可按時間來查看,效果如圖3所示。
4 結論
該文全面介紹了基于網絡傳輸的溫濕度檢測系統的總體設計以及各部分的主要結構。該系統已經用于大范圍的溫濕度監測系統。該計算機網絡應用技術適用范圍廣,監測數據快速準確,達到了無人置守,是一項非常有意義的嘗試,應用前景廣闊。
參考文獻:
[1] 龔建偉,熊光明.Visual C++/Turbo C串口通信編程實踐[M].北京:電子工業出版社,2007.
[2] 北京昆侖海岸傳感技術中心.JWSL-2系列壁掛型溫室度變送器說明書[P],2006.
[3] 馬駿.ASP.NET網頁設計與網站開發[M].北京:人民郵電出版社,2007.