基于IP的網(wǎng)絡(luò)傳感器監(jiān)視器可以通過(guò)微型互聯(lián)網(wǎng)接口(MxTNI)的組合輕松創(chuàng)建?) 平臺(tái)、1-Wire 傳感器和相應(yīng)的 Java??軟件。MxTNI平臺(tái)提供TCP/IP網(wǎng)絡(luò)堆棧和設(shè)計(jì)基于IP的網(wǎng)絡(luò)傳感器所需的本地控制功能。內(nèi)置的Java運(yùn)行時(shí)環(huán)境和1-Wire外設(shè)接口庫(kù),允許使用1-Wire器件輕松控制和通信。
本應(yīng)用筆記演示了基于IP的網(wǎng)絡(luò)溫度監(jiān)測(cè)器,以及可在支持Java的瀏覽器中執(zhí)行的可下載小程序控制界面。它采用MxTNI驗(yàn)證模塊和DS1920 i按鈕或DS1820 1-Wire溫度傳感器。小程序控制傳感器并顯示采集的時(shí)間和溫度樣本。通過(guò)瀏覽到 MxTNI 的 IP 地址自動(dòng)下載小程序,并使用 MxTNI 運(yùn)行時(shí)環(huán)境提供服務(wù)。
介紹
ADI公司的微型網(wǎng)絡(luò)接口(MxTNI)平臺(tái)提供設(shè)計(jì)基于IP的網(wǎng)絡(luò)傳感器所需的TCP/IP網(wǎng)絡(luò)堆棧和本地控制功能。內(nèi)置的Java運(yùn)行時(shí)環(huán)境和1-Wire外設(shè)接口庫(kù),允許使用1-Wire器件輕松控制和通信。本應(yīng)用筆記演示了基于IP的網(wǎng)絡(luò)溫度監(jiān)測(cè)器,以及可在支持Java的瀏覽器中執(zhí)行的可下載小程序控制界面。它采用MxTNI驗(yàn)證模塊和DS1920 i按鈕或DS1820 1-Wire溫度傳感器。小程序控制傳感器并顯示采集的時(shí)間和溫度樣本。通過(guò)瀏覽到 MxTNI 的 IP 地址自動(dòng)下載小程序,并使用 MxTNI 運(yùn)行時(shí)環(huán)境提供服務(wù)。
系統(tǒng)概述
此應(yīng)用程序使用 TINIm390 或 TINIm400 驗(yàn)證模塊。DS1920連接到MxTNI的外部1-Wire總線。MxTNI提供以太網(wǎng)連接,并用作1-Wire主站。
MxTNI 1線接口庫(kù)
MxTNI運(yùn)行時(shí)環(huán)境的API支持1-Wire器件,包括適配器庫(kù)和1-Wire特定容器,公開(kāi)其各自的功能。該應(yīng)用使用DSPortAdapter和OneWireContainer10,其中包含與DS1920通信所需的方法。要開(kāi)始1-Wire通信,MxTNI請(qǐng)求默認(rèn)適配器:
DSPortAdapter ourAccess = OneWireAccessProvider.getDefaultAdapter();
接下來(lái),MxTNI針對(duì)1-Wire器件(本例中為0x10)所需的族碼,并接收對(duì)其容器的引用。
ourAccess.targetFamily(0x10); ourAccess.findFirstDevice(); OneWireContainer10 tc = ( OneWireContainer10 ) ourAccess.getDeviceContainer();
使用參考的容器,MxTNI現(xiàn)在可以訪問(wèn)DS1920的所有功能。i按鈕的功能使用以下方法向應(yīng)用程序公開(kāi)。
readDevice(); writeDevice(); doTemperatureConvert(byte[] state); getTemperature(byte[] state); setTemperatureAlarm(int alarmType, double alarmValue, byte[] state); isAlarming(); (inherited from OneWireContainer)
要感知溫度,請(qǐng)使用readDevice讀取i按鈕的狀態(tài)信息,然后通過(guò)調(diào)用doTemperatureConvert,然后調(diào)用getTemperature來(lái)讀取轉(zhuǎn)換后的溫度來(lái)執(zhí)行溫度測(cè)量。
DS1920內(nèi)置高低溫報(bào)警功能,可通過(guò)編程方式設(shè)置,當(dāng)測(cè)得的溫度值超出設(shè)定范圍時(shí)通知主機(jī)。要使用溫度警報(bào),請(qǐng)使用 setTemperatureAlarm 方法設(shè)置它們,該方法傳遞TemperatureContainer.ALARM_HIGH或TemperatureContainer.ALARM_LOW作為參數(shù),以及新的警報(bào)值和狀態(tài)。通過(guò)在容器上調(diào)用 isAlarming 方法,可以監(jiān)視設(shè)置的警報(bào)的狀態(tài)。
在此應(yīng)用程序中,ButtonControl.java處理溫度樣本,而AlarmMonitor.java檢查警報(bào)。
MxTNI服務(wù)器軟件
MxTNI為傳入的HTTP請(qǐng)求實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的Web服務(wù)器。圖 1 顯示了客戶端和服務(wù)器之間的交互。它分為四個(gè)線程,顯示 MxTNI 溫度服務(wù)器的各個(gè)部分。它通過(guò)包含嵌入式小程序的簡(jiǎn)單 HTML 索引頁(yè)提供連接。此小程序由客戶端下載并用于控制溫度采樣和顯示數(shù)據(jù)。Web 服務(wù)器由 TempButtonHost.java 實(shí)現(xiàn)。
MxTNI還維護(hù)一個(gè)等待入站連接的服務(wù)器套接字。建立連接后.java SockListen會(huì)解密命令并調(diào)用TempCommand.java來(lái)執(zhí)行它。TempCommand 調(diào)用所需的方法來(lái)執(zhí)行命令,并在必要時(shí)利用 AppletComm.java將信息發(fā)送回客戶端。
圖1.小程序和MxTNI軟件流程圖。
圖2.Applet和MxTNI流程圖繼續(xù)。
MxTNI 樣品緩沖液
MxTNI使用SampleHold.java維護(hù)一個(gè)時(shí)間和溫度緩沖區(qū),該緩沖區(qū)在MxTNI的文件系統(tǒng)中存儲(chǔ)多達(dá)300個(gè)樣本,因此樣本數(shù)據(jù)是持久的。SampleHold使用RandomAccessFile來(lái)保存檢索時(shí)間和溫度采樣應(yīng)用程序所需的所有信息。
溫度 i按鈕控制小程序
顯示的控制小程序如圖3所示。小程序的主要用途是控制DS1920的采樣,并以有意義的格式顯示采樣。圖表概述了紅色、藍(lán)色和黑色之間的變化,具體取決于當(dāng)前的報(bào)警條件。MxTNI的當(dāng)前溫度顯示在圖表下方;華氏和攝氏刻度都可用。該圖可沿溫度軸和時(shí)間軸進(jìn)行縮放,以使采樣數(shù)據(jù)更易于解釋。當(dāng)范圍正確時(shí),高跳變點(diǎn)和低跳變點(diǎn)都顯示在圖表上,高點(diǎn)和低跳變點(diǎn)顯示為紅色,低點(diǎn)顯示為藍(lán)色。這些是從圖形右側(cè)的控件調(diào)整的。小程序還可以控制在給定時(shí)間段內(nèi)要采集的樣本數(shù)量。它還提供用于啟動(dòng)和停止采樣、清除緩沖區(qū)和關(guān)閉溫度服務(wù)器的控件。如果收到關(guān)閉命令,則會(huì)保存所有小程序配置數(shù)據(jù),以便小程序可以跨會(huì)話維護(hù)狀態(tài)。
圖3.溫度控制小程序。
小程序由幾個(gè)類(lèi)組成:
TempApplet.java是實(shí)現(xiàn)AWT內(nèi)容的主要類(lèi)。
TempGraph.java實(shí)現(xiàn)了溫度與時(shí)間的關(guān)系圖。
TiniComm.java,TiniListen.java在MxTNI和小程序之間進(jìn)行通信。
結(jié)論
使用MxTNI運(yùn)行時(shí)環(huán)境和1-Wire庫(kù),可以輕松創(chuàng)建復(fù)雜的溫度采樣器件。此應(yīng)用程序展示了如何將 MxTNI 最好地用作遠(yuǎn)程接口設(shè)備,用于采集和存儲(chǔ)樣本并將此數(shù)據(jù)提供給客戶端,以處理顯示數(shù)據(jù)的計(jì)算密集型任務(wù)。
審核編輯:郭婷
-
傳感器
+關(guān)注
關(guān)注
2545文章
50445瀏覽量
751040 -
溫度傳感器
+關(guān)注
關(guān)注
48文章
2892瀏覽量
155789 -
1-Wire
+關(guān)注
關(guān)注
0文章
49瀏覽量
21282
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論