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指令进行设置.

蓝牙—RFCOMM协议的更多相关文章

  1. python绝技 — 扫描蓝牙RFCOMM信道

    RFCOMM协议 RFCOMM通过蓝牙L2CAP协议模拟了RS232串口.这会与另一台设备建立一个蓝牙连接,模拟一条普通的串行线缆,使用户能够用其他设备控制这一台设备,通过蓝牙打电话,发短信,读取手机 ...

  2. 蓝牙 BLE 协议学习: 000-有关概念介绍

    背景 在学校内就用过蓝牙技术参加过比赛(并拿了奖):而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习.此后的文章会以 ble(v4.0) 进行学习. 介绍 蓝牙技术最初由电信巨头爱立信公司于 1 ...

  3. 蓝牙RFCOMM通信

    最近需要在某个开发板上面通过蓝牙和手机蓝牙连接,并通过RFCOMM通信.还没有做过蓝牙RFCOMM相关工作,因此先在linux PC上面调试一下流程,并在此记录调试过程. 一.说明 RFCOMM协议基 ...

  4. 玩转BLE(3)_使用微信蓝牙精简协议伪造记步数据

    1. 前言 在物联网时代,有一个问题肯定会让人头疼(现在已经初露端倪了): 物联网中的IOT设备有两个主要特点: 1)简单小巧(不具备复杂的人机交互接口,需要手机等终端设备辅助完成配置.控制等功能). ...

  5. 蓝牙HID协议笔记【转】

    蓝牙HID协议笔记 转自:http://blog.sina.com.cn/s/blog_69b5d2a50101emll.html 1.概述     The Human Interface Devic ...

  6. 蓝牙spp协议分析

    基本概念 蓝牙串口是基于 SPP 协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备. 蓝牙串口的目的是针对如何在两个不同设备(通信的两端)上的应用之间保证 ...

  7. [蓝牙] 2、蓝牙BLE协议及架构浅析&&基于广播超时待机说广播事件

    第一章 BLE基本概念了解 一.蓝牙4.0和BLE区别   蓝牙4.0是一种应用非常广泛.基于2.4G射频的低功耗无线通讯技术.蓝牙低功耗(Bluetooth Low Energy ),人们又常称之为 ...

  8. 蓝牙HID协议笔记

    1.概述     The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议.特征和使用规程.典型的应用包括蓝牙鼠标.蓝牙键盘.蓝牙游戏手柄等.该协议改编自USB ...

  9. android 蓝牙SPP协议通信

    准备 1.蓝牙串行端口基于SPP协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输 2.SPP的UUID:00001101-0000-1000-8000-00805F ...

随机推荐

  1. java-嵌套类

    浏览以下内容前,请点击并阅读 声明 java允许在一个类中定义另外一个类,这就叫类嵌套.类嵌套分为两种,静态的称为静态嵌套类,非静态的又称为内部类. 使用嵌套类的原因: 能够将仅在一个地方使用的类合理 ...

  2. Moscow Pre-Finals Workshop 2016. National Taiwan U Selection

    A. As Easy As Possible 每个点往右贪心找最近的点,可以得到一棵树,然后倍增查询即可. 时间复杂度$O((n+m)\log n)$. #include <bits/stdc+ ...

  3. ORACLE11g JDBC Driver

    http://blog.163.com/z_rx/blog/static/276363762011312947507/ ORACLE服务器端安装程序找到相应目录"x$\app\Adminis ...

  4. Codeforces Round #228 (Div. 2) A. Fox and Number Game

    #include <iostream> #include <algorithm> #include <vector> #include <numeric> ...

  5. 【BZOJ】2924: [Poi1998]Flat broken lines

    题意 平面上有\(n\)个点,如果两个点的线段与\(x\)轴的角在\([-45^{\circ}, 45^{\circ}]\),则两个点可以连线.求最少的折线(折线由线段首尾相连)使得覆盖所有点. 分析 ...

  6. 【noiOJ】p7940

    01:查找最接近的元素 总时间限制:  1000ms 内存限制:  65536kB 描述 在一个非降序列中,查找与给定值最接近的元素. 输入 第一行包含一个整数n,为非降序列长度.1 <= n ...

  7. 《自制编程语言》笔记:使用yacc与lex制作简单计算器

    1.代码 1.1)test.l 1.2)test.y 1.3)Makefile (因为是在linux环境下,所以使用了Makefile) 2.编译与运行 2.1)编译 2.2)运行 1.代码(也可以在 ...

  8. java mail(发送邮件--163邮箱)

    package com.util.mail; /** * 发送邮件需要使用的基本信息 */ import java.util.Properties; public class MailSenderIn ...

  9. 在IE8中使用padding设置select控件文字垂直居中

    在火狐.苹果.谷歌.欧鹏等主流浏览器中,select下拉表单的文字能够垂直居中,如图: 而在ie8中,select下拉表单的文字基本就是靠底部显示,如图: 那么,如何使得ie8下的select文字垂直 ...

  10. Linux_安装软件包

    一.软件包: 源码包 二进制包(rpm包,编译完成) 依赖性 包A-->包B-->包C 一.rpm 挂载镜像,从镜像文件中找到要安装的rpm包 [root@hadoop09-linux ~ ...