现在看串口透传的程序,想知道central开启notify的函数语句是哪个???
例程里面没找到有开启的语句。。。
Yan:
yueliangz0123,
开启notification 用的是central的 write 命令。
找到notification对应的handle, 然后写0x0001 过去,就打开了。
WIND JXC:
回复 Yan:
例程里面没见这样的语句啊???
难道是连接的时候顺便开起来??
HG:
回复 Yan:
Hi Yan,
以simpleBLECentral.c为例, 是不是
if ( simpleBLEDoWrite ) { // Do a write attWriteReq_t req; req.handle = simpleBLECharHdl; req.len = 1; req.value[0] = simpleBLECharVal; req.sig = 0; req.cmd = 0; status = GATT_WriteCharValue( simpleBLEConnHandle, &req, simpleBLETaskId ); }
WIND JXC:
回复 HG:
这个是跟按键操作相关函数里面的吧??要是我不操作按键呢
WIND JXC:
回复 Yan:
从机代码里面哪里是修改notify以便开启的??
我看了你在其他帖子里面的回复,打了一些断点,根本就不进这些断点…
我把我看的串口透传代码发上来你看看,central代码好像没有开启notify的操作~~
Yan:
回复 WIND JXC:
yueliangz0123,
木有类似 “enableNotification()” 这样的接口。例程里面没有使能notification 的示例代码。
但如我前面所说, 是用write命令实现的。
也如Holly 描述的,她贴的代码里面,simpleBLECharHdl 就是你需要的notification CCCD的handle,simpleBLECharVal 就是 0x0001, 其他都一样。
前提是你先通过服务查找,找到你需要特征值的CCCD.
我记得之前坛子里有很多关于查找服务下多个特征值的帖子,你可以搜索一下。
WIND JXC:
回复 Yan:
这些我知道。。。。
我上传的代码里面我没看到有通过write来开启的操作,但是又可以发送接收通知,我就觉得很奇怪…
Yan:
回复 WIND JXC:
yueliangz0123,
我也没看到你代码里面有什么。
你确定central接收的是notification, 而不是read的回复?
最好的方法是你用packet sniffer 抓包看一下,到底是什么情况。
WIND JXC:
回复 Yan:
我是用串口发送数据给peripheral,peripheral发给安卓手机,这种情况应该不是read的回复吧??
BLE有直通模式???是啥样的??
packet sniffer抓包,只能抓到广播的包,问了其他一些人讲,通信数据是调频抓不到,不知道怎么抓应用数据的包。。。
附件为安卓APP的源码,在google给的demo上修改的,麻烦看一下,谢谢
WIND JXC:
回复 Yan:
sbpSerialAppCallback是串口的回调函数 sbpSerialAppCallback() -> sbpSerialAppSendNoti() -> GATT_Notification(),从这里看,串口的数据最后是通过GATT_Notification()发上来的,这应该是notify,不是read的回复吧???
TI中文支持网


