<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 利用TINI平臺設計網(wǎng)絡(luò )On/Off開(kāi)關(guān)(圖)

利用TINI平臺設計網(wǎng)絡(luò )On/Off開(kāi)關(guān)(圖)

——
作者:Maxim公司北京辦事處 時(shí)間:2007-02-06 來(lái)源: 收藏
tini平臺可提供設計ip網(wǎng)絡(luò )繼電器所需的tcp/ip棧和本地控制,java運行環(huán)境可以大大降低設計工作的復雜度,利用java程序,可以通過(guò)網(wǎng)絡(luò )遠程訪(fǎng)問(wèn)控制小型傳感器和執行器。本文介紹了一個(gè)ip on/off開(kāi)關(guān),采用一個(gè)簡(jiǎn)單的繼電器電路和tinim390/400驗證模塊構建,還可以延伸到其他遠程監視和控制應用中。


系統軟件概述
  com.dalsemi.tininet.http.httpserver類(lèi)允許開(kāi)關(guān)控制應用程序充當簡(jiǎn)單的web服務(wù)器,將java程序傳遞給遠端主機。在被主機內部瀏覽器執行后,該java程序就建立了一個(gè)與tini應用程序交換命令和狀態(tài)的雙向tcp連接,也為顯示控制和狀態(tài)提供了一個(gè)圖形用戶(hù)界面。整個(gè)軟件系統如圖1所示。

本文引用地址:http://dyxdggzs.com/article/22753.htm


系統硬件概述
  在圖2中,基于tinim390/4002模板的開(kāi)/關(guān)控制電路構成了該接口。tinim390/400模板提供了ethernet網(wǎng)絡(luò )接口能力,以及通過(guò)引腳p5.0(其他引腳也可以等效工作)控制開(kāi)關(guān)。n溝道mosfet開(kāi)關(guān)切換流過(guò)繼電器的電流,控制繼電器。用戶(hù)可以根據繼電器和fet的大小要求,供給不同的電壓和電流;如果不需要隔離外部電路與tini模板的電源,則可以去掉繼電器。在開(kāi)關(guān)狀態(tài)改變時(shí),二極管抑制繼電器線(xiàn)圈的感生電壓。為了實(shí)現某些新的服務(wù),如網(wǎng)絡(luò )開(kāi)關(guān)控制。


tini開(kāi)關(guān)控制應用
  由四個(gè)類(lèi)構成了該應用的開(kāi)關(guān)控制和web服務(wù)器接口。powerswitch類(lèi)通過(guò)采用tini類(lèi)中的com.dalsemi.system.bitport應用程序接口類(lèi),直接與硬件接口。webworker類(lèi)直接來(lái)自maxim的software developers kit(tini sdk)中的tiniwebserver實(shí)例,負責為到來(lái)的http連接提供服務(wù)。switchworker類(lèi)管理java程序和tini應用之間的所有命令和狀態(tài)通信。tiniwebserver類(lèi)通過(guò)綁定各個(gè)類(lèi)的操作,來(lái)實(shí)現本應用。

  powerswitch類(lèi)是一個(gè)連接硬件的接口,在其構造器內為引腳p5.0創(chuàng )建一個(gè)bitport目標。在該類(lèi)中,可以執行兩種函數,開(kāi)函數設定的引腳端口狀態(tài)是接通繼電器線(xiàn)圈的電壓;而關(guān)函數通過(guò)清零端口狀態(tài),來(lái)斷開(kāi)繼電器線(xiàn)圈的電壓。圖2中的單刀雙擲(spdt)繼電器能夠工作于常閉或常開(kāi)位置,即在這兩種位置之間切換外部電壓源。開(kāi)、關(guān)函數假設電路工作于常開(kāi)狀態(tài),且必須能夠被改變至常閉電路狀態(tài)。為了指示開(kāi)/關(guān)是否對應于bitport的置位或清零函數,則在該類(lèi)中引入了一個(gè)外部的boolean變量(invert),另一個(gè)函數(setinvert)要求用來(lái)初始化invert變量。圖2所示的硬件圖描述的是常開(kāi)電路。

  webworker類(lèi)提供了網(wǎng)絡(luò )和應用之間的接口。它簡(jiǎn)單地建立和驅動(dòng)一個(gè)目標(com.dalsemi.tininet.http.httpserver),該目標依次產(chǎn)生線(xiàn)程,為每個(gè)到來(lái)的http連接提供服務(wù)。該類(lèi)取自上述tiniwebserver實(shí)例,無(wú)須作任何修改,可以在網(wǎng)絡(luò )上的任何地方接入。httpserver能夠提示輸入密碼,或者接受任何其他形式的控制,僅允許那些授權的用戶(hù)接入。

  通過(guò)將網(wǎng)絡(luò )和硬件接口組合在一起(圖3所示),tiniserver允許遠程開(kāi)關(guān)控制。例如,drive()函數通過(guò)創(chuàng )建一個(gè)webworker線(xiàn)程和網(wǎng)頁(yè)“index.htm1”,建立此web服務(wù)器。網(wǎng)頁(yè)的主要目的是為了在主機工作站上下載并執行該java程序。如果提示網(wǎng)頁(yè)僅包含靜態(tài)信息,該應用就沒(méi)有必要創(chuàng )建網(wǎng)頁(yè)。提示網(wǎng)頁(yè)只需要與包含java程序的文件目錄一起,拷貝至web服務(wù)器的根目錄下即可。

  codebase是一個(gè)在每個(gè)tini芯片組設計中可以改變的網(wǎng)頁(yè)參數。java程序使用該信息,以返回連接至某個(gè)獨立的服務(wù)器插件中的tini應用程序??梢詣?chuàng )建并上傳一個(gè)定制的網(wǎng)頁(yè)至任何一個(gè)安裝在現場(chǎng)的tini芯片組參考設計。一個(gè)簡(jiǎn)單的方法是由應用程序在每次運行時(shí),創(chuàng )建該網(wǎng)頁(yè)。通過(guò)三次寫(xiě)操作,createindexpage函數可以創(chuàng )建文件index.html,并將ip地址插入codebase部分。

  1)index.write(indextop.getbytes(),0,indextop.length());
  2)index.write(inetaddress.getlocalhost().gethostaddress().getbytes());
  3)index.write(indexbottom.getbytes(),0,indexbottom.lenghth());

  第一次和第三次寫(xiě)操作是將網(wǎng)頁(yè)的靜態(tài)部分拷貝至文件中,而第二次寫(xiě)操作是將ip地址拷貝至文件的codebase部分。在應用程序建立web服務(wù)器和創(chuàng )建網(wǎng)頁(yè)后,就啟動(dòng)了web服務(wù)器。它創(chuàng )建一個(gè)服務(wù)器插件,用來(lái)處理來(lái)自下載java程序的進(jìn)入連接,并且在java程序每次連接tini應用時(shí),調用serviceconnection函數。

  serviceconnection函數創(chuàng )建了一個(gè)新例程switchworker,并將這個(gè)插件傳給該類(lèi)。switchworder構造器創(chuàng )建一個(gè)新的線(xiàn)程,以處理主機java程序和tini應用之間的連接。serviceconnection函數也處理下一個(gè)進(jìn)入連接,接著(zhù)將控制傳給drive函數。

  switchworker類(lèi)管理java程序和webserver之間的所有通信,如圖4所示,在連接被斷開(kāi)之前,它不斷地循環(huán),執行下列步驟:

  停留在read(),等待一個(gè)來(lái)自java程序的命令字節;
  如果命令字節為0,則斷開(kāi)開(kāi)關(guān);如果為1,則閉合開(kāi)關(guān);

  讀入當前開(kāi)關(guān)狀態(tài),回傳至java程序。

  通過(guò)分配每個(gè)命令字節的低7位來(lái)表示不同開(kāi)關(guān)的狀態(tài),如圖5所示,該運算法則可以適用于更多的開(kāi)關(guān)。保留最高位,用來(lái)指示只讀操作。該運算法則也可以被擴展,以允許在同一時(shí)刻多個(gè)java程序連接至單個(gè)tini webserver應用。switchworker只是簡(jiǎn)單地保持一個(gè)“監聽(tīng)向量”。每次java程序發(fā)出一個(gè)修改開(kāi)關(guān)狀態(tài)的命令,webserver就將其狀態(tài)回傳至當前與之連接的所有java程序。


