完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在开发一个基于CyYBLU-022001—00的设备,其中有BLE栈V3.10
该设备是自定义配置文件上的CythAlgTeCube。扫描工作很好,我可以连接到外围设备。我在外围设备上启用了指示,这似乎也起作用了。 我写一个命令的RX特性的外围设备,外设执行一些任务,并写一个响应到TX特性,这导致指示发出在中央。 我使用两个不同的命令,我们称之为L(“长”)和S(“短”)。命令的长度是相同的,但是对于L和MTU,S和21字节的18字节的生成响应是20字节。因此,我得到了两个L和一个S的指示,让我们调用这些响应包[1x]和[2x],其中x是S或L来标识生成包的命令。 这就是我所经历的行为: 启动设备,加载堆栈,执行扫描连接到外围发送L指示:[2L] [1L] [2L]发送L指示:[1L] [2L]发送L指示:[1L] [2L]断开从外围重新连接到外围发送L指示:[2L] [1L] [2L]发送L指示:[1L]2S)发送S指示[1S]发送S指示[1S]断开从外围重新连接到外围发送S指示[1S] [1S]发送S指示[1S]发送S指示[1S]断开从外围重新连接到外围发送L指示[1S] [1L] [2L] s结束L指示[1L] [2L]发送L指示[1L] [2L]发送S指示[1S]发送L指示[1L] [2L]从外围连接断开到外围发送S指示[2L] [1S]摘要:在连接开始后用错误指示分组的第一响应。该分组包含在断开之前接收到的最后指示的有效载荷。如果没有以前的连接,那么包包含当前响应的最后一个包的有效载荷。所有后续反应都是正确的。 你知道什么会导致这种奇怪的行为吗? 为了完整性,这里是我如何得到指示: 交换(事件){/ /所有其他情况下,为了可读性情况而省略CyLeLayEvtgGATCK-HealLeValueEnIn:指示符响应=(CyLay-GATCcHoLeLayValueEntffPARAMOT**)EndoPARAM;LL=指示符响应-Gt;HANDALVALION.Value.LeN;//Debug信息:(I=0;II&L.L.I+++){UARTHU-UARTPTCCHAR(指示性响应-GT;HANDALVALONION.ValualVal[II]);}//RX-HANDELL(指示性响应);CyBLY-GATCK确认(CyByLyCon句柄);/ /发送指示中断的ACK; } 通常我会对计算做一些计算,但是我在这里注释了RXHANDER的调用,以简化问题。 下面是我如何将设备从外围设备断开: 无效请求连接(){if(CyByLyGestStand())!CyLabyGAPDISTHONE(CyByLyCal句柄.bD句柄);TxCal句柄=0;/*句柄数据特性*/RxCal句柄=0;/*句柄用于RX数据特性*/TXCHARESDECHANDLE=0;/*句柄为TX数据特性描述符*/BuuAuthService句柄=0;/BLE UART服务*/BuuARTService EngRead句柄=0;/*端句柄用于BLE UART服务*/MtuStudio=CyByLyGATTHMTU;/* MTU大小,MTU交换*/INF后由客户端和服务器使用OfExchange=IfFoExchange EngEnter;NotiFICICTABLE = FALSE;返回;} 非常感谢您的帮助! 亲切的问候,Enpa |
|
相关推荐
3个回答
|
|
嗨,Enpa,
这种行为很奇怪。在断开之前,服务器是否收到了它发送的最后一个指示的确认? 此外,在接收断开事件时,请您做CyLySuftRead()。这将重置BLE堆栈。 当做, - Madhu Sudhan |
|
|
|
dfzvzs 发表于 2019-11-1 15:22 嗨,Madhu 谢谢你的回答。 我不能检查服务器是否得到了所有指示的确认,但是我确信我发送了。下面是EngCyByE.EttgGATCcHAdLeLeValueEnId处理程序的代码: 案例CyLay-EvtgGATCK-HANDLYValueONIN:指示响应=(CyLay-GATCKA HANDLYVALYEVYNTFFA PARAMATT*)EVER PARAM; 如果(指示性响应-gt;=txCal句柄)中断;LL=指示符响应-gt;HANDALVALION.Value.LeN;//Debug信息:(ii=0;II&L.LII+++){UARTURUUARTPTCHAR(指示符响应-Gt;HANDALVALION.Val.Val[II)];(N句柄);/ /在指示CyBeLePraceServices()上发送ACK; 我尝试使用CyByLyStfREST(),在接收到EnviCyByEvtGAPXDEVICEX断开连接之后,当我试图再次连接到外围设备时,导致了一个错误:我的设备将永远保持在CyyLyStayeLee连接中。 我认为我可以通过在连接和放弃响应之后发送命令来解决这个问题。所有后续反应都是正确的。但这只是一个解决办法,因为上市时间很紧。我不觉得它真的很舒服,不知道什么是错的… 亲切的问候,Enpa |
|
|
|
还有一件事…我注意到一些东西。看一看附图:
在重新设置对等设备之后,问题就不存在了。 复位后的CYBLY-022001—00(硬复位硬件引脚或软复位的BLE堆栈)的问题仍然存在。 在我看来,问题是在对等设备中。你怎么认为? 亲切的问候,Enpa |
|
|
|
只有小组成员才能发言,加入小组>>
752个成员聚集在这个小组
加入小组2070 浏览 1 评论
1826 浏览 1 评论
3639 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1761 浏览 6 评论
1513 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
511浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
361浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
410浏览 2评论
357浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
858浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 01:30 , Processed in 1.555051 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号