【NUCLEO-WB09KE测评】五、蓝牙数据收发实现
<div class='showpostmsg'> 本帖最后由 dvacos 于 2024-9-28 18:35 编辑<div>上文已经可以连接并且发现新的服务了,本文是再上文的基础上实现数据收发。继续参考、阅读BLE_p2pServer 与 BLE_HeartRate</div>
<div>一 数据接收</div>
<div>烧录并连接到BLE_p2pServer,发送数据后,查看LOG,发现发送一字节数据都会打印以下log,按照这个线索去查找自定义服务。</div>
<div></div>
<div>找到蓝牙时间回调的接口,但是不知道出于什么意义,把这个接口以TEST_Notification命名,很容易混淆</div>
<div></div>
<div>添加109-115行的LOG,用于打印数据。</div>
<div>下图LOG成功接收我发送的一字节数据</div>
<div></div>
<div></div>
<div>结合以上2张图,发现不能接收2字节的数据。</div>
<div>一通尝试与查阅后,发现蓝牙数据接收居然要事先给定长度??</div>
<div></div>
<div>于是按照MTU设置为247,结果发现p_Notification->DataTransfered.Length居然不是实际的接收数据的长度(这一点非常奇怪,搞不懂),所以这个只要结合实际的应用给定。</div>
<div></div>
<div>以上完成数据接收实验!!</div>
<div>二 数据回复</div>
<div>参考BLE_HeartRate例程,使用Notify上报数据给手机</div>
<div>找到数据发送接口</div>
<div>需要填写的参数分别是,</div>
<div>1 Opcode(操作码(个人认为不一定正确))</div>
<div>2 类型为TEST_Data_t 的数据,包含传输数据长度、数据指针</div>
<div>3 handle,非常重要填错后接收不到数据</div>
<div></div>
<div>于是添加以下代码,测试验证发送数据</div>
<div></div>
<div>结果居然接收、打印的都不是我填写的变量,并且在声明结构体时,添加static的修饰词,测试后发送的依旧不是我填写的数据。</div>
<div></div>
<div>修改后</div>
<div></div>
<div>修改后终于接收到Notify 数据!!</div>
<div></div>
<div>以上完成数据收发实验,后续就会与Web ble联调!!</div>
<p><!--importdoc--></p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页:
[1]