蓝牙—RFCOMM协议
2019独角兽企业重金招聘Python工程师标准>>>
RFCOMM是一个简单的协议,其中针对9针RS-232串口仿真附加了部分条款.可支持在两个蓝牙设备之间同时保持高达60路的通信连接.RFCOMM的目的是针对如何在两个不同设备上的应用之间保证一条完整的通信路径。
1.RFCOMM服务概述
RFCOMM仿真RS232串口,该仿真过程包括非数据通路状态的传输。RFCOMM不限制人工速率或步长,如果通信链路两端的设备都是负责将数据转发到其他通信介质的第二类设备,或在两端RFCOMM设备接口上进行数据传输,实际数据吞吐一般将反映波特率的设置.RFCOMM支持两个设备之间的多串口仿真,也支持多个设备多串口的仿真.
1.1 RS232控制信令
RFCOMM提供针对9针RS-232接口的仿真.
1.2 空MODEM仿真
RFCOMM基于TS 07.10,当设备准备传输非数据通路的状态信息时,TS07.10不区分DTE和DCE设备,而是通过RS232控制信号来表示DTE/DCE各自的信号.如下表反映其映射关系.
当两同类设备互联时,TS07.10传输RS232控制信号的方式就会创建空MODEM,
1.3 多串口仿真
1.两设备间的多串口仿真
两个采用RFCOMM进行通信的BT设备可以同时打开多个串口,最多60个,但是一个设备打开端口数根据实际实现而不同.
一个数据链接标识(DLCI)唯一标识对客户和服务器之间的持续连接.DLCI长度为6bit,可用值区间为2~61.TS07.10中,DLCI 0 为控制信道,DLCI 1根据服务器信道概念不能使用,DLCI 62-63保留使用,DLCI在两个设备间的RFCOMM会话中保持一致.
在一次RFCOMM会话中,客户和服务器应用可以分布在通信的两端,每一段的客户都可以独立发起建立通信连接。因此RFCOMM服务器信道的概念将DLCI值域空间在两个正在进行通信的设备间进行划分。
2.多仿真串口和多BT设备.
如果BT设备支持多串口仿真,通信连接两端允许使用不同BT设备,那么RFCOMM实体必须能够运行多个TS07.10多路复用器会话,每一多路复用器都是用其L2CAP信道ID(CID)。RFCOMM可以选择支持TS07.10多路复用器的多个会话.
2. 服务接口描述
RFCOMM目的在于定义一个能够利用仿真串口的协议。
3.采用TS07.10子集和TS07.10的修正后的RFCOMM
3.1 RFCOMM的帧结构
RFCOMM不使用TS07.10基本帧格式中的开始和结束标志,而仅适用包含在L2CAP层和RFCOMM层间交换标志的那些域。
1.地址字段(Address Field)
地址字段占一个字节,它包括DLCI(Data Link connection identifier,数据链路链接标识),C/R位和地址字段扩展位(EA),其中在DLCI(第三位到第八位)中D位表示方向.
对于一次RFCOMM会话,发起方设备方向位(Direction bit)设为D=1(相反则D=0),当在已有的RFCOMM会话上建立一条新的数据链接时,方向位用于服务器端通道相关,以确定其DLCI,从而建立到特定应用的连接.连接建立后,DLCI就在两端间的两个方向上传输数据分组.DLCI值域实际上分为两部分,非发起方设备上的应用使用DLCI偶数号访问,发起方设备上的应用则使用DLCI奇数号,对于一个支持多路同步RFCOMM会话的设备,方向位不一定在所有会话中都一致.
一个在已有会话上建立新的DLC的RFCOMM实体,将其他设备使用的服务器通道和该会话方向位的求反值组合为DLCI。
DLCI不仅是标志着个人用户信息流,而且标志着连接着TE和MS之间的链路。DLC是动态分配的.
DLC0用于控制信道.
C/R(Command/Response)位表示的是此帧是一个命令还是一个响应.和HDLC规则一样,命令帧包含数据链路连接的地址是目的地的地址,而应答帧包含的是应答方的地址,对于给定的DLCI,命令和应答的地址字段的DLCI值是一样的,就是C/R位不同.
2.控制字段(Control Field)
4. 流控制
RFCOMM协议提供两类流控制协议:
<1>RFCOMM协议定义了能对两RFCOMM实体之间全部数据流操作的流控制指令,对所有的DLCI都起作用.
<2>调制解调器状态指令实质就是可操作单个DLCI的流控制机制.
端口仿真实体将系统指定通信端口映射与RFCOMM服务,端口代理实体将数据从RFCOMM转发至连接DCE设备的外部RS232接口,RS232接口的通信参数根据接受的RPN指令进行设置.
转载于:https://my.oschina.net/u/920274/blog/2994471
蓝牙—RFCOMM协议相关推荐
- 【蓝牙RFCOMM 协议】
蓝牙RFCOMM 1.RFCOMM 1.1 服务定义模型 1.2 字节排序 2 RFCOMM数据帧 2.1 选项和模式 2.2 帧类型 2.3 帧格式 2.3.1 Address 2.3.2 Cont ...
- 传统蓝牙RFCOMM协议(Bluetooth rfcomm)流程介绍
零. 概述 本文章主要讲下蓝牙协议栈RFCOMM协议部分流控介绍 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景, ...
- 蓝牙协议栈开发板 STM32F1 跑蓝牙协议栈 --传统蓝牙串口协议SPP演示以及实现原理
零. 概述 主要介绍下蓝牙协议栈开发板跑传统蓝牙串口协议SPP AT指令以及上位机操作步骤,以及原理 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ...
- linux蓝牙串口 rfcomm,蓝牙RFCOMM通信
最近需要在某个开发板上面通过蓝牙和手机蓝牙连接,并通过RFCOMM通信.还没有做过蓝牙RFCOMM相关工作,因此先在linux PC上面调试一下流程,并在此记录调试过程. 一.说明 RFCOMM协议基 ...
- 蓝牙 BLE 协议学习: 有关概念介绍
背景 在学校内就用过蓝牙技术参加过比赛(并拿了奖):而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习.此后的文章会以 ble(v4.0) 进行学习. 介绍 蓝牙技术最初由电信巨头爱立信公司于 1 ...
- 蓝牙音频协议双剑客(一)--音视频频分布传输协议(AVDTP)概念
零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)传统蓝牙音频协议之 音视频分布传输协议的概念,包含AVDTP概念,AVDTP组件,AVDTP传输服务,AVDTP的属于介绍. 一. 声 ...
- RK3568平台开发系列讲解(蓝牙篇)蓝牙通讯协议PhoneBookAccessProfile(PBAP)同步通讯录
文章目录 <font color=#0990d9>一.PBAP描述 <font color=#0990d9>二.通讯录获取流程 <font color=#0990d9&g ...
- 【低功耗蓝牙】⑤ 蓝牙HID协议
摘要 本文章主要介绍了蓝牙HID协议的实现方法,基于ESP32平台实现了蓝牙键盘,蓝牙鼠标,蓝牙自拍杆和蓝牙游戏手柄等设备,是初学者学习BLE HID协议很好的参考文章. HID设备 HID(Huma ...
- 蓝牙核心协议学习 -- 基带协议(Baseband)翻译最终版
2021-10-27 蓝牙核心协议学习 -- 基带协议(Baseband) 剩余篇章已上传到资源分享,链接如下: baseband翻译.pdf-其它文档类资源-CSDN下载 baseband翻译.pd ...
最新文章
- 关于matlab中pcolor显示图片时的shading设置问题
- Matlab函数解释:colormap
- matlab3dimshow_matlab利用MATLAB嵌套函数表示3D作图
- 《算法竞赛入门经典》计算组合数问题
- 你的输入法都暴露了些啥?
- 前端学习(1188):事件绑定
- 使用wireshark抓包,本地环回测试通信数据已经通过SM4国密算法加密
- LeetCode 50. Pow(x, n)(二分查找)
- Python案例:查询城市天气并绘制最高气温与最低气温折线图
- day1 -- Python变量、注释、格式化输出字符串、input、if、while、for
- java求两个数组的并集、交集、差集
- python的第三方库是干什么用的-python一些工作用到的第三方库
- 20170831_安装软件
- Hexo博客开发之——theme主题备份上传失败
- 技能get!如何使用PDF查找关键字
- 4线电阻屏linux驱动,TQ2440四线电阻式触摸屏驱动程序的分析
- 网页中自动连续播放音乐文件的实现
- 一个人靠不靠谱,在于能力是否配得上承诺
- 有关NodeBB从低版本1.7.x升级到最新的1.16.x版本
- 一只猴子和那些超神的脚本......