ODrive 通讯协议「建议收藏」

ODrive通讯协议与ODrive进行通讯需要对通讯端点进行一系列操作。理论上,端点上的数据可以是以任何方式序列化的任何类型的数据。数据包采用默认的序列化方式,对于您自定义的数据包,您必须自己去进行反序列化。未来我们可能会提供序列化功能。可以通过从端点0读取JSON来枚举可用的端点,从理论上讲,每个接口都可以不同(实际上并没有这么做)。每个端点都可以被用来发送和接收字节数据,有效字节数据的含义在…

大家好,又见面了,我是你们的朋友全栈君。

ODrive通讯协议

与ODrive进行通讯需要对通讯端点进行一系列操作。理论上,端点上的数据可以是以任何方式序列化的任何类型的数据。数据包采用默认的序列化方式,对于您自定义的数据包,您必须自己去进行反序列化。未来我们可能会提供序列化功能。可以通过从端点0读取JSON来枚举可用的端点,从理论上讲,每个接口都可以不同(实际上并没有这么做)。每个端点都可以被用来发送和接收字节数据,有效字节数据的含义在JSON中进行了定义。
例如,int32端点的输入和输出是4字节的小字节序表示。 通常,组合的读/写请求的约定是交换,即返回的值是旧值。 自定义的端点可能不符合这种要求。
该协议有基于数据包的版本和基于流的变体。 适当地使用每个变体。 例如,USB默认运行基于数据包,而UART运行基于字节流。

基于数据包的格式

我们将ODrive称为“服务器”,将PC称为“客户端”。 请求是从PC到ODrive的消息,响应是从ODrive到PC的消息。
每个请求-响应事务对应于一个端点操作。
请求

  • Bytes 0, 1 数据包的序列号, MSB = 0
    • 当前,服务器不进行处理,也不过滤重复发送的数据包。
  • Bytes 2, 3 端点ID
    • 可以从JSON定义中获取所有端点的ID。 可以通过从端点0读取获得JSON定义。
      如果(且仅当)MSB设置为1时客户端期望对此请求做出响应。
  • Bytes 4, 5 预期请求返回的字节数
    • 应该返回给客户端的字节数。 如果客户端不需要任何响应数据,则可以将该值设置为0。
  • Bytes 6 to N-3 有效负载
    • 有效负载的长度由数据包大小确定。 有效负载的格式取决于端点类型。 端点类型可以从JSON定义中获取。
  • Bytes N-2, N-1
    • 对于端点0:协议版本(当前为1)。 服务器应忽略具有其他值的数据包。
    • 对于所有其他端点:通过JSON定义计算得出的CRC16。 CRC16初始值是协议版本(当前为1)。 服务器将忽略CRC错误的数据包。 有关CRC的详细信息,请参见protocol.hpp源码。

响应

  • Bytes 0, 1 数据包的序列号, MSB = 1
    • 这是响应请求的序列号。
  • Bytes 2, 3 有效负载
    • 有效负载的长度,等于请求中指示的预期字节数。 服务器返回的字节数不能超过客户端请求的字节数大小。

基于流的格式

基于流的格式只是基于数据包格式的封装。

  • Byte 0 同步字节0xAA
  • Byte 1 包字节大小
    • 目前,只能发送/接受0到127个字节的包大小。
  • Byte 2 bytes 0 和 bytes 1的CRC8
    • 详情请参考 protocol.hpp 源码
  • Bytes 3 to N-3 包数据
  • Bytes N-2, N-1 CRC16
    • 详情请参考 protocol.hpp 源码

如果您有任何问题或疑问,欢迎您加入ODrive社区或QQ群 851421965 进行交流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126675.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • furture_南京future

    furture_南京future我想,还是不知道未来比较好!揭开神秘的同时也扼杀了希望,所谓预测未来就是创造那个未来,意味着我们放弃了主宰未来的权利!

    2022年8月3日
    3
  • 什么是黑盒测试?它的常用方法有哪些?[通俗易懂]

    什么是黑盒测试?它的常用方法有哪些?[通俗易懂]什么是黑盒测试?它的常用方法有哪些?一:什么是黑盒测试?黑盒测试(Black-boxTesting),黑盒测试又称为“功能测试”,是将测试对象看做一个黑盒,在并不考虑软件产品的内部结构和处理过程的基础上对软件产品进行功能测试。黑盒测试注重软件产品的“功能性需求”。二:黑盒测试常用的方法有哪些?运用黑盒技术设计测试用例常用的方法有:①等价类划分②边界值分析③因果图分析法④错误推断法等详细分析:(一)等价类划分:等价类的划分无非就两种情况:有效等价类、无效等价类1.有效等

    2022年10月3日
    0
  • idea 2022.01.13最新激活码(JetBrains全家桶)「建议收藏」

    (idea 2022.01.13最新激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年4月1日
    808
  • 缺陷管理工具-QC篇「建议收藏」

    缺陷管理工具-QC篇「建议收藏」缺陷管理工具-QC篇一、QC介绍:QC的全称Qualitycenter,质量中心的意思,它是一款缺陷管理工具,可以组织和管理一个项目所有的测试阶段,如:从需求-用例编写-用例执行-提交缺陷-回归测试等。QC的背景:原属于Mercury公司,这是一家软件测试工具开发商,除了研发了QC之外,比较出名的工具有:LoadRunner—-性能测试工具,QTP—-自动化测试工具。后来M…

    2025年7月23日
    1
  • vmware15激活码【永久激活】「建议收藏」

    (vmware15激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlbnNlSWQiOi…

    2022年3月21日
    112
  • 惠普打印机驱动安装出现严重错误_惠普 服务器

    惠普打印机驱动安装出现严重错误_惠普 服务器现在很多用户已经升级了win10正式版,但是也遇到了不少问题。默认情况下,Windows10系统会自动安装电脑设备的驱动,其中就包括打印机的。但是近日有些朋友反馈在更新HP打印机时,遇到错误提示“HPdriverupdateforHPLaserJetM1530MFPSeriesPCL6-错误0x80240017”,且会不停自动安装,而安装总是失败,这该怎么办呢?下面就详情…

    2022年8月12日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号