卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

USB dongle協(xié)議

USB dongle與PC 程序之間的通信例子說明 簡(jiǎn)介USB dongle和PC 之間使用USB 相連,并在PC 上虛擬成一個(gè)串口。PC 程序通過使用相應(yīng)的協(xié)議讀寫該串口,從而操作USB dongl

USB dongle與PC 程序之間的通信例子說明 簡(jiǎn)介

USB dongle和PC 之間使用USB 相連,并在PC 上虛擬成一個(gè)串口。PC 程序通過使用相應(yīng)的協(xié)議讀寫該串口,從而操作USB dongle。

USB dongle在PC 之間起到收發(fā)數(shù)據(jù)的功能:

USB dongle接收來自PC 的數(shù)據(jù)發(fā)送命令,從中解析出目的地址和數(shù)據(jù)內(nèi)容后,將數(shù)據(jù)發(fā)送到該地址的USB dongle;

USB dongle在接受來自其他USB dongle的數(shù)據(jù)包后,從中解析出目的地址、源地址、數(shù)據(jù)內(nèi)容等信息,并將這些信息發(fā)送到PC

串口通信協(xié)議

通信模式

USB dongle和PC 之間以包的形式進(jìn)行通信。這是通過在原始的基于字節(jié)流讀取和寫入的串口的基礎(chǔ)上,使用特定的組包結(jié)構(gòu),對(duì)串口中所傳輸?shù)臄?shù)據(jù)進(jìn)行封包,使用包的方式進(jìn)行串口兩端設(shè)備之間的數(shù)據(jù)傳輸。

這種基于串口包的數(shù)據(jù)傳輸方式將串口兩端的設(shè)備(此處分別為PC 程序和USB dongle)看做一個(gè)擁有唯一地址標(biāo)識(shí)(PAN 和短地址)的通信設(shè)備,并在串口包中攜帶該串口包所對(duì)應(yīng)的目標(biāo)地址和源地址。

使用串口包的通用格式,PC 程序和USB dongle之間可以進(jìn)行各種數(shù)據(jù)的交互(數(shù)據(jù)被存放在有效載荷中),從而實(shí)現(xiàn)相應(yīng)的功能:

通信協(xié)議 串口包格式

各個(gè)字段的說明如下:

前導(dǎo)字符:用于標(biāo)識(shí)一個(gè)包的開始,內(nèi)容為0xF0F0

,

包長度:包括從“序號(hào)”到“有效載荷”的長度 序號(hào):取值0到255,總是遞增(255 0除外) 目標(biāo)PAN/目標(biāo)短地址:串口包的目的地址 固定為0xFFFF / 0xFFFF 源PAN/源地址:串口包的源地址 PC 發(fā)包到USB dongle時(shí),總是填寫 0 / 0 USB dongle到PC 的串口包中,該兩字段為USB dongle的地址 包類型:固定填寫0x11(不會(huì)收到包類型不是0x11的串口包) 端口: 發(fā)送串口包到USB dongle時(shí)固定填寫8080(10進(jìn)制) 接受串口包時(shí),過濾(忽略)端口不是8080的串口包 CRC 校驗(yàn):從“序號(hào)”到“有效載荷”的CRC16校驗(yàn)。該CRC 校驗(yàn)代碼可在Demo 程序中找到。

節(jié)點(diǎn)功能

USB dongle和PC 之間的通信協(xié)議主要包括如下三個(gè)功能:

● 獲取USB dongle的節(jié)點(diǎn)地址

● 使用USB dongle發(fā)送數(shù)據(jù)

● USB dongle將接收到的其他節(jié)點(diǎn)的數(shù)據(jù)發(fā)送到PC

下面所述的USB dongle和PC 程序所發(fā)送的各種信息,都是指在串口包中的有效載荷中的內(nèi)容,而串口包本身的結(jié)構(gòu)式固定的。必須先將命令和串口包的包頭等額外內(nèi)容一起打包成串口包,并通過串口發(fā)送。

獲取USB dongle的節(jié)點(diǎn)地址

通信過程:

● PC 端發(fā)送:’ga’(2個(gè)字節(jié))

● USB dongle回復(fù):’100 <短地址>’

注意事項(xiàng):

● PC 程序應(yīng)該在啟動(dòng)后就獲取節(jié)點(diǎn)的PANID 和短地址,從而獲知自己的地址,并且

相互之間進(jìn)行通信

● 命令和回復(fù)都是以字符串的形式發(fā)送和返回,其中PanId 和短地址以16進(jìn)制表示 ● USB dongle的回復(fù)分為以空格分隔的3個(gè)部分,其中:

? 第一個(gè)值為錯(cuò)誤碼,’100’代表命令執(zhí)行正確(參見PPT 末尾的錯(cuò)誤碼列表) ? PanId 為USB dongle的PanId

? 短地址為USB dongle的短地址

使用USB dongle發(fā)送數(shù)據(jù)

通信過程:

,

● PC 端發(fā)送:發(fā)送命令包

● USB dongle解析并進(jìn)行發(fā)送

● USB dongle將發(fā)送結(jié)果返回到PC

發(fā)送命令包結(jié)構(gòu):

發(fā)送結(jié)果返回:‘100’

注意事項(xiàng):

● 無法確定對(duì)方是否成功接收

使用USB dongle接收數(shù)據(jù)

USB dongle在接收到數(shù)據(jù)時(shí),就將所收包的信息發(fā)送到PC 。 USB dongle發(fā)送到PC 的數(shù)據(jù)回顯包結(jié)構(gòu):

