USBdongle协议

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

USBdongle与PC程序之间的通信例子说明简介USBdongle和PC之间使用USB相连,并在PC上虚拟成一个串口。PC程序通过使用相应的协议读写该串口,从而操作USBdongle。USBdongle在PC之间起到收发数据的功能:USBdongle接收来自PC的数据发送命令,从中解析出目的地址和数据内容后,将数据发送到该地址的USBdongle;USBdongle在接受来自其他USBdongle的数据包后,从中解析出目的地址、源地址、数据内容等信息,并将这些信息发送到PC串口通信协议通信模式USBdongle和PC之间以包的形式进行通信。这是通过在原始的基于字节流读取和写入的串口的基础上,使用特定的组包结构,对串口中所传输的数据进行封包,使用包的方式进行串口两端设备之间的数据传输。这种基于串口包的数据传输方式将串口两端的设备(此处分别为PC程序和USBdongle)看做一个拥有唯一地址标识(PAN和短地址)的通信设备,并在串口包中携带该串口包所对应的目标地址和源地址。使用串口包的通用格式,PC程序和USBdongle之间可以进行各种数据的交互(数据被存放在有效载荷中),从而实现相应的功能:通信协议串口包格式串口包的包格式如下:字段名称前导字符包长度序号目标PAN目标短地址源PAN源短地址包类型端口有效载荷CRC校验字节长度211222212n2各个字段的说明如下:前导字符:用于标识一个包的开始,内容为0xF0F0包长度:包括从“序号”到“有效载荷”的长度序号:取值0到255,总是递增(255除外)目标PAN/目标短地址:串口包的目的地址固定为0xFFFF/0xFFFF源PAN/源地址:串口包的源地址PC发包到USBdongle时,总是填写0/0USBdongle到PC的串口包中,该两字段为USBdongle的地址包类型:固定填写0x11(不会收到包类型不是0x11的串口包)端口:发送串口包到USBdongle时固定填写8080(10进制)接受串口包时,过滤(忽略)端口不是8080的串口包CRC校验:从“序号”到“有效载荷”的CRC16校验。该CRC校验代码可在Demo程序中找到。节点功能USBdongle和PC之间的通信协议主要包括如下三个功能:获取USBdongle的节点地址使用USBdongle发送数据USBdongle将接收到的其他节点的数据发送到PC下面所述的USBdongle和PC程序所发送的各种信息,都是指在串口包中的有效载荷中的内容,而串口包本身的结构式固定的。必须先将命令和串口包的包头等额外内容一起打包成串口包,并通过串口发送。获取USBdongle的节点地址通信过程:PC端发送:’ga’(2个字节)USBdongle回复:’100PanId短地址’注意事项:PC程序应该在启动后就获取节点的PANID和短地址,从而获知自己的地址,并且相互之间进行通信命令和回复都是以字符串的形式发送和返回,其中PanId和短地址以16进制表示USBdongle的回复分为以空格分隔的3个部分,其中:第一个值为错误码,’100’代表命令执行正确(参见PPT末尾的错误码列表)PanId为USBdongle的PanId短地址为USBdongle的短地址使用USBdongle发送数据通信过程:PC端发送:发送命令包USBdongle解析并进行发送USBdongle将发送结果返回到PC发送命令包结构:发送结果返回:‘100’注意事项:无法确定对方是否成功接收使用USBdongle接收数据USBdongle在接收到数据时,就将所收包的信息发送到PC。USBdongle发送到PC的数据回显包结构:注意事项:数据回显中没有源PAN的字段,无法得到发送者的PANID串口编程需要使用串口库进行串口的读写。Demo程序中有现成的一个串口库。如何连接串口首先需要安装USBdongle的驱动按照如下配置打开串口•串口号:查看设备管理器获得•波特率:230400•数据位:8•校验位:无•停止位:1如何发送串口包将发送命令、获取地址命令等有效载荷封装在串口包中,然后通过串口操作函数发送到串口必须保证串口包中字段的正确性•参考前面的“通信协议-串口包格式”如何接受串口包程序必须解析来自串口的字符流,从而读取串口包注意事项•不能保证一个串口包的数据在一次串口消息(串口读取)中全部获得•程序必须过滤端口不是8080的串口包,因为USBdongle会向串口打印某些额外的信息举例说明节点地址获取获取USBdongle地址是通过发送”gt”命令实现的,一个典型的通信过程如下:PC端程序向串口发送(使用‘|’分隔各个字段):|F0F0|0E|00|FFFF|FFFF|0000|0000|11|901F|6761|FF15|参考“通信协议-串口包格式”可以得知如下的信息:包长度为0xE包序列号为0目标PAN和目标短地址都是0xFFFF源PAN和源短地址都是0包类型为0x11端口为0x1F90,既十进制的8080有效载荷为0x67,0x61,既”gt”CRC16校验为0x15FFUSBdongle向串口发送:|F0F0|14|B3|FFFF|FFFF|0100|1000|11|901F|3130302031203130|B4D0|参考串口包格式,可以得知如下的信息:包长度为0x14序列号为0x83目标pan和目标短地址为0xFFFF:0xFFFF源PAN和源短地址为USBdongle的PAN和短地址,分别为0x0001和0x0010,这是为每个USBdongle唯一分配的。端口号为0x1F90,既8080有效载荷为字符串:”100110”CRC16校验为0xD0B4因此,PC程序在读取整个串口包后,可以解析出其中的有效载荷“100110”,既错误码:100,PAN:1,短地址:10。发送数据到其他节点PC程序发送携带数据发送命令的串口包:F0F0171FFFFFFFFF0000000011901F530100110005010203040559ED根据串口包协议,可以获知:有效载荷中的数据发送命令为:53|0100|1100|05|0102030405根据发送命令包:命令字符为’S’目标PAN为0x0001目标短地址为:0x0011数据长度为:0x05数据内容为:0x010x020x030x040x05USBdongle在收到该发送命令包后,从中解析出目标地址为:0x0001:0x0011,和待发送的数据。USBdongle将数据通过无线通信模块向目的节点:0x0001,0x0011发送(所发送包的结构参考P36.CC2420.pdf)。相应的,接收数据的USBdongle在无线通信模块接收到包后,通过串口发送如下的数据回显包:F0F01D7BFFFFFFFF0100110011901F5218010011001000FF9D6C05010203040502BB从中我们可以看出该串口包的有效载荷为:|52|18|0100|1100|1000|FF|9D6C|05|0102030405根据USBdongle的数据回显包的格式,可以解析如下:首字符为’R’递增序号为1目标PAN为0x0001目标短地址为0x0011源(发送者)短地址为0x0010LQI为0xFFCRC校验(802.15.4包的CRC校验)为0x9C9D数据长度为5数据内容为0x010x020x030x040x05

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功