對(duì)VB.NET OBEX協(xié)議的簡(jiǎn)單概括
在向大家詳細(xì)介紹VB.NET OBEX協(xié)議數(shù)據(jù)對(duì)象之前,首先讓大家了解下VB.NET OBEX協(xié)議,然后全面介紹VB.NET OBEX協(xié)議數(shù)據(jù)對(duì)象,這里我發(fā)表一下個(gè)人理解,和大家討論討論。詳情請(qǐng)看VB.NET專(zhuān)題。
VB.NET OBEX協(xié)議
目前的紅外線傳輸大都遵循OBEX協(xié)議,這是由微軟、蘋(píng)果、諾基亞等公司專(zhuān)門(mén)為紅外線傳輸而制定的一整套協(xié)議規(guī)則。最新協(xié)議版本是1.3版,在官方網(wǎng)站上下載要 20美元(有錢(qián)的可以去下,我反正是玩玩,叫我交錢(qián)是不可能的,本文中實(shí)現(xiàn)的依據(jù)是在網(wǎng)上找到的OBEX協(xié)議1.2版本的文檔)。協(xié)議文檔的第二章 OBEX Object Model是關(guān)鍵部份,實(shí)現(xiàn)文件傳輸必須對(duì)這章說(shuō)明仔細(xì)研究清楚。以下先就對(duì)這章的一些關(guān)鍵點(diǎn)進(jìn)行講解。
VB.NET OBEX協(xié)議數(shù)據(jù)對(duì)象模型
VB.NET OBEX協(xié)議使用一系列的數(shù)據(jù)包(header)來(lái)進(jìn)行某種對(duì)象(通常是文件)的傳輸,其基本格式是這樣的:
- <Header ID>
- '數(shù)據(jù)包的標(biāo)識(shí)
- <Header Value>
- '數(shù)據(jù)包內(nèi)的數(shù)據(jù)
其中
高倆位二進(jìn)制數(shù)據(jù)
意義
00
這個(gè)數(shù)據(jù)包的
01
這個(gè)數(shù)據(jù)包的
10
11
注意:在
在應(yīng)用中,數(shù)據(jù)包可以嵌套。也就是:Header Value可以包含其它的數(shù)據(jù)包,所以長(zhǎng)度標(biāo)識(shí)非常重要,它可以幫助軟件的實(shí)現(xiàn)根據(jù)包的長(zhǎng)度迅速分離出包內(nèi)的數(shù)據(jù)。
在本文實(shí)現(xiàn)中主要用到的數(shù)據(jù)包標(biāo)識(shí)如下(其余的項(xiàng)請(qǐng)參閱詳細(xì)官方協(xié)議):
常用數(shù)據(jù)包標(biāo)識(shí)列表
十六進(jìn)制值 | 標(biāo)識(shí)名稱(chēng) | 標(biāo)識(shí)含義 |
0x01 | Name | 標(biāo)記對(duì)象的名稱(chēng)(通常是文件的文件名) |
0xC3 | Length | 以字節(jié)為單位計(jì)算的對(duì)象長(zhǎng)度 |
0x44 | Time | 時(shí)間(以ISO 8601規(guī)范為標(biāo)準(zhǔn)) |
0x480x49 | BodyEnd of Body | 標(biāo)識(shí)一個(gè)對(duì)象數(shù)據(jù)塊的開(kāi)始標(biāo)識(shí)這是對(duì)象的最后一個(gè)數(shù)據(jù)塊 |
VB.NET OBEX協(xié)議數(shù)據(jù)對(duì)象傳輸是按照服務(wù)器端/客戶(hù)端的方式進(jìn)行的,每個(gè)操作均提供一個(gè)操作碼以明確操作的含義。以下給出部分?jǐn)?shù)據(jù)發(fā)送所需操作碼列表:
0x80 | Connect | 標(biāo)識(shí)申請(qǐng)開(kāi)始一個(gè)對(duì)象傳輸會(huì)話,并可以在這個(gè)數(shù)據(jù)包中告知紅外接收方一些必要的兼容性信息。 |
0x81 | Disconnect | 標(biāo)識(shí)對(duì)象傳輸會(huì)話結(jié)束 |
0x020x82 | PutFinal_Put | 發(fā)送對(duì)象的put動(dòng)作(當(dāng)標(biāo)識(shí)為0x82時(shí)說(shuō)明這是最后的一個(gè)Put動(dòng)作) |
0xA0 | Success | 說(shuō)明接收端已成功收到put動(dòng)作發(fā)送的所有數(shù)據(jù)(一般是在成功收到Final_Put標(biāo)識(shí)的數(shù)據(jù)包后的反饋) |
0x90 | Continue | 說(shuō)明接收端已收到put動(dòng)作發(fā)送的數(shù)據(jù),因?yàn)镕inal_Put還沒(méi)出現(xiàn),所以要求發(fā)送端繼續(xù)發(fā)送數(shù)據(jù)。 |
發(fā)送方和接收方是的通信的基本格式如下:
字節(jié)0 | 字節(jié)1,2 | 字節(jié)三以后的數(shù)據(jù) |
操作碼 | 整個(gè)通信數(shù)據(jù)包的長(zhǎng)度 | 通訊的數(shù)據(jù) |
【編輯推薦】