RFID及條碼技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
RFID及條碼技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
RFID及條碼技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
RFID及條碼技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
RFID及條碼技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

-.z.實(shí)驗(yàn)一條碼制作與設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康氖煜じ鞣N條碼的類型;掌握條碼編制軟件的安裝和根本操作使用方法;學(xué)會(huì)設(shè)計(jì)不同應(yīng)用領(lǐng)域的條碼、二維碼;能夠讀寫條碼、二維碼信息。二、實(shí)驗(yàn)容制作條形碼標(biāo)簽,二維碼標(biāo)簽。三、根本原理?xiàng)l形碼的編碼原理、二維碼的工作原理。四、所需儀器供電電源、電子標(biāo)簽。1.軟件環(huán)境:windows操作系統(tǒng)、Android操作系統(tǒng)2.硬件環(huán)境:PC、智能手機(jī)實(shí)驗(yàn)步驟1.條形碼設(shè)計(jì)、條形碼讀寫下載并安裝Labelm*通用條碼標(biāo)簽設(shè)計(jì)系統(tǒng)下載:搜索并下載l*setup.e*e安裝:找到l*setup.e*e文件,然后雙擊,按照提示,選擇好安裝路徑后,然后執(zhí)行下一步,即可完成對(duì)軟件的安裝。軟件熟悉:翻開(kāi)Labelm*通用條碼標(biāo)簽設(shè)計(jì)系統(tǒng),默認(rèn)翻開(kāi)新建標(biāo)簽,這里我們選用從模板翻開(kāi),可以預(yù)覽不同應(yīng)用場(chǎng)合的標(biāo)簽?zāi)0澹鹨环_(kāi)、熟悉,觀察其特點(diǎn)、組成等。設(shè)計(jì)標(biāo)簽:翻開(kāi)Labelm*通用條碼標(biāo)簽設(shè)計(jì)系統(tǒng),依次選擇“從模板翻開(kāi)〞、“超市標(biāo)簽〞、“超市水果標(biāo)簽〞。按照模板,對(duì)其標(biāo)簽進(jìn)展修改設(shè)計(jì)。最后保存,以備讀取。圖1.1條碼信息讀?。涸谑謾C(jī)上下載“scanpet中國(guó)〞,然后將其安裝,翻開(kāi),scanpet中國(guó)簡(jiǎn)介:條形碼掃描儀應(yīng)用程序:SCANPET是您完美的庫(kù)存物資管理員。它是一個(gè)通過(guò)使用E*cel作為產(chǎn)品數(shù)據(jù)庫(kù)的條形碼掃描儀。您只需用手機(jī)上的攝像頭來(lái)讀取工程條形碼,它便會(huì)在您的E*cel文件中查找到該工程的信息。SCANPET將貨品管理員、庫(kù)存物資管理員、E*cel數(shù)據(jù)庫(kù)和條形碼掃描儀集于一身:您可以使用SCANPET來(lái)管理您的庫(kù)存物資登記、掌控您的商店、或者讀取條形碼,等等。建立屬于您自己的工程數(shù)據(jù)庫(kù)就如同創(chuàng)立一個(gè)E*cel文件一樣簡(jiǎn)單。本程序有眾多強(qiáng)大的配置選項(xiàng),適用于幾乎任何情形。

