OBEX和蓝牙开发

Android 蓝牙 PBAP obex协议详解 - 史上最全 android-蓝牙A2dp-avrcp-hfp-opp-配对流程-ble-rfcomm源码流程 Android 蓝牙 pbap obex rfcomm拉取联系人协议源码分析大全 - 点击下载 一、 PBAP简介 PBAP:Phone Book Access Profile的简称,电话本访问协议,是一种基于OBEX的上层协议,该协议可以同步手机这些具有电话本功能的设备上的通讯录和通话记录等信息。 角色定义: PSE:Phone Book Server Equipment,拥有电话本源数据的设备,作. 阅读详情
1.OBEX客户端: 连接是由OBEX客户端向OBEX服务端发起的,下面的命令可以用来建立和释放这个连接。 Connect方法:在OBEX层上由客户端发起向服务器端请求建立一个连接。在这之前可以先调用IObex::EnumDevices方法,得到指向OBEX服务器设备的指针。 每一个设备都向外界提供了一个Connect的接口。如果这个设备没有提供OBEX服务,则发向这个设备的Connect请求会失败。用户看不到传输的详细信息,只有name和address是可见的。 Disconnect方法: 释放客户和服务器端的连接和所占用的资。 当一个连接成功建立后,用户可以使用下面的方法: Put方法: 从当地向服务器发送数据。 Get方法:如果服务器提供了这个方法,就可以从服务器上得到数据。 Abort方法:中断PUT和GET方法。 SetPath方法:设置在服务器上浏览的当前路径,和在服务器上创建路径。 下面是几个方法使用的例子。见MSDN。 Connecting to an OBEX Server Disconnecting from an OBEX Server Requesting a Data Object from the OBEX Server Sending a Data Object to the OBEX Server Aborting a Request Setting the Target Folder Path on the OBEX Server See Also Device Discovery Object Exchange Interfaces Connection Points Use of Streams Object Exchange Protocol 1.1Device Discovery设备发现 设备发现可以让客户端发现进入范围内其它的有OBEX服务的设备,调用IObex::EnumDevices 方法可以得到这些设备的列表。还有一种方法是应用IConnectionPointContainer和IObexSink 。然后在IObexSink中接收设备发现的通知。具体做法如下: IObex->QueryInterface 查询得到IConnectionPointContainer (pCPContainer) 的指针。 pCPContainer->FindConnectionPoint(&pCP) IObexSink pSink; pCP->Advise(pSink) IObexSink pObex->StartDeviceEnum 代码如下: IObex* m_pObex; CObexSink m_ObexSink; IConnectionPointContainer *m_pCont; IConnectionPoint *m_pConPt; DWORD m_dwConnectCookie; if(!SUCCEEDED(m_pObex->QueryInterface(IID_IConnectionPointContainer, (LPVOID *)&m_pCont))) return FALSE; if(!(SUCCEEDED(m_pCont->FindConnectionPoint(IID_IObexSink, &m_pConPt)))) return FALSE; if(!(SUCCEEDED(m_pConPt->Advise((IUnknown *)(&m_ObexSink), &m_dwConnectCookie)))) return FALSE; 其中class CObexSink : public IObexSink应该也可以直接声明一个IObexSink。在CObexSink中重写了 Notify(OBEX_EVENT Event, IUnknown * pUnk1, IUnknown * pUnk2)。 Device Capability设备的能力: 设备能力是OBEX服务器所提供服务的一个提示。当OBEX服务器被客户端发现时,传输层组装所提供的服务的标志到字节域中。然后客户端可以根据这些标志位来判断服务器提供了哪些服务。这些标志并不是意味着服务器提供了这些服务,这只是一个提示。为了验证服务,客户端要向服务器端发送一个连接请求,如果服务器端没出息提供所要求连接的服务,则连接会失败。 通常情况下会提供以下的服务:Push,File Browsing ,Synchronization。 对于红外设备,则是连接线外端口。 对于蓝牙设备,则是提示了远端服务器的一个标识符。 1.2Object Exchange Interfaces对象交换接口 对象交换接口可以让应用程序通过OBEX服务协议来交换数据。WINCE提供了对OBEX的支持,你可以在两个配对的设备上运行多个OBEX服务程序。 1.3Connection Points连接点 OBEX支持连接点的用户通告。连接点运用了标准的COM方法在对象上定义了一个回调函数。服务器和客户端通常不调用回调函数,这样连接请求和连接释放时就会得不到消息。服务器和客户端都是通过这个方法完成了回调。 1.4 Use of Streams obex函数在发送和接收OBEX头Body和EndOfBody头时要把这些数据压到一个对象中。BODY部分则是通过一个模块化的COM的IStream 接口。在文件传输时,调用OpenStreamOnFile函数获得这个文件的stream接口。然后就可以用来COPY从OBEXAPI得到的stream。发送数据,可以调用IStream 的Read和Write方法。大多情况下,OBEX层都会把数据压到Body和EndOfBody头中。 1.5 Connecting to an OBEX Server connect请求是可选的,如果在调用不着Get和Put前没有调用Connect则会先发送一个255字节的数据包。 CONNEXT:调用IObexDevice::Connect()服务器然后回应一个属性包。 发送的数据包的长度取决于所包含的请求头的数目和大小。 在发送CONNECT请求时可以使用Target头,用来指定服务。如果没有指定则为inbox服务。 Authenticate Challenge is used by the client when authenticating with a server. Authenticate Response is sent by the client when responding to a server challenge. The OBEX version is 1.2 and the flags are always set to 0. 下面的用在CONNECT回应包中: Who contains the same information specified in the request target header. Authenticate Challenge is sent by the server when a client is authenticating. Authenticate Response is sent by the server to indicate a successful challenge/response. A successful response to the Connect request is a 0xA0 response code, followed by the ConnectionId field and any other optional fields. If another code is received, it indicates a failure to make the connection. A fail response includes the version, flags, and packet size information, and a description header, if applicable.
6、Java与OBEX:实现蓝牙设备间的高效数据传输 本文详细介绍了OBEX协议的基础知识及其在Java应用程序中的应用,包括如何实现蓝牙设备间的数据传输。内容涵盖了OBEX协议的架构、对象模型、会话协议以及常见的OBEX操作。同时,还提供了客户端和服务器端的代码示例,帮助开发者更好地理解和使用OBEX协议。 阅读详情

