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. ccc pool

    var sp = new _ccsg.Sprite("a.png"); this.addChild(sp); cc.pool.putInPool(sp); cc.pool.getF ...

  2. BZOJ4573 : [Zjoi2016]大森林

    扫描线,从左到右依次处理每棵树. 用set按时间顺序维护影响了这棵树的所有操作,那么一个点的父亲就是它前面第一个操作1. 用Splay维护树的括号序列,那么两点间的距离就是括号数量减去匹配的括号个数. ...

  3. 到底AR初创公司Magic Leap是不是骗子?我看未必

    AR技术和VR技术在今年的发展可谓是日新月异,眼看年末已至,不成想却出现了大新闻.最炙手可热的神秘AR初创公司Magic Leap被硅谷付费媒体The Information(付费读者大多为硅谷资深投 ...

  4. css3 使用SVG做0.5px 的边框细线

    .HalfPixelLine{ background: repeat-x top left url("data:image/svg+xml;utf8,<svg xmlns='http: ...

  5. ACM: meixiuxiu学图论-并查集-最小生成树-解题报告

    /* 最小生成树,最小环的最大权值按照排序后去构建最小生成树就可以了,注意遇到的第一个根相同的点就记录权值,跳出,生成的环就是最小权值环. */ //AC代码: #include"iostr ...

  6. 带有hover效果的text-overflow

    代码:<!DOCTYPE html> <html> <head> <style> div.test { white-space:nowrap; widt ...

  7. 【BZOJ】3456: 城市规划

    http://www.lydsy.com/JudgeOnline/problem.php?id=3456 题意:求n个点的无向连通图的方案.(n<=130000) #include <bi ...

  8. android注意事项

    今天做安卓设计,正在学习布局.在过程中遇到了几个小问题,感觉非常有必要记录分享出来. 1.string字符串不要出现"that's" ,要使用“that is”要不然会报错. 2. ...

  9. java画图程序_图片用字母画出来_源码发布

    在之前写了一篇blog:java画图程序_图片用字母画出来 主要是把一些调试的截图发布出来,现在程序调试我认为可以了(当然,你如果还想调试的话,也可以下载源码自己调试). 就把源码发布出来. 项目结构 ...

  10. 最新Velocity使用和Velocity语法

    Velocity语法 Velocity的使用要用到下面几个包,可以从官网下载,commons-collections.jar,velocity-1.4.jar,velocity-dept.jar; 1 ...