注意事項(xiàng):

● 數(shù)據(jù)回顯中沒有源PAN 的字段,無法得到發(fā)送者的PANID 串口編程

需要使用串口庫進(jìn)行串口的讀寫。Demo 程序中有現(xiàn)成的一個(gè)串口庫。 如何連接串口

? 首先需要安裝USB dongle的驅(qū)動(dòng)

? 按照如下配置打開串口

? 串口號(hào):查看設(shè)備管理器獲得

? 波特率:230400

? 數(shù)據(jù)位:8

? 校驗(yàn)位:無

? 停止位:1

如何發(fā)送串口包

? 將發(fā)送命令、獲取地址命令等有效載荷封裝在串口包中,然后通過串口操作函數(shù)發(fā)

,

送到串口

? 必須保證串口包中字段的正確性

? 參考前面的“通信協(xié)議-串口包格式”

如何接受串口包

? 程序必須解析來自串口的字符流,從而讀取串口包

? 注意事項(xiàng)

? 不能保證一個(gè)串口包的數(shù)據(jù)在一次串口消息(串口讀取)中全部獲得

? 程序必須過濾端口不是8080的串口包,因?yàn)閁SB dongle會(huì)向串口打印某些

額外的信息

舉例說明

節(jié)點(diǎn)地址獲取

獲取USB dongle地址是通過發(fā)送”gt ”命令實(shí)現(xiàn)的,一個(gè)典型的通信過程如下:

PC 端程序向串口發(fā)送(使用‘|’分隔各個(gè)字段):

| F0 F0 | 0E | 00 | FF FF | FF FF | 00 00 | 00 00 | 11 | 90 1F | 67 61 | FF 15 |

參考“通信協(xié)議-串口包格式”可以得知如下的信息:

● 包長度為0xE

● 包序列號(hào)為0

● 目標(biāo)PAN 和目標(biāo)短地址都是0xFFFF

● 源PAN 和源短地址都是0

● 包類型為0x11

● 端口為0x1F90,既十進(jìn)制的8080

● 有效載荷為0x67,0x61,既”gt ”

● CRC16校驗(yàn)為 0x15FF

USB dongle向串口發(fā)送:

| F0 F0 | 14 | B3 | FF FF | FF FF | 01 00 | 10 00 | 11 | 90 1F | 31 30 30 20 31 20 31 30 | B4 D0 | 參考串口包格式,可以得知如下的信息:

● 包長度為0x14

● 序列號(hào)為0x83

● 目標(biāo)pan 和目標(biāo)短地址為0xFFFF:0xFFFF

● 源PAN 和源短地址為USB dongle 的PAN 和短地址,分別為0x0001和0x0010,這

是為每個(gè)USB dongle唯一分配的。

● 端口號(hào)為0x1F90,既8080

● 有效載荷為字符串:”100 1 10”

● CRC16校驗(yàn)為0xD0B4

因此,PC 程序在讀取整個(gè)串口包后,可以解析出其中的有效載荷“100 1 10”,既錯(cuò)誤碼:100,PAN :1,短地址:10。

,

發(fā)送數(shù)據(jù)到其他節(jié)點(diǎn)

PC 程序發(fā)送攜帶數(shù)據(jù)發(fā)送命令的串口包:

F0 F0 17 1F FF FF FF FF 00 00 00 00 11 90 1F 53 01 00 11 00 05 01 02 03 04 05 59 ED 根據(jù)串口包協(xié)議,可以獲知:

有效載荷中的數(shù)據(jù)發(fā)送命令為:53 | 01 00 | 11 00 | 05 | 01 02 03 04 05

根據(jù)發(fā)送命令包:

● 命令字符為’S ’

● 目標(biāo)PAN 為0x0001

● 目標(biāo)短地址為:0x0011

● 數(shù)據(jù)長度為:0x05

● 數(shù)據(jù)內(nèi)容為:0x01 0x02 0x03 0x04 0x05

USB dongle 在收到該發(fā)送命令包后,從中解析出目標(biāo)地址為:0x0001:0x0011,和待發(fā)送的數(shù)據(jù)。USB dongle 將數(shù)據(jù)通過無線通信模塊向目的節(jié)點(diǎn):0x0001,0x0011發(fā)送(所發(fā)送包的結(jié)構(gòu)參考P36. CC2420.pdf)。

相應(yīng)的,接收數(shù)據(jù)的USB dongle 在無線通信模塊接收到包后,通過串口發(fā)送如下的數(shù)據(jù)回顯包:

F0 F0 1D 7B FF FF FF FF 01 00 11 00 11 90 1F 52 18 01 00 11 00 10 00 FF 9D 6C 05 01 02 03 04 05 02 BB

從中我們可以看出該串口包的有效載荷為:| 52 | 18 | 01 00 | 11 00 | 10 00 | FF | 9D 6C | 05 | 01 02 03 04 05

根據(jù)USB dongle的數(shù)據(jù)回顯包的格式,可以解析如下:

● 首字符為’R ’

● 遞增序號(hào)為1

● 目標(biāo)PAN 為0x0001

● 目標(biāo)短地址為0x0011

● 源(發(fā)送者)短地址為0x0010

● LQI 為0xFF

● CRC 校驗(yàn)(802.15.4包的CRC 校驗(yàn))為0x9C9D

● 數(shù)據(jù)長度為5

● 數(shù)據(jù)內(nèi)容為0x01 0x02 0x03 0x04 0x05

標(biāo)簽: