[Bluetooth]使用COM端口分析SDP记录(转载)

蓝牙串口(spp)win10(pc)版本 蓝牙串口调试pc版本spp协议1.前提条件2.准备工作3.开始调试 1.前提条件 pc系统是win10的,那么调试蓝牙的前提是电脑需要有蓝牙。如何查看自己的电脑是否有蓝牙设备呢? 所以,可以看到电脑上是由蓝牙设备的。 2.准备工作 看到本机有蓝牙之后,可以去打开蓝牙,然后利用spp建立传输通道。 然后鼠标右键点击windows,选择设置: 点击设备选项。 选择打开蓝牙和添加蓝牙设备。 找到设备并且连接。 选择更多蓝牙选项: 选择com端口,由于我的蓝牙设备是作为server的,所以pc则是通过c 阅读详情
 
Microsoft® Windows® CE 提供了COM接口,可以用来以流的形式分析SDP记录。ISdpStream 定义了处理流数据的方法。在你的程序获取SDP记录之前,使用 ISdpStream::Validate方法来确保原始的SDP流是有效的并且格式正确,也可以使用ISdpStream::VerifySequenceOf方法来确保原始SDP数组中的元素是有效的。使用ISdpStream::RetrieveRecords方法来获取流数据,这个方法返回SDP记录到一个ISdpRecord数组中并且返回记录的总数。然后你可以使用ISdpRecord方法来对SDP记录进行操作,例如获取SDP服务记录的属性。更多信息参见Searching SDP Attributes Using COM Interfaces.
STDMETHODIMP
ServiceAndAttributeSearchParse(
 UCHAR *szResponse,   // in – 指向SDP记录的缓冲区,二进制格式
                       // 由Bthnscreate示例获得
 DWORD cbResponse,   // in – szResponse 的大小
 ISdpRecord ***pppSdpRecords, // out – pSdpRecords 的数组
 ULONG *pNumRecords   // out – pSdpRecords 数组中的元素个数
)
{
 
 HRESULT hres = E_FAIL;
 *pppSdpRecords = NULL;
 *pNumRecords = 0;
 ISdpStream *pIStream = NULL;
// 创建一个流对象
if (FAILED(CoCreateInstance(__uuidof(SdpStream),NULL,CLSCTX_INPROC_SERVER,
                        __uuidof(ISdpStream),(LPVOID *) &pIStream)))
{
 return E_FAIL;
}
// 确保SDP流是有效的并且格式正确
 hres = pIStream->Validate(szResponse,cbResponse,NULL);
 
 if (SUCCEEDED(hres))
 {
 // 确保SDP流的序列是有效的并且格式正确
    hres = pIStream->VerifySequenceOf(szResponse,cbResponse,
                       SDP_TYPE_SEQUENCE,NULL,pNumRecords);
    if (SUCCEEDED(hres) && *pNumRecords > 0)
    {
      *pppSdpRecords = (ISdpRecord **)
      // 为SDP记录缓冲区分配内存空间
      CoTaskMemAlloc(sizeof(ISdpRecord*) * (*pNumRecords));
      if (pppSdpRecords != NULL)
      {
         // 从流中获取SDP记录
         hres = pIStream->RetrieveRecords ( szResponse,
                    cbResponse,*pppSdpRecords,pNumRecords);
        // 如果获取记录失败,释放已分配的内存,设SDP记录总数为0
        if (!SUCCEEDED(hres))
        {
            CoTaskMemFree(*pppSdpRecords);
            *pppSdpRecords = NULL;
            *pNumRecords = 0;
         }
       }
       else
       {
          hres = E_OUTOFMEMORY;
       }
     }
 }
 // Release the stream.
 if (pIStream != NULL)
 {
    pIStream->Release();
    pIStream = NULL;
 }
 return hres;
}


【蓝牙协议栈】【BR/EDR】【SDP】精讲蓝牙服务发现协议 本文介绍了蓝牙协议栈中的服务发现协议(SDP),并对比了经典蓝牙与低功耗蓝牙(BLE)在服务发现机制上的差异。SDP是经典蓝牙的核心协议,用于设备间的服务发现,如耳机与手机配对时发现音频服务。SDP基于C/S架构,通过服务记录和属性描述服务特征,使用请求/应答模型进行数据传输。BLE则通过GATT、UUID和广播包实现服务发现,以降低功耗和简化协议栈。文章还详细说明了SDP的协议数据格式、CONTINUATIONSTATE的使用场景,以及SDP客户端和服务端的方法,如创建和声明SDP记录、查询远端SDP服务 阅读详情

相关推荐

52、深入理解DevOps原则与SaaS应用

本博客深入探讨了DevOps原则与SaaS应用的核心概念及实践方法。内容涵盖使用Test and Feedback工具获取持续反馈、SaaS对组织和软件开发流程的影响、SaaS解决方案的优缺点及实施要点、云环境下的解决方案设计原则,以及自动化在DevOps和SaaS中的关键作用。通过WWTravelClub项目案例,展示了如何在实际场景中应用这些理念和工具实现高效的软件开发和部署。

pz890123456的博客 58

蓝牙的SDP协议总结

