我想请问一下,我需要做主机,然后向从机发送数据,但是我从机的UUID只有写属性,没有读属性,导致回应的包的的handle,不在主服务handle范围下。我应该怎么才能向从机发送数据
从机没有相应的读属性,没法接收主机发送的数据。从机那里调整添加一下读属性的功能。
因为从机是已经开发好的透传模组了,已经无法更改,
这个uuid下只有写属性,没有读属性和noti。
意思是我像Central例程里一样,用这个试一下嘛。但是好像MultiCentral例程里没有定义START_WRITE_CCCD_EVT,到时候会有这个消息回来吗。
你上面用手机跟从机去连接,然后从机把功能给罗列出来了,从机是有读功能的,因此你通过ffe9这个通道往从机写数据应该是没问题的。同样主机端跟你的从机连接正常,然后UUID也正常,所以上面handle值的范围已经列出来了(1e~21),但是最终枚举handle时发现结果是0,这是有问题的,handle数量不多,你可以在这里将相应的handle值都尝试一下(1e~21),理论会write success。如果还有问题可以再贴一下主机端枚举服务的打印信息。
经过尝试,成功发送数据了,从机也收到数据,handle为20。但还是想分析一下是什么原因导致的。后面从机可能会使用不一样的厂家,会比较麻烦。
下面是枚举的具体内容,
这里修改一下试试看
尝试了GATT_DiscCharsByUUID与GATT_DiscAllChars两个函数,打印出来的handle都为1f,不是实际的20。
看打印的流程应该是执行了发送,但是没有收到发送完成回应,从机也没有收到数据。
实际的20是能收到执行发送回应的,从机也可以收到“TEST”数据。
这里的handle值加1,最终的数据传输是一个数组的形式,19的handle值最终是通过20发出去的
蓝牙从机换了一个模块,按照原来的流程,主机发送数据,但是从机并没有收到。并且主机也没有收到发送成功的消息返回。
按照列举出来的范围进行遍历也还是一样
下面是蓝牙调试宝连接的图示
调试宝是可以的,麻烦帮忙看一下
可以发送邮件至邮箱hy@wch.cn,可以给你发送一个主机遍历所有从机服务的例程测试下看看。
好的,邮件已经发送给您了。如果没有收到的话。
下面是我的邮箱个人信息保护,已隐藏,请直接发这个邮箱
感谢!!
经过测试,是我以前使用GATT_WriteLongCharValue这个API函数导致发送有问题,我以为这个API函数才是发送字符串的。
另外想请假一下 31是什么断连的理由
此时我的从机一直显示是连接状态,也不广播了,但是这里打印显示主机断开连接了。导致有点问题,
麻烦帮忙看一下
连接报0x31可能是GAPRole_CentralEstablishLink参数传的有问题导致的,比如mac或者mactype不对会导致,
另外就是从机的广播间隔是多少,间隔调小点试试呢。