主機java程序
  tini類(lèi)中的com.dalsemi.tininet.http.httpserver類(lèi)是一種小巧而快速的類(lèi),但僅支持http get操作。由此產(chǎn)生的數據只能從tini應用到主機單向傳遞。然而,該應用要求雙向數據傳輸。命令由主機發(fā)送至tini webserver,而狀態(tài)由webserver發(fā)送至所有相連的主機。主機和tini應用之間的通信無(wú)協(xié)議開(kāi)銷(xiāo),單字節命令和單字節狀態(tài)允許極快的控制和狀態(tài)響應。

  主機java程序包括兩個(gè)類(lèi),主類(lèi)(switchcontrol)處理主機端的網(wǎng)絡(luò )通信和創(chuàng )建網(wǎng)頁(yè)上所有的顯示圖形單元,見(jiàn)圖6;另一個(gè)類(lèi)(image button)創(chuàng )建一個(gè)圖形撥動(dòng)按鈕,顯示對應于按鈕狀態(tài)的兩種位圖之一,見(jiàn)圖7。撥動(dòng)按鈕用于開(kāi)關(guān)的控制和狀態(tài)指示應該是足夠的,但java程序的表現會(huì )因瀏覽器的不同而異,因此,加入簡(jiǎn)單的開(kāi)/關(guān)按鈕和一個(gè)狀態(tài)文本窗,以適應于更多的瀏覽器。imagebutton和開(kāi)/關(guān)按鈕將完成相同的控制功能,位圖和狀態(tài)窗完成相同的狀態(tài)指示功能而已。在創(chuàng )建圖形單元后,switchcontrol類(lèi)將創(chuàng )建一個(gè)狀態(tài)監測線(xiàn)程。該線(xiàn)程接著(zhù)進(jìn)入休眠模式,停留于read(),等待來(lái)自于tini應用的狀態(tài)信息。當線(xiàn)程向下運行時(shí),imagebutton的位圖和狀態(tài)窗被刷新,接著(zhù)又循環(huán)到程序的頂部,等待下一次的狀態(tài)字節。java程序事件線(xiàn)程驅動(dòng)actionperformed函數,該函數在每次按下圖形按鈕后被調用。如果調用是由imagebutton觸發(fā)的,則它翻轉當前狀態(tài),并向tini發(fā)出一個(gè)開(kāi)或關(guān)的命令。如果由開(kāi)/關(guān)按鈕觸發(fā),則它發(fā)出一個(gè)開(kāi)/關(guān)命令。imagebutton類(lèi)只是一個(gè)簡(jiǎn)單的采用awt(abstract window toolkit)組件編程的范例。


結論
  采用tini實(shí)時(shí)環(huán)境、java程序和簡(jiǎn)單的繼電路電路,就可以實(shí)現遠程控制閉合/關(guān)斷開(kāi)關(guān)。通過(guò)網(wǎng)絡(luò ),可以在任何地點(diǎn)控制從照明燈到機床的各種設備。

tcp/ip相關(guān)文章:tcp/ip是什么




關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>