相关推荐

蓝牙测试必备工具openobex-1.5

蓝牙测试必备工具openobex-1.5.tar.gz 测试蓝牙发送和接受数据. 解压并进入源码包所在目录,依次执行以下命令: #./configure --prefix=/root/bluez/openobex --host=arm-linux CC="arm-linux-gcc -I/root/bluez/bluez-libs/include -L/root/bluez/bluez-libs/lib" --enable-bluetooth --disable-usb --enable-apps #make #make install

蓝牙的OBEX协议

1.概述     OBEX为Object Exchange,用于在蓝牙设备间传数据对象,来源于红外定义的协议,后被蓝牙采用。OBEX在蓝牙协议层中的位置如下图(在之前的OBEX版本中,OBEX是通过RFCOMM挂在L2CAP上的): 2.Object Model     OBEX定义了Object model来进行数据的交换,形式为Request-Respon

石头的专栏 1684

手机如何高效辅助林业调查

手机如何高效辅助林业调查 很多林业工作者将栅格类型的地形图处理后导入平板电脑,在林地使用平板电脑加载小班矢量图,辅助林业调查。但是,如果没有地形图底图,这种方法可能就有难度,而且最重要的是,大部分林地工作者没有能力配置平板电脑。大凡林业基层工作者在林地调查时,除调查记录本等部分纸质材料外,都必然携带手机和水杯,此外其他设备已经成为累赘,尤其是炎热的夏季在杂灌丛生的林地进行调查作业。因此,使用手机...

xu780820的博客 3077

蓝牙对象交换协议(OBEX) - 常见的opcode介绍

OBEX全称为Object Exchange,是对象交换协议,蓝牙的OBEX是IrOBEX的子集,其中对象是一个柔性概念,可以包括文件,诊断信息,电子商务卡片(Vcard),银行的存款,短信消息等等。Objects在这里没有高级的技术含义,而是视你的应用而定

朝气蓬勃 2450

ThunderScope开源示波器

4CH,1GSa/S 开源示波器。前端很简洁,BUF802+LMH6518,ADC是HMCAD1511,用Xilinx A7 FPGA进行控制,数据通过PCIE总线传输到上位机处理。目前这个项目已经被挂到了Xilinx官网,强。设计日志:https://hackaday.io/project/180090-thunderscope开源地址:https://github.com/EEVengers/ThunderScope。

leida_wt的博客 8186

Matlab实战:用递归最小二乘法(RLS)搞定动态系统参数辨识(附完整代码)

本文通过Matlab实战,详细介绍了如何利用递归最小二乘法(RLS)进行动态系统参数辨识。文章从理论优势切入,提供了完整的仿真数据生成、RLS算法核心实现代码,并对参数收敛过程、预测误差及不同遗忘因子的影响进行了可视化分析与性能评估,为工程实践提供了清晰的指南。

