Wire網絡iButton設計論文
時間:2022-03-12 09:47:00
導語:Wire網絡iButton設計論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。
摘要本文在論述了iButton應用現狀的基礎上,重點對基于1-wire網絡的ibutton軟件系統應用進行了研究,提出了系統設計思想,并給出了其數據處理流程和DS1991讀/寫算法,最后以Delphi為前臺界面開發工具,建立了一個基于iButton的應用實例—酒店智能管理系統。為iButton的研究和應用提供了一種方法和思路。
關鍵詞iButton,1-Wire,算法,設計;
0引言
計算機技術的蓬勃發展,使基于條形碼、磁卡、IC卡等技術的數字識別系統逐漸取代了人工識別,并被廣泛應用于金融、電信、商業等領域,深刻影響著人們的日常生活。但是由于條形碼、磁卡、IC卡等構成的數字識別系統存在著攜帶不便、易受損壞、不能應用于惡劣環境等不足。美國達拉斯半導體公司(DallasSemiconductorCorporation)推出的一種智能化信息載體iButton,較好地解決了數字識別系統存在的這些問題,為開發更加完善的新穎數字識別系統提供了技術支持和實現手段。
iButton(informationButton)意為“信息鈕扣”。它采用直徑17mm、厚3~6mm的鈕扣狀不銹鋼外殼封裝。內部由I/O處理器和存儲器兩個基本部分組成,某些應用于特殊場合的iButton還內置有感溫等元器件。iButton以1-Wire規范作為通信協議,僅用1根數據線實現與外界的信息交換。DS1991是iButton的一種,它的內部有1152位的密碼保護存儲器區,512位的非密碼保護存儲器scratchpad。密碼保護存儲器被分為三個可獨立操作的密鑰子存儲器(subkey),每區為384位,每個密錢子區都有自己的64位密碼及64位的ID碼,對密鑰子區的讀/寫操作均需進行密碼驗證。三個區的數據可分別操作,互不干擾。非密碼保護存儲器區主要用于加密數據的拷貝,以保證數據的完整性。本文提出基于1-Wire網絡的iButton軟件系統的硬件組成、軟件設計思想和具體的應用實例,為iButton的具體應用提供了一種思路和方法。
1系統設計
1.1單總線系統結構設計
1-Wire總線是一種簡單的信號電路,它僅用一根數據線即可與外界進行信息交換。所有的1-Wire總線器件都具有一個共同的特征;無論是芯片內還是iButton內,在出廠時每個器件都有一個與其它任何器件互不重復的固定的序列號。也就是說,每一個器件都是唯一的。一旦器件的序列號已知,通過這個序列號,任意一個器件都可以從眾多連到同一1-Wire總線的器件中被選出用于通信。
通信時,總線控制器先發出一個“復位”信號以使總線同步,然后選擇受制器件進行隨后的通信。這可以通過選擇一個特定的受控器件(利用該設備的系列號進行選擇)或者通過對半檢索法找到總線上的下一個受控器件來實現,當然,也可以選擇所有的受控器件。一旦一個特定的器件被選中,那么在總線控制器發出下一次“復位”信號之前,所有其它器件都被掛起而忽略隨后的通信。
主機能向用于總線通信的所有器件指令,對它(或者它們)進行數據的讀寫。這是因為每類器件運行不同的函數,有不同的用途,而且一旦器件被選定,它所用的協議也就固定下來。即使每類器件有不同的協議和特征,它們也都有著同樣的選擇過程。
1.2軟件開發工具
iButton-TMEXprofessionalSDKv3.10是Dallas公司提供的進行應用程序開發的軟件包,通過調用其TMEX-API函數可方便地開發iButton的應用軟件。該軟件包適用于DOS、Win3.1、Win95/98、WinNT、WinCE等多種操作平臺,支持高級語言如VB、VC、DELPHI和匯編語言如8051、808x等多種編程環境。
SDK的主要包含:編程所需的動態鏈接庫(dll),TMEX-API函數的說明文檔,Demo程序及其說明文檔等。若在Win95/98操作系統下安裝該軟件包,會自動將IBFS32.DLL、IB97E32.DLL、IB97U32.DLL、IB10E32.DLL、DS1410D.SYS和UAAUTHD.UXD等文件寫入Windows的System目錄下,從而建立起調用TMEX-API函數進行應用程序開發的軟件環境。
TMEX-API函數分為會話、文件操作、傳輸、網絡和硬件等5個層次。會話層函數主要用于多任務環境下iButton與基于1-Wire協議的iButton網絡MicroLAN的連接;文件操作層函數用于文件讀/寫以及目錄增刪操作;傳輸層函數用于讀寫數據包操作;網絡層函數用于讀取及驗證iButton的ID;硬件層函數用于對指定端口等特定的硬件操作。
1.3數據處理過程:
DS1991在1-Wire總線上的數據訪問命令流程如下所示:初始化→ROM功能命令→存儲器或SHA功能命令→處理/數據
(1)初始化
初次使用時,無法確定存儲在從機設備里的密碼,所以需要先對DS1991進行初始化。初始化時對選定的子密鑰區利用WritePassword命令直接寫入新的識別碼和密碼(而不必通過暫存器),一旦新的識別碼和密碼存入從機設備里,再進行修改時,就要通過暫存器。
(2)ROM功能命令
DS1991以1-Wire協議為基礎用一根數據線來傳輸數據。總線上的主機必須首先發出四條ROM功能命令:1)ReadROM讀取(33H),2)MatchROM匹配(55H),3)SearchROM搜索(F0H),4)SkipROM跳過(CCH),這些命令可作用于DS1991的64位光刻注冊碼。一條ROM功能命令執行完后,可實現作用在安全存儲器和暫存器上的存儲功能,總線上的主機會發出6條存儲器功能命令中的任意一條來檢測DS1991。DS1991有6個存儲器功能命令,分別是:寫暫存器(96H)、讀暫存器(69H)、復制暫存器(3CH)、寫密碼(5AH)、寫密鑰子區(99H)、讀密鑰子區(66H)。存儲器功能命令由三段組成:一為功能代碼,二為命令的起始地址和子密鑰的地址代碼,三為第二個字節的取反。
(3)存儲器或SHA功能命令
DS1991有6個特定的設備檢測命令,包括3個中間結果暫存器命令:WriteScratchpad、ReadScratchpad和CopyScratchpad;還有3個子密鑰命令:WritePassword、WriteSubkey和ReadSubkey。當選中某個從機設備后,存儲器功能命令就會寫入DS1991中。這些命令由三段組成,每段長為一個字節;第一個字節為功能代碼段,它定義了6個可執行的命令;第二個字節是地址段,其中的前六位定義了命令的起始地址值,后兩位是子密鑰的地址代碼;命令的第三個字節是第二個字節的補碼。
(4)處理數據:根據不同的應用對讀出或寫入的數據做相應的處理。
1.4DS1991的讀寫算法
當檢測到總線上掛接一個新的DS1991時,能夠直接獲得它的64位序列號,此序列號是進行DS1991操作的唯一依據,然后對它三個加密存儲區進入讀寫操作,圖1所示即為對信息鈕扣DS1991讀、寫操作的算法流程。
2軟件設計
作為一種新穎的智能化信息載體,iButton信息紐扣采用接觸式存取方式的存儲器(TouchMemory,簡稱TM卡),以1-Wire規范作為通信協議,其外殼為信號址,用1根數據線按特定的時序要求由數據線逐位與外界交換數據。
iBUTTON常見的應用有電子防盜門、單位考勤系統、酒店智能管理系統、計算機軟件的硬件加密、電子防偽、暫住人口管理系統等。下面給出將微型計算機系統作為Master,利用Dallas公司提供的觸頭、串(并)口適配器等現成的外圍產品,加之iButton,用Delphi實現的酒店智能管理系統:
(1)窗體創建時,進行初始化操作獲取端口號、端口類型及版本號等信息,并調用ReadTmCardNo函數讀取序列號并在窗體上顯示,如讀取失敗則彈出對話框詢問是否繼續讀取。
(2)密碼驗證正確后,調用ReadDS1991Subkey實現讀加密區中的數據以實現查詢功能,其運行界面如圖2所示。調用函數WriteDS1991Subkey將讀到的信息寫進數據庫,以實現登記、刪除等功能,其運行界面如圖3所示。
當進行讀操作時調用函數ReadDS1991Subkey,其代碼如下:
functionReadDS1991Subkey(varsubkey_buff:Arrayofbyte;keynum:
smallint):boolean;
var
tran_buf:Array[0..66]ofbyte;
tran_len,i,restvalue:smallint;
RetStr:array[0..200]ofchar;
k:smallint;
RetValue:SmallInt;
rom:array[0..7]ofsmallint;
begin
//accessthecurrentdevice
restvalue:=TMAccess(SHandle,@StateBuf);
if(restvalue=1)then
begin
result:=true;
//readsecuresubkeycommand*/
tran_buf[0{tran_len++}]:=$66;
//specifysubkeynumber/startingaddr*/
tran_buf[1{tran_len++}]:=((keynumshl6)or$10);
//confirmationofpreviousbytesent*/
tran_buf[2{tran_len++}]:=not((keynumshl6)or$10);
//readidfield*/
tran_len:=2;
fori:=0to7do
begin
tran_len:=tran_len+1;
tran_buf[tran_len{++}]:=$ff;//FF表示對8個ID字節的讀操作
end;
//sendpassword*/
fori:=0to7do
begin
tran_len:=tran_len+1;
tran_buf[tran_len{++}]:=subkey_buff[8+i];
end;
//readsecure.data*/
fori:=0to47do//29
begin
tran_len:=tran_len+1;
tran_buf[tran_len{++}]:=$ff;
end;
//transfertheblock*/
retvalue:=TMBlockStream(SHandle,@tran_buf,tran_len);
if(retvalue=tran_len)then
begin
//copytheresulttothereadsubkey*/
fori:=0to63do
begin
subkey_buff[i]:=tran_buf[tran_len-63+i];//45
end;
result:=TRUE;
end;
end
else
begin
result:=FALSE;
end;
end;
當進行寫操作的時候調用函數WriteDS1991Subkey,其代碼如下:
functionWriteDS1991Subkey(subkey_buff:Arrayofbyte;keynum:smallint):boolean;
var
tran_buf:Array[0..100]ofbyte;
tran_len,i,retvalue:smallint;
RetStr:array[0..200]ofchar;
begin
{ReadtheversionsoftheTMEXdrivers}
{Get_Version(@RetStr);
TMGetTypeVersion(PortType,@RetStr);}
//accessthecurrentdevice
retvalue:=TMAccess(SHandle,@StateBuf);
if(retvalue=1)then
begin
//writesecuresubkeycommand*/
tran_buf[0{tran_len++}]:=$99;
//specifysubkeynumber/startingaddr*/
tran_buf[1{tran_len++}]:=((keynumshl6)or$10);
//confirmationofpreviousbytesent*/
tran_buf[2{tran_len++}]:=not((keynumshl6)or$10);
//idfieldvalueforwrite*/
tran_len:=2;
fori:=0to7do
begin
tran_len:=tran_len+1;
tran_buf[tran_len{++}]:=ubkey_buff[i];
end;
//sendpassword*/
fori:=0to7do
begin
tran_len:=tran_len+1;
tran_buf[tran_len{++}]:=subkey_buff[8+i];
end;
//secure.dataforwrite*/
fori:=0tolength(subkey_buff)-1do
begin
tran_len:=tran_len+1;
tran_buf[tran_len{++}]:=subkey_buff[16+i];
end;
//transfertheblock*/
retvalue:=TMBlockStream(SHandle,@tran_buf,tran_len+1);
if(retvalue=(tran_len+1))then
begin
TMEndSession(SHandle);
result:=TRUE;
end;
end
else
begin
TMEndSession(SHandle);
result:=FALSE;
end;
end;
圖2
圖3
3結束語
由于iButton采用獨特的機械外形設計,具有IC卡、磁卡等信息載體無法比擬的優勢,且采用了堅固的MicroCan封裝,所以具有防塵、防潮、抗震等特性,特別是在惡劣的環境下,存儲于其中的數據信息具有相當高的安全可靠性,所以現在大量應用于野外數據存儲;但又因為其體積小,便于攜帶,在日常生活中也大量使用基于iButton來實現信息管理,對于這類應用完全可以采用本文的設計思想來實現。本文為iButton在管理系統中的應用和研究提供了一種方法和思路,有一定的實用價值。
參考文獻
[1]崔建華,郭瑞軍.Delphi串口通信工程開發實例導航.北京:人民郵電出版社,2003。
[2]王永紅,凌志浩.智能信息載體iButton及其應用.單片機與嵌入式系統應用,2001(4):8~11
[3]翁瑞琴,宋真君,王永紅,凌志浩.LonWorks總線PC智能網卡的研制.華東理工大學學報,2060(5):564~567
- 上一篇:銷售一線團隊管理論文
- 下一篇:PSOBP神經網絡研究論文