- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
USBdongle协议
USB dongle与PC程序之间的通信例子说明
简介
USB dongle和PC之间使用USB相连,并在PC上虚拟成一个串口。PC程序通过使用相应的协议读写该串口,从而操作USB dongle。
USB dongle在PC之间起到收发数据的功能:
USB dongle接收来自PC的数据发送命令,从中解析出目的地址和数据内容后,将数据发送到该地址的USB dongle;
USB dongle在接受来自其他USB dongle的数据包后,从中解析出目的地址、源地址、数据内容等信息,并将这些信息发送到PC
串口通信协议
通信模式
USB dongle和PC之间以包的形式进行通信。这是通过在原始的基于字节流读取和写入的串口的基础上,使用特定的组包结构,对串口中所传输的数据进行封包,使用包的方式进行串口两端设备之间的数据传输。
这种基于串口包的数据传输方式将串口两端的设备(此处分别为PC程序和USB dongle)看做一个拥有唯一地址标识(PAN和短地址)的通信设备,并在串口包中携带该串口包所对应的目标地址和源地址。
使用串口包的通用格式,PC程序和USB dongle之间可以进行各种数据的交互(数据被存放在有效载荷中),从而实现相应的功能:
通信协议
串口包格式
串口包的包格式如下:
字段
名称 前导
字符 包
长度 序
号 目标
PAN 目标
短地址 源
PAN 源
短地址 包
类型 端
口 有效
载荷 CRC
校验 字节
长度 2 1 1 2 2 2 2 1 2 n 2 各个字段的说明如下:
前导字符:用于标识一个包的开始,内容为0xF0F0
包长度:包括从“序号”到“有效载荷”的长度
序号:取值0到255,总是递增(255?0除外)
目标PAN/目标短地址:串口包的目的地址
固定为0xFFFF / 0xFFFF
源PAN/源地址:串口包的源地址
PC发包到USB dongle时,总是填写 0 / 0
USB dongle到PC的串口包中,该两字段为USB dongle的地址
包类型:固定填写0x11(不会收到包类型不是0x11的串口包)
端口:
发送串口包到USB dongle时固定填写8080(10进制)
接受串口包时,过滤(忽略)端口不是8080的串口包
CRC校验:从“序号”到“有效载荷”的CRC16校验。该CRC校验代码可在Demo程序中找到。
节点功能
USB dongle和PC之间的通信协议主要包括如下三个功能:
获取USB dongle的节点地址
使用USB dongle发送数据
USB dongle将接收到的其他节点的数据发送到PC
下面所述的USB dongle和PC程序所发送的各种信息,都是指在串口包中的有效载荷中的内容,而串口包本身的结构式固定的。必须先将命令和串口包的包头等额外内容一起打包成串口包,并通过串口发送。
获取USB dongle的节点地址
通信过程:
PC端发送:’ga’(2个字节)
USB dongle回复:’100 PanId 短地址’
注意事项:
PC程序应该在启动后就获取节点的PANID和短地址,从而获知自己的地址,并且相互之间进行通信
命令和回复都是以字符串的形式发送和返回,其中PanId和短地址以16进制表示
USB dongle的回复分为以空格分隔的3个部分,其中:
第一个值为错误码,’100’代表命令执行正确(参见PPT末尾的错误码列表)
PanId为USB dongle的PanId
短地址为USB dongle的短地址
使用USB dongle发送数据
通信过程:
PC端发送:发送命令包
USB dongle解析并进行发送
USB dongle将发送结果返回到PC
发送命令包结构:
发送结果返回:‘100’
注意事项:
无法确定对方是否成功接收
使用USB dongle接收数据
USB dongle在接收到数据时,就将所收包的信息发送到PC。
USB dongle发送到PC的数据回显包结构:
注意事项:
数据回显中没有源PAN的字段,无法得到发送者的PANID
串口编程
需要使用串口库进行串口的读写。Demo程序中有现成的一个串口库。
如何连接串口
首先需要安装USB dongle的驱动
按照如下配置打开串口
串口号:查看设备管理器获得
波特率:230400
数据位:8
校验位:无
停止位:1
如何发送串口包
将发送命令、获取地址命令等有效载荷封装在串口包中,然后通过串口操作函数发送到串口
必须保证串口包中字段的正确性
参考前面的“通信协议-串口包格式”
如何接受串口包
程序必须解析来自串口的字符流,从而读取串口包
注意事项
不能保证一个串口包的数据在一次串口消息(串口读取)中全部获得
程序必须过滤端口不是8080的串口包,因
文档评论(0)