本文转自:http://blog.sina.com.cn/s/blog_69b5d2a50101egbb.html 1.概念     SDP协议让客户机的应用程序发现存在的服务器应用程序提供的服务以及这些服务的属性。SDP只提供发现服务的机制,不提供使用这些服务的方法。每个蓝牙设备都需要一个SDP Service,只做Client的蓝牙设备除外。 2.ServiceRecord

OMG_2012的专栏 1264

实战指南:在UE5中高效集成Entt(ECS)框架

本文提供了一份在虚幻引擎5中高效集成Entt ECS框架的实战指南。针对UE5项目在处理大规模动态实体时的性能瓶颈,详细讲解了如何通过数据驱动的ECS架构进行优化。内容包括前期环境准备、核心构建步骤、创建首个ECS子系统以及与UE原生系统的数据同步技巧,旨在帮助开发者快速掌握集成方法,提升游戏逻辑的执行效率。

weixin_29002209的博客 158

win11开启蓝牙虚拟串口

4、进入蓝牙设备界面,点击COM端口选项卡,点击添加传入方向的COM端口,然后点击确定,就完成了蓝牙虚拟串口的添加。1、点开桌面右下角的网络,点击蓝牙图标的向右箭头,进入蓝牙界面,右上角进行启用蓝牙,然后点击更多蓝牙设置。在默认情况下,笔记本的蓝牙都是没开启虚拟蓝牙串口服务。可以通过以下步骤进行开启。3、滚动条往下滚动,点击更多蓝牙设备。2、点击显示更多设备。

caisexi的博客 4074

炉石传说游戏系统拆解和部分系统分析

一.游戏综述 《炉石传说:魔兽英雄传》是一款由暴雪娱乐公司出品的策略类卡牌游戏。中国大陆地区的独家运营由网易公司代理。2014年3月13日全球同步正式运营。游戏背景设定于暴雪的魔兽系列,共十位魔兽中的角色作为十种不同的职业。而玩家要做的,就是根据己方现有的卡牌组建合适的卡组,指挥英雄,驱动随从,施展法术,与游戏好友或素不相识的对手一决高下。 二.游戏系统拆解图 三.游戏系统部分分析 1. 对战系统 (1)战斗准备 炉石传说开始前都需要配置至少30张卡牌作为出战卡组 .....

Jimmy72236的博客 4925

别再为OpenBCI_GUI安装发愁了!保姆级教程带你从Processing配置到成功运行(附常见错误解决)

本文提供了一份详细的OpenBCI_GUI安装教程,涵盖从Processing配置到成功运行的全过程,特别针对常见错误提供了解决方案。通过环境搭建、软件依赖安装、源码处理及首次运行实战,帮助用户高效完成数据可视化工具的部署与使用。

weixin_28366475的博客 267

PC蓝牙加串口调试助手调试蓝牙设备

PC蓝牙加串口调试助手调试蓝牙设备

芯创博客 2万+

别再傻傻分不清PBR和NPR了!从《原神》到《双城之战》,聊聊游戏里那些让你眼前一亮的渲染风格

本文深入解析了PBR(基于物理的渲染)与NPR(非真实感渲染)在游戏视觉风格中的应用差异,通过《原神》和《双城之战》的案例,展示了两种渲染技术如何创造出截然不同的艺术效果。从技术原理到实战案例,帮助读者理解如何根据项目需求选择合适的渲染风格。

weixin_30425949的博客 146

win10开启蓝牙虚拟串口

win10开启蓝牙虚拟串口方法

Max的杂物仓 5万+

5款免费二进制编辑器横向评测:从HxD到ImHex谁更适合你?

本文对5款免费二进制编辑软件进行深度横向评测,包括HxD、wxHexEditor、010 Editor、ImHex和GNU Emacs,涵盖从轻量级到专业级的各种需求。评测基于文件处理能力、编辑功能、分析工具等核心维度,为开发者、逆向工程师和安全研究人员提供实用选择指南,帮助用户根据具体场景选择最适合的二进制编辑工具。

weixin_29278805的博客 371

CMake入门教程【基础篇】在Windows、Linux上安装CMake

CMake如何下载与安装

小鱼酱的博客 2727

蓝牙链接上的标准串行COM3和USB串行设备COM3

设备管理器-->USB串行设备COM3右键-->属性-->端口设置-->高级-->COM 端口号,修改成一个没有冲突的端口号就行。如果还是提示串口不可用,就卸载再重新安装CH340驱动。,如果该蓝牙设备一直处于保留状态,Windows就会一直保留该串口位置,不会删除,进而影响串口的其他操作。win10蓝牙链接上的标准串行COM3和USB串行设备COM3冲突,导致USB串口无法正常接收数据。Windows系统每次使用蓝牙与手机(耳机等蓝牙设备)配对时,就会自动分配一个。

weixin_60726913的博客 8540

insightface scrfd人脸检测测试

pip install mmdet 自动安装mmcv win10上可以,服务器上没成功

jacke121的专栏 4022

杰理之PC连接蓝牙,查看更多蓝牙选项,查看SPP连接COM端口【篇】

21512352513521521521

