本帖最后由 dvacos 于 2024-9-28 18:35 编辑
上文已经可以连接并且发现新的服务了,本文是再上文的基础上实现数据收发。继续参考、阅读BLE_p2pServer 与 BLE_HeartRate
一 数据接收
烧录并连接到BLE_p2pServer,发送数据后,查看LOG,发现发送一字节数据都会打印以下log,按照这个线索去查找自定义服务。
找到蓝牙时间回调的接口,但是不知道出于什么意义,把这个接口以TEST_Notification命名,很容易混淆
添加109-115行的LOG,用于打印数据。
下图LOG成功接收我发送的一字节数据
结合以上2张图,发现不能接收2字节的数据。
一通尝试与查阅后,发现蓝牙数据接收居然要事先给定长度??
于是按照MTU设置为247,结果发现p_Notification->DataTransfered.Length居然不是实际的接收数据的长度(这一点非常奇怪,搞不懂),所以这个只要结合实际的应用给定。
以上完成数据接收实验!!
二 数据回复
参考BLE_HeartRate例程,使用Notify上报数据给手机
找到数据发送接口
需要填写的参数分别是,
1 Opcode(操作码(个人认为不一定正确))
2 类型为TEST_Data_t 的数据,包含传输数据长度、数据指针
3 handle,非常重要填错后接收不到数据
于是添加以下代码,测试验证发送数据
结果居然接收、打印的都不是我填写的变量,并且在声明结构体时,添加static的修饰词,测试后发送的依旧不是我填写的数据。
修改后
修改后终于接收到Notify 数据!!
以上完成数据收发实验,后续就会与Web ble联调!!