weixin_29035405的博客 503

蓝牙开发经验小结——自动文件传输(OBEX)

场景:控制端——普通手机;被控制端——XX设备(无屏幕、无法用户操作、有系统权限) 网上关于文件传输实现的文章较少,没有发现满足我需求的资料,于是我索性深入到系统源码里头,研究了系统蓝牙(com.android.bluetooth不同的平台包名可能有差异)是如何实现文件收发的,然后再设计出自己的实现方案。 对于已经实现了蓝牙socket通讯(BluetoothChatService和Bluetoo...

feelinghappy的专栏 1540

matlab2021a版本条件下安装spm

SPM (Statistical Parametric Mapping),中文名叫统计参数映射。统计参数映射是指构建和评估空间扩展的统计过程,用于测试关于功能成像数据的假设。这些想法已经在名为SPM的免费开源软件中得到了实例化。SPM软件包用于脑成像数据序列分析。目前的版本可以分析fMRI, PET, SPECT, EEG和MEG。 可能由于matlab版本更新的问题,按照之前教程所写的安装方法会出现错误,踩了一些坑,但好在最终解决了。。。 1、下载链接,如下 SPM12 Software -...

qq_42356925的博客 8405

蓝牙信息交换服务器,蓝牙--对象交换协议(OBEX)

1.OBEX协议概述OBEX是IrOBEX的简称,IrOBEX协议是红外数据协会IrDA开发的用于红外数据链路上数据对象交换的会话层协议.OBEX是一种紧凑高效的二进制协议,功能类似于HTTP协议。为了支持不同的平台,OBEX不指定特定的传输数据类型,只定义传输对象(Object).OBEX在蓝牙系统中被映射到RFCOMM和TCP/IP层之上,其中OBEX overTCP/IP是作为可选项出现的....

weixin_29466045的博客 1509

SVN使用:使用TortoiseSVN遇到提示请执行“清理”命令的解决方法

作为程序员来说,在团队开发过程中关于代码管理的工具使用并不陌生,比较常用的代码合并管理工具如:Git、SVN等,虽然相关工具的使用并不复杂,但是还是要掌握常用的使用方法,尤其是相关的第三方软件的使用也是极为重要的,而且有时候使用这些三方软件来进行代码管理的时候也会遇到一些问题。本篇博文就来分享一下在SVN使用的时候使用TortoiseSVN遇到提示请执行“清理”命令的解决方法,方便查阅使用。

全沾软贱开发攻城狮 1万+

YOLOv13优化:PoolingFormerCGLU模块 MetaFormer 框架 + 池化混合器 手把手教你自注意力

PoolingFormer1 是一个基于 MetaFormer 框架 的轻量化卷积-Transformer 混合模块,通过 Pooling 取代自注意力,实现: 更低的计算成本 一定的全局信息融合 兼容 CNN 和 Transformer 的优点

FJN110的博客 425

Symbian 3rd 开发蓝牙OBEX 详细设计与代码

蓝牙OBEX发送文件实现                               BTFileSend    1、实现原理... 1    1、1OBEX 协议说明... 1    1、2 基于OBEX文件传输过程... 4    2、开发平台... 5    3、开发说明... 6  

阳光下 3324

STM32CubeMX之定时器输入捕获

上一章介绍了STM32定时器的PWM输出功能,定时器的几个通道除了有输出功能外,还可以做输入用,可捕获信号的上升沿或下降沿,可以用于测量信号的频率、周期、占空比等。本篇文章将介绍用STM3...

zhang062061的专栏 1337

VC++使用OBEX协议推送文件至android手机

csdn上的某些博主比较恶心,有的随便放些文档的图片,有的长篇大论给你解析obex协议,有的胡乱搞些数据,问题是竟然误导你,按照他的数据根本无法正常通讯,我在csdn上搜索到的大部分都是这些垃圾内容,耗费了我大量时间和精力.我不明白他们为啥就不能贴点代码,他们和代码有仇吗?我想起祖师爷那句话。

oqqsoap1234567的博客 1202

100天精通Python(基础篇)——第2天:基础语法详解(标识符、保留字、注释与代码结构)

100天精通Python(基础篇)——第2天:基础语法详解(标识符、保留字、注释与代码结构)

努力让自己发光,对的人才能迎着光而来 34万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 蓝牙 obex,OBEX协议的研究及在Android蓝牙系统上的实现

摘要:在物联网的时代背景下,Android智能手机系统和蓝牙等无线技术的应用范围越来越广。Android平台下各个功能模块和无线技术的研究以成为当今研究的热点。本文通过分析Android平台下蓝牙自低向上的所有技术细节,完善Android系统的蓝牙模块的功能,实现系统级别的蓝牙文件对象的有效传输。 文中从对象模型和会话协议两方面介绍了OBEX协议,并解析了其在文件传输上的绑定实现。详细研究了And...

weixin_39703468的博客 380

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

终极跨平台蓝牙开发指南:32feet.NET 完整实践教程

想要在 .NET 平台上实现跨平台蓝牙应用开发?32feet.NET 提供了完整的解决方案!🚀 这个开源项目专为 .NET 开发者设计,支持 Windows、Android、iOS、Linux 等多个平台,让蓝牙开发变得简单高效。 ## 为什么选择32feet.NET进行蓝牙开发? 32feet.NET 是 .NET 生态系统中最强大的蓝牙开发库之一,它为开发者提供了统一的 API 接口,大

gitblog_00985的博客 1004

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

32feet.NET终极指南:5分钟快速上手.NET蓝牙开发

32feet.NET是专为.NET开发者打造的个人区域网络技术开发库,让你轻松实现蓝牙、红外等设备间的无缝连接。无论你是开发桌面应用、移动App还是嵌入式系统,这个开源免费的工具都能大幅提升你的开发效率。本指南将带你从零开始,快速掌握这个强大的蓝牙开发框架。 ## 🚀 项目简介:什么是32feet.NET? 32feet.NET是一个开源项目,旨在让.NET开发者能够轻松访问个人区域网络技术

gitblog_00580的博客 1109

OBEX - OPP (对象推送协议)

OPP(对象推送协议)摘要: OPP是蓝牙SIG定义的文件推送标准协议,基于OBEX协议实现,主要用于手机向嵌入式设备单向传输文件。其核心特点包括: 协议架构 采用经典蓝牙RFCOMM通道传输 基于OBEX对象交换协议 通过SDP服务发现机制宣告服务能力 典型应用场景 手机分享图片/联系人/文件到设备 兼容性好,Android/Windows原生支持 实现复杂度低于FTP协议 技术实现要点 采用Client-Server模型(手机为Client) 使用RFCOMM通道12(行业惯例) 传输

hk_kmkk的博客 307

10分钟精通32feet.NET:个人区域网络开发的完整解决方案

你是否曾经为.NET平台上的蓝牙开发而头疼?面对复杂的原生API和跨平台兼容性问题,很多开发者望而却步。现在,32feet.NET为你提供了一个简单、免费且功能完整的解决方案,让你能够快速上手个人区域网络开发! ## 🚀 项目快速概览 32feet.NET是一个开源的.NET库,专门用于简化个人区域网络技术的开发。无论是经典蓝牙、低功耗蓝牙(BLE)、红外通信(IrDA)还是对象交换协议(O

gitblog_00775的博客 1010

有关Android Bluetooth - OBEX OPP文件传送

Android developer站点相当详细地介绍了bluetooth API的使用,但它没有提到OBEX。事实上,Adroid早已支持OBEX 的文件传输等功能,比如在share文件时,就可以选择通过蓝牙share,其用到的就是OBEX协议,感兴趣的可以下载android的源程序看其如何实现OBEX OPP协议(访问grepcode站点可以很方便地查看下载源码)。 我根据前人通过查看源程序找

swingseagull的专栏 4332

Android开发中蓝牙协议分析

(如果设备是Nordic的) 来克服官方API的复杂性,提升开发效率和可靠性。时刻关注Android版本带来的权限和后台限制变化,并熟练掌握HCI日志等调试工具,是成功开发健壮蓝牙应用的关键。Android蓝牙开发是一个涉及底层协议、复杂API、严格权限和兼容性挑战的领域。深入理解BLE的GATT/ATT架构是核心。对于现代BLE应用开发,强烈推荐使用。Android蓝牙开发的核心在于理解其协议栈的分层模型。

JMY_2016的博客 1225

Java Bluetooth 程式開發入門

<br /> Java Bluetooth 程式開發入門<br /> This document is provided as is. Use it at your own risks. You are, however, welcomed to use it for educational, non-commercial purpose. <br />Written by: 國立中興大學資管系呂瑞麟<br /> 請勿轉貼<br />看其他教材<br /> 目錄藍芽簡介開發環境簡介 程式開發 L

凤凰涅槃 1658
上一篇: TSE下载的地方
下一篇: 为firefox添注rtsp协议
AgentAI
博客等级 码龄22年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值