u013820168的博客 289

在YOLO中扩充新类别并且不影响旧类的识别精度

让我们先从简单的部分开始:用我们的新类训练自定义 YOLOv8 模型。在本教程中,我们将向模型添加车牌类。我们将使用Roboflow 中的一个数据集。这个数据集有两个车牌类。在开始训练之前,我们还必须对库进行一些更改。为了节省时间,我还将本教程中我们将进行的更改转换为补丁该补丁包含多项更改,但大多数更改都用于指南的下一部分。if RANK!= -1:是的,我们将编写一个回调。我们希望将此自定义训练模型的头部与 COCO 预训练模型中的旧头部一起使用。

如果想成为中心,那么就到中心去吧。 1225

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

win7与android设备通过蓝牙串口的连接方法

如果能够在PC和Android设备间通过串口进行数据通信,会有利于对程序的调试。 步骤如下:  1、首先需要安装有win7的PC机带有蓝牙适配器。 2、在win7下设置蓝牙可被查找,然后打开蓝牙适配器。 3、将android设备与PC机进行配对,从而在“Bluetooth设备”中出现需要连接的android设备。配对过程中win7会安装一些蓝牙外围设备驱动。 4、在win7“Blueto

Luckyman 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

如何任意修改蓝牙等端口号(COM)【图文】

在我们插上蓝牙串口,搜索到蓝牙的时候,操作系统便会为该蓝牙分配一个空闲端口(比如COM5),该端口号会被操作系统“记忆”以备下次使用。当我们连接同一个蓝牙的时候,操作系统便会将该端口分配给该蓝牙。 这会导致这样一个后果,因为被“记忆”的端口号会显示为“使用中”,如图: 久而久之,我们大量的端口就会被占用。 那么如何“解放”他们呢? 如图:打开设备管理器 右键卸载,即将其“解放

文森特 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

蓝牙虚拟串口传入端口和传出端口

传出COM端口和传入COM端口代表了通讯双方主动和被动的关系 传出COM端口 是Windows主动向串口蓝牙适配器发起连接时所使用的虚拟串口号 传入COM端口 是串口蓝牙适配器主动向Windows发起连接时所使用的虚拟串口号。 就是选择电脑蓝牙的主从模式. 用电脑上的蓝牙连接其他蓝牙适配器从机时,应该选择传出COM端口. 转载于:https://www.cnbl...

aizongsai2251的博客 2319

Bluetooth SDP

1、 what is SDP?       SDP(service discovery protocol:服务发现协议)。SDP协议让客户机的应用程序发现存在的服务器应用程序提供的服务以及这些服务的属性。       SDP提供了一套SDP server和SDP client之间的通讯方法。 SDP server维护着一个服务条目列表,这个列表存放着SDP server对应的服务以及服务特性...

Do what you want 1927

蓝牙map协议源码解析

MAP协议 使用场景:智能车载中同步短信,彩信等信息 1 协议概述 协议代码路径:  frameworks\opt\bluetooth\src\android\bluetooth\client\ map这个包中 Jar包名称,android.bluetooth.client. map 所以进行开发时,在mk文件中需要添加这个包, 并且,在AndroidManifest文件中必须导入

Jack的博客 1万+

HC05蓝牙模块与笔记本蓝牙连接

HC05支持SPP协议,使用PC主机自带蓝牙,或者笔记本加蓝牙适配器。与HC05连接后,可在电脑端虚拟出串口,这样上位机软件就可以像操作串口一样与HC05通信。

TENET123的博客 1万+

蓝牙Log中的关键字

1  蓝牙搜索 bt_btif : btif_dm_start_discovery : pairing_cb.state: 0x0 bt_btif : bta_sys_event: Event 0x200 bt_btif : bta_dm_search_sm_execute state:0, event:0x200 bt_btif : bta_dm_search_start avoid_s...

Neoway0401的博客 3575

SDP HFP record生成

接上篇文档:http://blog.youkuaiyun.com/xiaoxiaopengbo/article/details/52952925 本文主要写HFP SDP record的生成代码 闲话不多说,上硬货 HFP SDP recode main #include #include "sdp_util.h" unsigned char hfp_service_buffer[150]

朝气蓬勃 3601

双笔记本自带蓝牙的串口通讯

双笔记本自带蓝牙的串口通讯 现在的笔记本电脑都自带蓝牙模块,而普通的台式PC, 也可以通过USB蓝牙模块扩展蓝牙功能。因此,对于都有蓝牙模块的电脑,可以通过将蓝牙虚拟成串口,进行双机通讯。对于Electron的串口应用,蓝牙串口也是一种可选方式。 Window系统对蓝牙协议版本的支持 对于蓝牙模块之间的互连,如果支持的协议不兼容,是查找不到对端设备的,而Windows系统对蓝牙版本的支持也有区别。...

Pegasus的软件博客 5915

Android Bluetooth OPP

分析Android Bluetooth的Object Push Profile

我有一壶酒 1万+
上一篇: MS蓝牙协议栈状态(转载)
下一篇: [Bluetooth]查询远程设备上的服务
JamesXing
博客等级 码龄20年 30粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值