圖1.2初次翻開(kāi),軟件提示配置向?qū)?,選擇“體驗(yàn)?zāi)J建?,再選擇“新文件〞,提示是否創(chuàng)立新的輸出文件,選擇“是〞,這個(gè)時(shí)候可以讀取剛剛設(shè)計(jì)的條碼。然后輸入相應(yīng)的商品信息,如圖3所示。最后保存輸出文件。接著返回“體驗(yàn)?zāi)J浇缑妯曔x擇“文件〞,點(diǎn)擊剛剛新建的文件,點(diǎn)擊綠色的條碼圖標(biāo),進(jìn)展掃描剛剛的條碼,這個(gè)時(shí)候?qū)⒄{(diào)出剛剛的商品信息。即完成對(duì)條碼的信息輸入及讀取。二維碼設(shè)計(jì)、二維碼讀寫在線生成二維碼:可以使用手機(jī)二維碼生成軟件,也可以使用網(wǎng)上的二維碼生成器如:草料二維碼。cli.im/te*t/2014082717"rLq87。分別嘗試文本信息、網(wǎng)址,名片、圖片等類型,然后生成二維碼,使用手機(jī)二維碼讀取軟件讀取,如肥貓比價(jià)軟件等等。體驗(yàn)二維碼的應(yīng)用場(chǎng)合及特點(diǎn)。六、實(shí)驗(yàn)分析與心得七、問(wèn)題與建議實(shí)驗(yàn)二標(biāo)簽信息的讀寫一、實(shí)驗(yàn)?zāi)康?.熟悉和學(xué)習(xí)ISO/IEC18000-3,ISO15693標(biāo)準(zhǔn)規(guī)第三局部協(xié)議。2.理解指令容中的讀取和寫入標(biāo)簽數(shù)據(jù)操作局部容。3.學(xué)會(huì)使用RFID原理實(shí)驗(yàn)箱,認(rèn)識(shí)不同頻段的RFID讀寫器模塊。4.理解標(biāo)簽信息的讀寫過(guò)程。二、實(shí)驗(yàn)容通過(guò)發(fā)送不同的根本指令,觀察返回的數(shù)據(jù),了解指令的作用。三、根本原理ISO15693標(biāo)準(zhǔn)規(guī)第三局部。四、所需儀器供電電源、電子標(biāo)簽。五、實(shí)驗(yàn)步驟1、讀取UID將1個(gè)標(biāo)簽放于實(shí)驗(yàn)箱ISO15693M模塊天線之上,給系統(tǒng)上電,翻開(kāi)系統(tǒng)軟件PracticeSystem.e*e,正確設(shè)置串口,波特率115200。運(yùn)行“尋卡〞命令,得到正常標(biāo)簽的UID。操作如圖2.1所示:圖2.12、讀取單個(gè)BLOCK數(shù)據(jù)確認(rèn)系統(tǒng)已經(jīng)得到了單個(gè)標(biāo)簽的UID,在“ISO15693命令〞處,運(yùn)行“讀取單個(gè)數(shù)據(jù)塊〞mand〔命令〕,即可得到這個(gè)UID標(biāo)簽的相應(yīng)Block里面的數(shù)據(jù)。操作如圖2.2所示:圖2.2查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置1個(gè)標(biāo)簽〔卡片〕時(shí)讀寫器讀到這個(gè)標(biāo)簽存儲(chǔ)器地址為0里面存儲(chǔ)的數(shù)據(jù),具體數(shù)據(jù)說(shuō)明請(qǐng)查看位于J*200E*Document\Doc文件夾下的物聯(lián)網(wǎng)RFID教學(xué)軟件PracticeSystem介紹.pdf文件??梢栽贐lkAdd處更改地址,選擇讀取需要地址的數(shù)據(jù)。3、寫單個(gè)BLOK數(shù)據(jù)確認(rèn)系統(tǒng)已經(jīng)得到了單個(gè)標(biāo)簽的UID,在“ISO15693命令〞處選擇寫入單個(gè)數(shù)據(jù)塊,在BlkAdd處輸入想要寫入數(shù)據(jù)的存儲(chǔ)器地址數(shù)值,再在BlkBit處輸入需要寫入存儲(chǔ)器這個(gè)地址的數(shù)據(jù),運(yùn)行“寫入單個(gè)數(shù)據(jù)塊〞mand,即可把需要的數(shù)據(jù)寫入到當(dāng)前標(biāo)簽指定地址的Block存儲(chǔ)器里。操作如圖2.3所示:圖2.3查看“響應(yīng)數(shù)據(jù)〞里面的“Status〞處的信息。上圖為放置1個(gè)標(biāo)簽〔卡片〕時(shí)讀寫器向標(biāo)簽的存儲(chǔ)器00位置寫入12341234這4個(gè)字節(jié)數(shù)據(jù)的響應(yīng)。寫入數(shù)據(jù)后,可以再通過(guò)“讀取單個(gè)數(shù)據(jù)塊〞mand〔命令〕讀取相應(yīng)地址的數(shù)據(jù),與剛剛寫入的數(shù)據(jù)比擬來(lái)驗(yàn)證是否寫入正確。 命令說(shuō)明可以參考位于J*200E*Document\Doc文件夾下的ISO15693標(biāo)準(zhǔn)相關(guān)命令使用說(shuō)明.doc相關(guān)文檔。實(shí)驗(yàn)三RFID防撞系統(tǒng)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.了解防碰撞的原理2.熟悉和學(xué)習(xí)Anticollision容,理解它的原理、流程和軟件實(shí)現(xiàn)方法。3.掌握設(shè)置防碰撞的命令。二、實(shí)驗(yàn)容通過(guò)使用帶anticollison〔防沖突〕處理過(guò)程的指令和不帶anticollison〔防沖突〕處理過(guò)程的指令讀取多個(gè)標(biāo)簽,以及使用不帶anticollison處理過(guò)程的指令讀取單個(gè)標(biāo)簽,比擬其指令和讀取的結(jié)果。分析實(shí)驗(yàn)數(shù)據(jù),總結(jié)防沖撞機(jī)理,掌握指令產(chǎn)生的作用。三、根本原理ISO15693標(biāo)準(zhǔn)規(guī)第三局部第8節(jié)。所需儀器供電電源、多電子標(biāo)簽。實(shí)驗(yàn)步驟1、設(shè)置加電運(yùn)行系統(tǒng),在系統(tǒng)的天線圍放置兩或者兩以上標(biāo)簽。翻開(kāi)系統(tǒng)軟件PracticeSystem.e*e,正確設(shè)置串口,操作如圖3.1所示:圖3.1選擇確定當(dāng)前使用的串口,操作如圖3.2所示:圖3.2點(diǎn)擊“翻開(kāi)〞連接串口。連接正確時(shí)信息欄顯示如圖3.3所示:圖3.32、操作(1)Anticollision〔防沖突〕操作在系統(tǒng)軟件下,“測(cè)試命令〞處,選擇運(yùn)行“測(cè)試防沖突〞,“發(fā)送使用防沖突算法的尋卡命令〞動(dòng)作。操作如圖3.4所示:圖3.4查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置3個(gè)標(biāo)簽〔卡片〕時(shí)“Anticollision〞使用防沖突算法的尋卡命令讀到的數(shù)據(jù)響應(yīng)。注意“S〞行里面后面的數(shù)據(jù)。(2)Non-Anticollision操作保持多標(biāo)簽數(shù)量不變,在系統(tǒng)軟件下,“測(cè)試防沖突〞處,選擇運(yùn)行“發(fā)送不使用防沖突算法的尋卡命令〞動(dòng)作。操作如圖3.5所示:圖3.5查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置3個(gè)標(biāo)簽〔卡片〕時(shí)“Non-Anticollision〞不使用防沖突算法的尋卡命令讀到的數(shù)據(jù)響應(yīng)。注意此時(shí)“S〞行里面后面的數(shù)據(jù)。在系統(tǒng)的射頻磁場(chǎng)保存一電子標(biāo)簽,拿出多余的標(biāo)簽,在系統(tǒng)軟件下,“測(cè)試防沖突〞處,再次選擇運(yùn)行“發(fā)送不使用防沖突算法的尋卡命令〞動(dòng)作。操作如圖3.6所示:圖3.6查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置1個(gè)標(biāo)簽〔卡片〕時(shí)“發(fā)送不使用防沖突算法的尋卡命令〞命令讀到的數(shù)據(jù)響應(yīng)。注意此時(shí)“S〞行里面后面的的數(shù)據(jù)。把這個(gè)數(shù)據(jù)和“發(fā)送不使用防沖突算法的尋卡命令〞操作多個(gè)標(biāo)簽時(shí)以及“發(fā)送使用防沖突算法的尋卡命令〞操作時(shí)“S〞行里面的數(shù)據(jù)比擬,結(jié)合ISO/IEC15693標(biāo)準(zhǔn)協(xié)議,分析實(shí)現(xiàn)現(xiàn)象和結(jié)果,體會(huì)實(shí)驗(yàn)過(guò)程,加深對(duì)RFID防沖撞的理解。實(shí)驗(yàn)四RFIDCRC實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.了解CRC的原理及作用。2.熟悉和學(xué)習(xí)ISO/IEC18000-3,ISO15693標(biāo)準(zhǔn)規(guī)第三局部協(xié)議,其中貫串所有指令局部CRC的容。3.熟悉Anne*D的容。理解它的原理、流程和軟件實(shí)現(xiàn)方法。二、實(shí)驗(yàn)容通過(guò)使用帶CRC處理過(guò)程的指令和不帶CRC處理過(guò)程的指令讀取單個(gè)標(biāo)簽,比擬其指令和讀取的結(jié)果。分析實(shí)驗(yàn)數(shù)據(jù),了解CRC的作用,掌握指令的應(yīng)該取得的效果。三、根本原理ISO15693標(biāo)準(zhǔn)規(guī)第三局部下的Anne*D局部。四、所需儀器供電電源、單電子標(biāo)簽。五、實(shí)驗(yàn)步驟1、設(shè)置加電運(yùn)行系統(tǒng),在系統(tǒng)的天線圍放置1個(gè)標(biāo)簽。翻開(kāi)系統(tǒng)軟件PracticeSystem.e*e,正確設(shè)置串口,設(shè)置操作同防碰撞實(shí)驗(yàn)局部的設(shè)置操作。2、操作2.1、帶CRC命令操作在系統(tǒng)軟件下,“測(cè)試循環(huán)冗余校驗(yàn)〞處,選擇運(yùn)行“發(fā)送包含冗余校驗(yàn)的尋卡指令〞動(dòng)作。操作如圖4.1所示:圖4.1查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置1個(gè)標(biāo)簽〔卡片〕時(shí)讀寫器發(fā)送一個(gè)“包含冗余校驗(yàn)的尋卡指令〞的讀取命令時(shí)讀到標(biāo)簽的數(shù)據(jù)響應(yīng)。注意“S〞行里面的“CRC〞處的數(shù)據(jù)。2.2、不帶CRC命令操作保持單標(biāo)簽不變,在系統(tǒng)軟件下,“測(cè)試循環(huán)冗余校驗(yàn)〞處,選擇運(yùn)行“發(fā)送不帶含冗余校驗(yàn)的尋卡指令〞動(dòng)作。操作如圖4.2所示:圖4.2查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置1個(gè)標(biāo)簽〔卡片〕時(shí)讀寫器發(fā)送一個(gè)“不帶含冗余校驗(yàn)的尋卡指令〞的讀取命令時(shí)讀到標(biāo)簽的數(shù)據(jù)響應(yīng)。注意此時(shí)“S〞行里面的“CRC〞處的數(shù)據(jù)。在上兩圖中可以從信息欄里觀測(cè):時(shí)間為13:16:13和時(shí)間為14:01:44發(fā)送的指令的區(qū)別。其中時(shí)間為13:16:13的指令是帶CRC碼的指令,時(shí)間為14:01:44的指令是不帶CRC碼的指令。比擬軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),結(jié)合ISO/IEC15693標(biāo)準(zhǔn)協(xié)議,分析實(shí)現(xiàn)現(xiàn)象和結(jié)果,體會(huì)實(shí)驗(yàn)過(guò)程,加深對(duì)CRC16循環(huán)冗余檢查機(jī)制的理解。實(shí)驗(yàn)五RFID數(shù)據(jù)包〔1〕數(shù)據(jù)包分析一、實(shí)驗(yàn)?zāi)康?.理解 RFID標(biāo)簽和讀寫器之間傳輸?shù)男畔臉?gòu)造2.熟悉ISO/IEC18000-3,ISO15693標(biāo)準(zhǔn)規(guī)第三局部協(xié)議和指令容。3.掌握信息包相應(yīng)的分析方法。4.熟悉和學(xué)習(xí)本系統(tǒng)通訊接口協(xié)議。5.理解Reader與主機(jī)之間的通訊方式、流程和軟件實(shí)現(xiàn)方法。二、實(shí)驗(yàn)容通過(guò)發(fā)送尋卡〔INVENTORY〕命令從電子標(biāo)簽里讀出UID,通過(guò)在PC軟件下分析相關(guān)的數(shù)據(jù),了解、掌握讀寫器和標(biāo)簽之間數(shù)據(jù)包的組成和構(gòu)造。通過(guò)使用帶起始標(biāo)志處理過(guò)程的指令和不帶起始標(biāo)志處理過(guò)程的指令讀取單個(gè)標(biāo)簽,比擬其指令和讀取的結(jié)果。分析實(shí)驗(yàn)數(shù)據(jù),了解Reader與主機(jī)之間的通訊方式,掌握指令的應(yīng)該取得的效果。三、根本原理ISO15693標(biāo)準(zhǔn)規(guī)第三局部的第4節(jié)和第7節(jié)容。此通訊協(xié)議標(biāo)準(zhǔn)主要是規(guī)定了Reader與主機(jī)之間的通訊方式,此通訊協(xié)議是建立在RS232串行通訊根底上的,實(shí)現(xiàn)的是單點(diǎn)對(duì)單點(diǎn)的通訊,類似于3964通訊協(xié)議。協(xié)議規(guī)定以ASCII〔美國(guó)標(biāo)準(zhǔn)信息交換代碼〕模式通信。四、所需儀器供電電源、電子標(biāo)簽。五、實(shí)驗(yàn)步驟1.數(shù)據(jù)包分析1.1、設(shè)置加電運(yùn)行系統(tǒng),在系統(tǒng)的天線圍放置1個(gè)標(biāo)簽。翻開(kāi)系統(tǒng)軟件PracticeSystem.e*e,正確設(shè)置串口,設(shè)置操作同防碰撞實(shí)驗(yàn)局部的設(shè)置操作。1.2、操作(1)運(yùn)行“尋卡〞mand〔命令〕在系統(tǒng)軟件下,“ISO15693命令〞處,選擇運(yùn)行運(yùn)行“尋卡〞mand動(dòng)作。操作如圖5.1所示:圖5.1查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置1個(gè)標(biāo)簽〔卡片〕時(shí)讀寫器發(fā)送一個(gè)“尋卡〞讀取命令時(shí)讀到標(biāo)簽的數(shù)據(jù)響應(yīng)。上圖中在信息欄里,命令局部“S〞行里面后面的數(shù)據(jù)“時(shí)間:09:29:40命令數(shù)據(jù)為:3A0201020027BEDA0D0A〞,其中“Code〞對(duì)應(yīng)的數(shù)據(jù)是“01〞,“27〞為命令標(biāo)志。上圖中在信息欄里,標(biāo)簽的響應(yīng)局部“R〞行里面“時(shí)間:09:29:40響應(yīng)數(shù)據(jù):3A02000A0000000BEDD521000104E08EE8ODOA〞,其中“0A〞數(shù)據(jù)后面的第二、三個(gè)字節(jié)是標(biāo)簽標(biāo)簽返回的第一個(gè)和第二個(gè)字節(jié)的數(shù)據(jù)分別為:Flags:標(biāo)簽返回的標(biāo)志,DSFID:數(shù)據(jù)存儲(chǔ)格式標(biāo)志,后面的8個(gè)字節(jié)是標(biāo)簽的UID號(hào),具體數(shù)據(jù)說(shuō)明請(qǐng)查看位于J*200E*Document\Doc文件夾下的物聯(lián)網(wǎng)RFID教學(xué)軟件PracticeSystem介紹.pdf文件。結(jié)合ISO/IEC15693標(biāo)準(zhǔn)協(xié)議,分析實(shí)現(xiàn)現(xiàn)象和結(jié)果,總結(jié)實(shí)驗(yàn)過(guò)程,加深對(duì)傳輸?shù)男畔鼣?shù)據(jù)構(gòu)造的理解。2.信令數(shù)據(jù)包2.1、設(shè)置加電運(yùn)行系統(tǒng),在系統(tǒng)的天線圍放置1個(gè)標(biāo)簽。翻開(kāi)系統(tǒng)軟件PracticeSystem.e*e,正確設(shè)置串口,設(shè)置操作同防碰撞實(shí)驗(yàn)局部的設(shè)置操作。2.2、操作(1)帶起始標(biāo)志命令操作在系統(tǒng)軟件下,“ISO15693命令〞處,選擇運(yùn)行“發(fā)送包含幀起始符的尋卡命令〞動(dòng)作。操作如圖5.2所示:圖5.2查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置1個(gè)標(biāo)簽〔卡片〕時(shí)讀寫器發(fā)送一個(gè)帶起始標(biāo)志的讀取命令時(shí)讀到標(biāo)簽的數(shù)據(jù)響應(yīng)。注意“S〞行里面后面“SOF〞處的數(shù)據(jù)。(2)不帶起始標(biāo)志命令操作保持單標(biāo)簽不變,在系統(tǒng)軟件下,“測(cè)試命令〞處,選擇運(yùn)行“發(fā)送不含幀起始符的尋卡命令〞動(dòng)作。操作如圖5.3所示:圖5.3查看“響應(yīng)數(shù)據(jù)〞,就是軟件界面下部,命令參數(shù)設(shè)置和結(jié)果顯示區(qū)里“R〞行,后面的數(shù)據(jù)和軟件界面中部的消息顯示區(qū)里的數(shù)據(jù),上圖為放置1個(gè)標(biāo)簽〔卡片〕時(shí)讀寫器發(fā)送一個(gè)不帶起始標(biāo)志的讀取命令時(shí)讀到標(biāo)簽的數(shù)據(jù)響應(yīng)。注意“S〞行里面后面“SOF〞處的數(shù)據(jù)。比擬兩個(gè)命令“R〞行里面后面的數(shù)據(jù),結(jié)合ISO/IEC15693標(biāo)準(zhǔn)協(xié)議,分析實(shí)現(xiàn)現(xiàn)象和結(jié)果,總結(jié)實(shí)驗(yàn)過(guò)程,了解本系統(tǒng)Reader與主機(jī)之間的通訊方式。加深對(duì)信令數(shù)據(jù)包數(shù)據(jù)構(gòu)造的理解。實(shí)驗(yàn)六RFID應(yīng)用程序的建立一、實(shí)驗(yàn)?zāi)康?.設(shè)計(jì)、開(kāi)發(fā)一個(gè)可連接實(shí)驗(yàn)系統(tǒng)平臺(tái)并且可以做讀卡操作的應(yīng)用程序。2.掌握使用DLL的技能,通過(guò)調(diào)用DLL里面的函數(shù),開(kāi)發(fā)出實(shí)際應(yīng)用程序軟件,滿足實(shí)際應(yīng)用的需要。3.理解RFID應(yīng)用系統(tǒng)開(kāi)發(fā)流程。二、實(shí)驗(yàn)容使用MicrosoftVisualStudio2010設(shè)計(jì)如下圖的應(yīng)用程序界面如圖6.1 圖6.1編寫代碼,能使程序運(yùn)行到達(dá)實(shí)驗(yàn)?zāi)康娜?、根本原理C*語(yǔ)言編程規(guī),DLL的調(diào)用規(guī)四、實(shí)驗(yàn)步驟1.啟動(dòng)MicrosoftVisualStudio2010開(kāi)發(fā)平臺(tái),在C*模塊下,新建一個(gè)Windows船體應(yīng)用程序,界面如圖6.2:圖6.2

新建完成后,給工程取名為ISO15693_Reader,進(jìn)入界面后如圖6.3,右鍵點(diǎn)擊窗體選擇屬性窗口,在Te*t屬性中取名為RFIDPracticeTeaching圖6.3

完成后開(kāi)場(chǎng)建立功能模塊,在工具箱中拖出GroupBo*空間,放置在窗體上,并拖拽出Lable與boBo*控件,如下圖,在Lable控件的Te*t屬性中分別取名:Port與Baud表示串口與波特率,并給兩個(gè)boBo*取名cmb_Port與cmb_Baud,如圖6.4圖6.4

完成后,開(kāi)場(chǎng)搭建翻開(kāi)串口,關(guān)閉串口與刷新串口的按鈕,從工具箱中拖拽出三個(gè)Button,如下圖放置在窗體中,在其Te*t屬性中分別取名:Open、Close、Refresh在其Name屬性中取名為:btn_Port、btn_Baud、btn_Refresh,如圖6.5圖6.5

建立完成后,如下圖,搭建實(shí)驗(yàn)類型,也即對(duì)應(yīng)的命令窗體,放置GroupBo*,取名mandOperate:在其中分別放置7個(gè)RadioButton分別取其Te*t屬性如下圖,并且放置兩個(gè)按鈕和2個(gè)boBo*,Run按鈕和AutRun按鈕表示執(zhí)行當(dāng)前的命令,Name屬性分別取名btn_Run,btn_AutoRun,Run表示執(zhí)行一次,Auto表示循環(huán)執(zhí)行,對(duì)RadioButton分別取名為rb_Inventory、rb_ReadSingle、rb_WriteSingle、rb_StayQuiet、rb_ResetReady,rb_ReadMultiple,rb_AutoInventory,在ModulationSystem:窗口中,放置有兩個(gè)RadioButton,分別取名為ASK,FSK,表示兩種調(diào)制模式,下方兩個(gè)boBo*分別表示標(biāo)簽的集合,以及重置模式的選項(xiàng),取名為cmb_tags,cmb_Reset,如圖6.6圖6.6

設(shè)置完成后搭建對(duì)應(yīng)的讀取數(shù)據(jù),寫入數(shù)據(jù)的參數(shù)窗體,如下圖,放置一個(gè)GroupBo*,其中放置一些文本框和Te*tBo*,分別表示讀取/寫入數(shù)據(jù)的地址,大小,已經(jīng)長(zhǎng)度,在Resulte后面放置一個(gè)Te*tBo*,設(shè)置其MultiLine屬性為True用來(lái)存放讀取或者寫入的數(shù)據(jù),還需放置一個(gè)文本框用來(lái)表示寫入卡片數(shù)據(jù)塊的數(shù)據(jù),格式為16進(jìn)制的字符串,如圖6.7圖6.7

完成后搭建最后的顯示界面:放置一個(gè)GroupBo*取名為OutputInfo:表示輸出的信息窗口,兩個(gè)按鈕取名為:ClearEveryTe*t,OutSystem,分別表示清空所有顯示顯示以及推出系統(tǒng)的按鈕,下方的List_Info表示信息顯示的控件,取名為L(zhǎng)ist_Info,如圖6.8圖6.8至此窗體界面已經(jīng)搭建完成,個(gè)別地方控件的Name屬性的取名自己定義,Name屬性是該控件的唯一標(biāo)識(shí),不可重復(fù)

編寫軟件代碼:編寫刷新串口,翻開(kāi)與關(guān)閉對(duì)應(yīng)的串口代碼,首先引用DLL,右鍵點(diǎn)擊解決方案中的引用,把放置ISO15693DLL.dll與SLABHIDDevice.dll的文件引用到該程序中,引入命名空間以及聲明ISO15693類的實(shí)例如圖6.9圖6.9 雙擊窗體上的Refresh按鈕進(jìn)入到代碼界面:寫一個(gè)方法RefreshPort()用于刷新按鈕,以供使用,代碼如下privatevoidRefreshPort(){cmb_Port.Items.Clear();cmb_Port.Te*t="";string[]Ports=System.IO.Ports.SerialPort.GetPortNames();foreach(variteminPorts){cmb_Port.Items.Add(item);}if(Ports.Length>=0){cmb_Port.SelectedInde*=0;}}

雙擊界面上的Form窗體進(jìn)入到Load事件中,調(diào)用Refresh方法以獲取在該設(shè)備下的所有串口名,如圖6.10圖6.10在窗體界面上雙擊Open按鈕進(jìn)入btn_Open_Click事件中編寫對(duì)應(yīng)的翻開(kāi)串口的代碼,首先編寫一個(gè)委托與方法用于跨線程顯示List_Info的信息,也就是串口所有操作的信息都會(huì)在其顯示代碼如下:privatedelegatevoidAddList(stringmsg);privatevoidShowList(stringmsg){if(list_Info.InvokeRequired){AddListd=newAddList(ShowList);list_Info.Invoke(d,msg);}else{list_Info.Items.Insert(0,DateTime.Now.ToLongTimeString()+":êo"+msg);}}接著編寫btn_Open_Click事件中關(guān)于翻開(kāi)串口的代碼://翻開(kāi)串口privatevoidbtn_Open_Click(objectsender,EventArgse){if(cmb_Port.SelectedInde*<0){ShowList("翻開(kāi)失敗,請(qǐng)選擇串口!");return;}Bytevalue=Reader.OpenSerialPort(cmb_Port.Te*t,Convert.ToInt32(cmb_Baud.Te*t));if(value==0*00){ShowList(string.Format("Port:[{0}],OpenSucceed!,Baud:[{1}]",cmb_Port.Te*t,cmb_Baud.Te*t));}else{ShowList(string.Format("Port[{0}],OpenFail!",cmb_Port.Te*t));}}如圖6.11所示:圖6.11同上,雙擊Close按鈕進(jìn)入關(guān)閉事件中,調(diào)用ISO15693中的關(guān)閉串口的方法Reader.CloseSerialPort();代碼如下://關(guān)閉串口privatevoidbtn_Close_Click(objectsender,EventArgse){Bytevalue=Reader.CloseSerialPort();if(value==0*00){ShowList(string.Format("Port[{0}],CloseSucceed!",cmb_Port.Te*t));}else{ShowList(string.Format("Port[{0}],CloseFail!",cmb_Port.Te*t));}}如圖6.12所示:圖6.12雙擊Run按鈕進(jìn)入對(duì)應(yīng)的時(shí)間編輯界面:Ismand變量中每一個(gè)值表示對(duì)應(yīng)的窗體上的RadioButton,對(duì)應(yīng)的不同的指令I(lǐng)smand取值為:1==尋單卡,并有不同調(diào)制模式 2==寫入數(shù)據(jù)到指定的數(shù)據(jù)塊中 3==使對(duì)應(yīng)的卡片處于靜默狀態(tài) 4==重置卡片的準(zhǔn)備狀態(tài),有四種模式 5==讀取卡片的多個(gè)數(shù)據(jù)塊中的數(shù)據(jù)具體代碼如下: //尋到的卡片數(shù)目privateInt32TagCount=0;//尋到的卡片號(hào)privateString[]TagNumber=null;//聲明一個(gè)卡片集合用于存放不同卡號(hào)的卡片數(shù)據(jù)privateList<string>_listTag=newList<string>();//執(zhí)行方法,所有指令都通過(guò)這個(gè)按鈕來(lái)控制privatevoidbtn_Run_Click(objectsender,EventArgse){Bytevalue;Byte[]BlockData=null;//判斷是否翻開(kāi)串口if(Reader.IsOpen){//調(diào)用一個(gè)Switch來(lái)對(duì)每一種選中命令執(zhí)行相對(duì)應(yīng)的方法switch(Ismand){//尋單卡case0:if(rb_ask.Checked){value=Reader.Inventory(ModulateMethod.ASK,InventoryModel.Single,refTagCount,refTagNumber);if(value==0*00){ShowList(String.Format("Modulate.ASK,TagCount:{0},TagNumber:{1}",TagCount,TagNumber[0]));if(!_listTag.Contains(TagNumber[0])){_listTag.Add(TagNumber[0]);cmb_tags.Items.Add(TagNumber[0]);cmb_tags.SelectedInde*=0;}}else{ShowList("InventoryLose!NoTagNumber");}}elseif(rb_fsk.Checked){value=Reader.Inventory(ModulateMethod.FSK,InventoryModel.Single,refTagCount,refTagNumber);if(value==0*00){if(!_listTag.Contains(TagNumber[0])){_listTag.Add(TagNumber[0]);cmb_tags.Items.Add(TagNumber[0]);cmb_tags.SelectedInde*=0;}ShowList(String.Format("Modulate.FSK,TagCount:{0},TagNumber:{1}",TagCount,TagNumber[0]));}else{ShowList("InventoryLose!NoTagNumber");}}else{}break;//讀取指定的數(shù)據(jù)塊中的數(shù)據(jù)case1:if(cmb_tags.Te*t!=""){value=Reader.ReadSingleBlock(cmb_tags.Te*t,BlockLength.ShortBlock4Byte,Convert.ToByte(t*t_StartAdress.Te*t.Trim(),16),refBlockData);if(value==0*00){StringBuildersb=newStringBuilder();for(inti=0;i<BlockData.Length;i++){sb.Append(BlockData[i].ToString("*2"));}t*t_Resulte.Te*t=sb.ToString();t*t_WriteData.Te*t=t*t_Resulte.Te*t;ShowList(string.Format("Reader:[{0}],Adress:[{1}],ReaderData:{2}",cmb_tags.Te*t,t*t_StartAdress.Te*t.Trim(),ByteArrayToString(BlockData)));}}else{ShowList("請(qǐng)先尋到一或多卡片!");}break;//寫入數(shù)據(jù)到卡片中指定的數(shù)據(jù)塊case2://ByteBlockLength=Byte.Parse(t*t);if(cmb_tags.Te*t!=""){Byte[]DataForWrite=newByte[Convert.ToInt32(t*t_BlockSize.Te*t.Trim())];StringstrForWrite=t*t_WriteData.Te*t.Trim();try{for(Bytei=0;i<DataForWrite.Length;i++){DataForWrite[i]=Convert.ToByte(strForWrite.Substring(i*2,2),16);}}catch(System.ArgumentOutOfRangeE*ceptione*){ShowList(String.Format("錯(cuò)誤:寫入的數(shù)據(jù)長(zhǎng)度不夠{0}Byte!",Convert.ToInt32(t*t_BlockSize.Te*t.Trim())));//t*t_WriteData_2.SelectAll();//t*t_WriteData_2.Focus();return;}catch(System.E*ceptione*){ShowList(String.Format("錯(cuò)誤:請(qǐng)?zhí)顚憑0}Byte的16進(jìn)制數(shù)據(jù)!",Convert.ToInt32(t*t_BlockSize.Te*t.Trim())));t*t_WriteData.SelectAll();t*t_WriteData.Focus();return;}value=Reader.WriteSingleBlock(cmb_tags.Te*t,BlockLength.ShortBlock4Byte,Convert.ToByte(t*t_StartAdress.Te*t.Trim(),16),DataForWrite);if(value==0*00){ShowList(string.Format("Succeed!,Adress:[{0}],WriteData:{1}",t*t_StartAdress.Te*t,t*t_WriteData.Te*t));}else{ShowList(string.Format("Lose!Adress:[{0}],WriteData:{1}",t*t_StartAdress.Te*t,t*t_WriteData.Te*t));}}else{ShowList("請(qǐng)先尋到一或多卡片!");}break;//使卡片靜默case3:if(cmb_tags.Te*t!=""){value=Reader.StayQuiet(cmb_tags.Te*t);if(value==0*00){ShowList(string.Format("命令執(zhí)行成功,卡片[{0}]靜默成功!",cmb_tags.Te*t));}else{ShowList(string.Format("命令執(zhí)行失敗,卡片[{0}]靜默失??!",cmb_tags.Te*t));}}break;//重置卡片狀態(tài)case4:if(cmb_Reset.SelectedInde*!=0){//ResetModeresetMode;switch(cmb_Reset.SelectedInde*){case1://resetMode=ResetMode.RstAllQuiet;value=Reader.ResetToReady(ResetMode.RstAllQuiet);break;case2://resetMode=ResetMode.RstAllSelected;value=Reader.ResetToReady(ResetMode.RstAllSelected);break;case3://resetMode=ResetMode.RstSpecificQuiet;value=Reader.ResetToReady(ResetMode.RstSpecificQuiet,cmb_tags.Te*t);break;case4://resetMode=ResetMode.RstSpecificSelected;value=Reader.ResetToReady(ResetMode.RstSpecificSelected,cmb_tags.Te*t);break;default://resetMode=ResetMode.RstSpecificQuiet;value=Reader.ResetToReady(ResetMode.RstAllQuiet);break;}if(value==0*00){switch(cmb_Reset.SelectedInde*){case1:ShowList("重置所有靜默卡片命令執(zhí)行成功!");break;case2:ShowList("重置所有選中卡片命令執(zhí)行成功!");break;case3:ShowList(string.Format("重置靜默卡片[{0}]執(zhí)行成功!",cmb_tags.Te*t));break;case4:ShowList(string.Format("重置選中卡片[{0}]執(zhí)行成功!",cmb_tags.Te*t));break;default://resetMode=ResetMode.RstSpecificQuiet;break;}}else{switch(cmb_Reset.SelectedInde*){case1:ShowList("重置所有靜默卡片命令執(zhí)行失敗!");break;case2:ShowList("重置所有選中卡片命令執(zhí)行失??!");break;case3:ShowList(string.Format("重置靜默卡片[{0}]執(zhí)行失??!",cmb_tags.Te*t));break;case4:ShowList(string.Format("重置選中卡片[{0}]執(zhí)行失??!",cmb_tags.Te*t));break;default://resetMode=ResetMode.RstSpecificQuiet;break;}}}else{ShowList("請(qǐng)選擇一種靜默方式才可執(zhí)行!");}break;//讀取多個(gè)數(shù)據(jù)塊case5:if(cmb_tags.Te*t!=""){Byte[]BlockDataMore=null;intcount=0;if(int.TryParse(t*t_BlockCount.Te*t.Trim(),outcount)){intAddress=0;if(int.TryParse(t*t_StartAdress.Te*t.Trim(),outAddress)){value=Reader.ReadMultiBlock(cmb_tags.Te*t,BlockLength.ShortBlock4Byte,(byte)Address,(byte)count,refBlockDataMore);if(value==0*00){StringBuildersb=newStringBuilder();for(inti=0;i<BlockDataMore.Length;i++){sb.Append(BlockDataMore[i].ToString("*2"));}t*t_Resulte.Te*t=sb.ToString();t*t_WriteData.Te*t=t*t_Resulte.Te*t;ShowList(string.Format("Reader[{0}],Aderess:{1},ReaderCount:{3},Data:{2}",cmb_tags.Te*t,t*t_StartAdress.Te*t.Trim(),ByteArrayToString(BlockDataMore),count));}}}else{MessageBo*.Show("請(qǐng)?zhí)顚懻_的讀取數(shù)據(jù)的大小");}}break;default:break;}}else{ShowList("串口未翻開(kāi),請(qǐng)翻開(kāi)串口!");}}其中Ismand值,雙擊每個(gè)命令的RadioButto進(jìn)入后設(shè)置相對(duì)應(yīng)的值即可如圖6.13所示:圖6.13退出系統(tǒng)以及清空文本框的代碼如下:privatevoidbtn_CloseSystem_Click(objectsender,EventArgse){if(MessageBo*.Show("是否退出系統(tǒng)?","提示",MessageBo*Buttons.OKCancel,MessageBo*Icon.Question)==System.Windows.Forms.DialogResult.OK){this.Close();}}//清空文本框privatevoidbtn_Clear_Click(objectsender,EventArgse){t*t_Resulte.Te*t="";t*t_WriteData.Te*t="";list_Info.Items.Clear();}當(dāng)用戶選擇尋多卡指令時(shí),需要使用到多線程:代碼如下://循環(huán)尋多卡privatevoidbtn_AutoRun_Click(objectsender,EventArgse){//開(kāi)啟尋多卡的線程Threadth=newThread(AutoRun);th.IsBackground=true;if(btn_AutoRun.Te*t=="AutoRun"){IsStop=true;btn_AutoRun.Te*t="StopRun";th.Start();}else{IsStop=false;btn_AutoRun.Te*t="AutoRun";}}//添加標(biāo)簽的委托privatedelegatevoidAddItem(stringtag);privatevoidAddCmbTagNumber(stringtag){if(cmb_tags.InvokeRequired){AddItemd=newAddItem(AddCmbTagNumber);cmb_tags.Invoke(d,tag);}else{cmb_tags.Items.Add(tag);cmb_tags.SelectedInde*=0;}}//控制尋多卡循環(huán)是否繼續(xù)進(jìn)展privateBooleanIsStop=false;//尋多卡的循環(huán)方法privatevoidAutoRun(){Bytevalue;while(IsStop){if(rb_ask.Checked){value=Reader.Inventory(ModulateMethod.ASK,InventoryModel.Multiple,refTagCount,refTagNumber);if(value==0*00){for(inti=0;i<TagNumber.Length;i++){ShowList(String.Format("Modulate.ASK,TagCount:{0},TagNumber:{1}",TagCount,TagNumber[i]));if(!_listTag.Contains(TagNumber[i])){_listTag.Add(TagNumber[i]);AddCmbTagNumber(TagNumber[i]);}}}else{ShowList("InventoryLose!NoTagNumber");}}elseif(rb_fsk.Checked){value=Reader.Inventory(ModulateMethod.FSK,InventoryModel.Multiple,refTagCount,refTagNumber);if(value==0*00){for(inti=0;i<TagNumber.Length;i++){if(!_listTag.Contains(TagNumber[i])){_listTag.Add(TagNumber[i]);AddCmbTagNumber(TagNumber[i]);}ShowList(String.Format("Modulate.FSK,TagCount:{0},TagNumber:{1}",TagCount,TagNumber[i]));}}else{ShowList("InventoryLose!NoTagNumber");}}else{}}}如圖6.14所示:圖6.14以上即為開(kāi)發(fā)全過(guò)程,對(duì)應(yīng)的串口操作的函數(shù)說(shuō)明請(qǐng)參見(jiàn)位于J*200E*Document\J*2**PCSoftware\二次開(kāi)發(fā)包\HF_ISO15693\應(yīng)用手冊(cè)文件夾下的ISO15693DLL.dll文檔說(shuō)明.doc五、實(shí)驗(yàn)測(cè)試連接設(shè)備后上電,保證讀寫器能正常工作1、尋單卡Inverntory如下圖,點(diǎn)擊Open翻開(kāi)串口后,選擇Inventory指令,點(diǎn)擊Run按鈕即可尋到卡片,如圖6.15,Inventory指令為尋單卡指令,故讀寫器上只能放置一卡片,多了會(huì)提示讀卡失敗圖6.152、自動(dòng)尋多卡AutoInventory如下圖,點(diǎn)擊AutoInventory指令后,點(diǎn)擊AutoRun即可啟動(dòng)循環(huán)尋多卡指令,讀寫器上放任意卡片均可讀出數(shù)據(jù),此時(shí)AutoRun上的文字會(huì)變?yōu)镾topRun,再次點(diǎn)擊即可關(guān)閉循環(huán)尋多卡,如圖6.16圖6.163、讀取單個(gè)數(shù)據(jù)塊ReadSingleBlock如下圖,選中ReadSingleBlock后,在Tags標(biāo)簽集合中選中想讀取的標(biāo)簽,在Parameter窗口中,設(shè)置讀取數(shù)據(jù)的起始地址,即為StartAdress,為整數(shù)且大于0讀取數(shù)據(jù)塊的字節(jié)數(shù)固定為4個(gè)字節(jié),設(shè)置好起始地址后點(diǎn)擊Run按鈕即可讀取到數(shù)據(jù),讀取到的數(shù)據(jù)會(huì)顯示在Resulte中,如圖6.17圖6.174、讀取多個(gè)數(shù)據(jù)塊中的數(shù)據(jù)ReadMultipleBlock同讀取單個(gè)數(shù)據(jù)塊的步驟一樣,在最后在BlockCount,即讀取的數(shù)據(jù)塊的多少,例如2即為從起始地址為多少的未知讀取兩個(gè)數(shù)據(jù)塊的數(shù)據(jù),如圖6.18所示圖6.185、寫入數(shù)據(jù)到單個(gè)數(shù)據(jù)塊,WriteSingleBlock首先尋到卡片后,選擇對(duì)應(yīng)的卡片,設(shè)定好要寫入的地址塊,在WriteData中輸入要寫入的數(shù)據(jù),寫入的數(shù)據(jù)為4個(gè)字節(jié)的16進(jìn)制數(shù)據(jù),請(qǐng)確保輸入正確,例如12345678,設(shè)定好后,選擇WriteSingleBlock,點(diǎn)擊Run按鈕即可,如圖6.19所示:圖6.19可以通過(guò)讀取相應(yīng)的地址塊來(lái)查看是否寫入成功6、使*一卡片靜默,StayQuiet選中StayQuiet,選擇要靜默的卡片,之后點(diǎn)擊Run按鈕即可,注,靜默之后的卡片讀寫器無(wú)法識(shí)別到,需要重置后才可以使用,后面會(huì)介紹到重置的功能如圖6.20所示圖6.20

7、使一或多卡片重置準(zhǔn)備狀態(tài),ResettoReady選中ResettoReady后,選擇卡片,或者不選擇卡片均可,在Reset中選擇一種重置方式,有四種,詳情參照ISO15693DLL說(shuō)明文檔.doc文檔說(shuō)明,點(diǎn)擊Run即可恢復(fù)到正常狀態(tài),如圖6.21所示:圖6.21六、實(shí)驗(yàn)總結(jié) 通過(guò)本實(shí)驗(yàn),實(shí)驗(yàn)人員能了解ISO15693標(biāo)準(zhǔn)下面常用的可選的指令功能、使用方法和提高判斷指令執(zhí)行結(jié)果的能力,通過(guò)編程使用ReadMultipleBlock指令,加強(qiáng)對(duì)電子標(biāo)簽存儲(chǔ)空間構(gòu)造的理解。 整個(gè)實(shí)驗(yàn)源文件,位于J*200E*Document\J*2**PCSoftware\C*\E*periment_C*文件夾里面的ISO15693_Reader.rar壓縮文件里面,可供參考。ISO15693標(biāo)準(zhǔn)相關(guān)的其余可選指令,由于它們不是經(jīng)常使用,而且這些可選指令需根據(jù)具體廠家生產(chǎn)的具體標(biāo)簽的數(shù)據(jù)手冊(cè)做對(duì)應(yīng)的設(shè)置才能很好的執(zhí)行,才能實(shí)現(xiàn)相應(yīng)的功能。因此,在此不對(duì)它們進(jìn)展相關(guān)的實(shí)驗(yàn)。實(shí)驗(yàn)七UHF900MISO18000-6實(shí)驗(yàn)讀寫ISO18000-6協(xié)議標(biāo)簽的讀寫器是U

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論