不要用BLE了好吧(续)(2017-04-11 23:35)

非常奇怪的问题,发送MSP_IDENT,能收到飞控应答数据。但是发送MSP_SET_RAW_RC,却没有任何回答。但是看MWC源代码,它应该回一个收到的消息啊。

一开始考虑是校验码不正确,因为java的byte是带符号的,怀疑是^操作结果和飞控的c代码结果不同。但是写代码测了下是一样的。

没办法打算用arduino+另外一个BLE模块搭建一个测试环境来测试。忽然又想把MSP_SET_RAW_RC和MSP_IDENT换了下,就是发RC的时候不带内容,这样居然有回应。为了测试是不是真的是校验码错误。往RC里面只添加了1个short型数据,仍然有回应。

这样就太奇怪了,确实不是校验码有问题。再往包里面多加了几个数据,结果发现多加数据后,就没有回应了。

想来想去,数据多了就无回应,因为校验码在数据包最后1Byte上,难道是数据发送有长度限制?

网上搜一下,果然,BLE一次只能发20个Byte,难怪飞控认为数据非法呢。长的数据都截掉了。

找到一个API,requestMTU,满怀信心的调大MTU试了下,却发现我买的这蓝牙模块最大只能发送23个Byte。

这就麻烦了,首先发送数据得等回应成功了后才能再发,其次还得拆包,果然用BLE就是个坑好吗。我只能搞个消息发送队列了。

另外吐槽一个,MultiWiiConf的代码写得太烂了简直。各种数组转队列,队列转链表,拆包封包。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0参考代码 蓝牙(BLE)模块及协议.pdf:在电脑内,有助于理解ble BLE蓝牙在Android开发中的应用 ...
    kamin阅读 8,766评论 0 20
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,699评论 19 139
  • 收回望向千里之外的目光 忙碌的一天,心底里的沉重却越来越少。和家人的相处越来越和谐,而且家庭氛围越来越正能量,摩擦...
    诚实的花妖阅读 1,365评论 0 0
  • 2017.3.14 笑来老师这周倡导写作,那就直接写吧。不管有多差的起点,总要开始。 先复盘一下最近因为把想的写出...
    古灵精蓉儿阅读 2,256评论 0 0
  • 声明:本文无商业目的,存粹为热爱而推荐 我跟老孟对很多小而美的东西都有执念,老孟主要是耳饰,我是胸针。今天在微信里...
    成全某日有因的干哭阅读 2,795评论 0 2