完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
Hi ti的前辈们!
我在simpleBLECentral工程中,在用户的任务里调用函数GATT_WriteCharValue();写特征值。 正常情况下,隔一小段时间都会有个响应事件发生,并跑到simpleBLECentralProcessGATTMsg()函数。 其中包括读/写、异常的响应: else if ( ( pMsg->method == ATT_WRITE_RSP ) || ( ( pMsg->method == ATT_ERROR_RSP ) && ( pMsg->msg.errorRsp.reqOpcode == ATT_WRITE_REQ ) ) )//写特征值及写特征值异常 [ ] 正常来说,就是每写一次特征值,则会对应地产生一次响应事件。 现在,我较频繁地写特征值(约1s两次),发现有时会没有产生这个响应事件,相应地,从机那边就收不到数据了。 请问:这种丢包是怎么回事,是由于连接间隔决定的吗?用户在写特征值时应该注意什么样的问题来避免丢数据呢? |
|
相关推荐
10 个讨论
|
|
|
Yan: 不是写入特征值时产生错误,而是没有响应。 我在simpleBLECentralProcessGATTMsg() 这个函数的各个分支都加入了打印。我个人的感觉就是: 上一次写特征值的响应还没有完成,我就调用GATT_WriteCharValue()这个函数对同一个特征值再次进行写入操作。 我这样问吧: 如果主从机的连接间隔是100ms,但是我在主机中每20ms就调用GATT_WriteCharValue() 这个函数写从机 的某个特征值。这样会造成什么问题?是否最终从机能收到的只是 离连接事件最近 的一次发送的数据呢? |
|
|
|
|
|
|
|
蟹蟹蟹蟹 发表于 2019-11-11 14:36 shaokai, 正常情况下,根据蓝牙协议,用GATT_WriteCharValue() 操作一个特征值,必须等到ATT层的write response之后才能对它进行下一步操作,没收到response之前,不能进行第二次操作。CC254x 的代码也是这么要求的。所以正确的做法是你在进行第二次写入之前,必须先等待第一次response收到之后. 另外,在如上所述正确的操作的前提下,如果你的connection interval 是100ms, 你每隔 20ms 发送数据,那绝对有问题。通常情况下,由于MCU需要处理数据,往往要等到下一个connection event才能回复 write response,这就间隔了100ms了,所以,你中间发的20ms数据,就会有问题。 你可以试一下 GATT_WriteNoRsp(), 这个是不需要peripheral 回复 response的写请求。但是请注意,由于你的connection interval 是 100ms, 所以你每隔20ms写下去的内容,会被缓存,每100ms 才能发送出去。 |
|
|
|
|
|
|
|
骑猪去天山 发表于 2019-11-11 14:49 Yan That is the Answer I want.Thanks~ 另外,我还想咨询下: 主从连接间隔100ms的情况下,每20ms写入特征值。我猜想,在下一个连接事件到来之前,前面的数据会被后面的数据覆盖,对吗? 为确保可靠传输,我还是老老实实 在收到Response之后再继续写一下次的数据吧~ |
|
|
|
|
|
|
|
骑猪去天山 发表于 2019-11-11 16:04 Yan: 我用Packet Sniffer抓包后,真正发送出去的数据包 跟从机工程接收到的数据包的个数是一致的。 并且发送出去的数据包Req都会对应一个响应包Rsp。 也就是说真正的漏包还是在主机这边。 另外,Packet Sniffer抓包时可否屏蔽连接事件啊?哗啦啦,一大堆的~不是很方便。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
550 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1514 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1338 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1758浏览 29评论
2785浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1725浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1635浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1646浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 19:39 , Processed in 1.138707 second(s), Total 74, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2456