CN108811185A - 一种基于ble的多客户端与单一外设节点会话保持方法 - Google Patents

一种基于ble的多客户端与单一外设节点会话保持方法 Download PDF

Info

Publication number
CN108811185A
CN108811185A CN201810586760.3A CN201810586760A CN108811185A CN 108811185 A CN108811185 A CN 108811185A CN 201810586760 A CN201810586760 A CN 201810586760A CN 108811185 A CN108811185 A CN 108811185A
Authority
CN
China
Prior art keywords
client
connection
android
bluetooth nodes
ble
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810586760.3A
Other languages
English (en)
Other versions
CN108811185B (zh
Inventor
包文强
张琳轩
祖畅
李乐菡
张鉴
杨潘宇枭
杨义
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Donghua University
National Dong Hwa University
Original Assignee
Donghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Donghua University filed Critical Donghua University
Priority to CN201810586760.3A priority Critical patent/CN108811185B/zh
Publication of CN108811185A publication Critical patent/CN108811185A/zh
Application granted granted Critical
Publication of CN108811185B publication Critical patent/CN108811185B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/20Manipulation of established connections
    • H04W76/25Maintenance of established connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/80Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明涉及一种基于BLE的多客户端与单一外设节点会话保持方法,包括多个安卓客户端和单一蓝牙节点服务端,多个蓝牙节点设备作为客户端,多个安卓客户端和单一蓝牙节点服务端之间建立一种伪连接,即安卓客户端和单一蓝牙节点服务端在第一次连接成功后,开启一个定时连接任务,每隔一个周期时间安卓客户端和单一蓝牙节点服务端建立一次短暂连接,连接时间到达后无论通信是否完成立刻断开。本发明可以实现多个安卓设备与节点同时保持通信。

Description

一种基于BLE的多客户端与单一外设节点会话保持方法
技术领域
本发明涉及蓝牙通信技术领域,特别是涉及一种基于BLE的多客户端与单一外设节点会话保持方法。
背景技术
目前,公知的BLE的一大缺点是GATT连接是独占的,也就是一个BLE外设同时只能被一个中心设备连接。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见了。当设备断开,它又开始广播。所以如何实现多个移动设备与节点同时保持通讯是一个亟待解决的问题
发明内容
本发明所要解决的技术问题是提供一种基于BLE的多客户端与单一外设节点会话保持方法,可以实现多个安卓设备与节点同时保持通信。
本发明解决其技术问题所采用的技术方案是:提供一种基于BLE的多客户端与单一外设节点会话保持方法,包括多个安卓客户端和单一蓝牙节点服务端,多个蓝牙节点设备作为客户端,多个安卓客户端和单一蓝牙节点服务端之间建立一种伪连接,即安卓客户端和单一蓝牙节点服务端在第一次连接成功后,开启一个定时连接任务,每隔一个周期时间安卓客户端和单一蓝牙节点服务端建立一次短暂连接,连接时间到达后无论通信是否完成立刻断开。
所述短暂连接的连接时间为100ms。
所述安卓客户端尝试连接时正好遇上蓝牙通道被占用,即安卓客户端每隔固定时间连续尝试连接,直到连接成功或者尝试连接次数达到设定的溢出值为止,其中,固定时间小于所述短暂连接的连接时间。
所述安卓客户端和单一蓝牙节点服务端连接后传输的数据格式满足以下要求:安卓客户端能对蓝牙节点服务端进行地址编号;安卓客户端能向单一蓝牙节点服务端发送控制命令。
所述安卓客户端与单一蓝牙节点服务端在进行首次连接时,安卓客户端发出的首次连接请求包括安卓客户端的ID标识码;单一蓝牙节点服务端收到ID标识码后,分配一个未被占用的编号,回复给安卓客户端,同时将ID标识码和对应的编号绑定在一起发送给上位机;上位机收到ID标识码和对应的编号后,创建一个和该编号绑定的新线程,在线程中存储有该ID标识码和用户接入的时间,同时开启倒计时看门狗任务;安卓客户端收到包含编号的应答信号后,进入会话状态。
所述安卓客户端与单一蓝牙节点服务端在进行会话时,安卓客户端定时向单一蓝牙节点服务端建立连接,并发送传感器数据请求,并将被分配的编号嵌入到请求帧头;节点收到传感器数据请求后,提取帧头到编号发送给上位机,另一方面向安卓客户端发送传感器数据;上位机收到编号后,检索与该编号绑定的线程,刷新其中的倒计时。
所述安卓客户端与单一蓝牙节点服务端在进行会话时,安卓客户端关闭会话,则发送关闭指令给单一蓝牙节点服务端;单一蓝牙节点服务端收到关闭指令后,在Cookie表中释放该Cookie,通知上位机关闭该编号的线程。
所述安卓客户端与单一蓝牙节点服务端在进行会话时,上位机将该编号绑定的线程长时间没有被刷新,倒计时看门狗任务的计数到0,通知单一蓝牙节点服务端释放该编号,最后关闭该线程。
有益效果
由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明可以支持多部手机与节点同时保持通信的BLE抢占式定时短连接机制,完成自定义BLE数据格式,实现安卓端BLE中间层代码,完成节点与上位机通信。
附图说明
图1是本发明实施例的流程图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明的实施方式涉及一种基于BLE的多客户端与单一外设节点会话保持方法,包括多个安卓客户端和单一蓝牙节点服务端,多个蓝牙节点设备作为客户端,多个安卓客户端和单一蓝牙节点服务端之间建立一种伪连接,即安卓客户端和单一蓝牙节点服务端在第一次连接成功后,开启一个定时连接任务,每隔一个周期时间安卓客户端和单一蓝牙节点服务端建立一次短暂连接,连接时间到达后无论通信是否完成立刻断开。
本发明中的安卓客户端每隔一个周期时间与单一蓝牙节点服务端建立一次短暂连接,连接时间比如100ms,100ms后无论通信是否完成立刻断开,这样理论上节点服务端1秒内可以接入10部安卓客户端。通过压缩连接时间,就减少一个设备占用蓝牙设备通道的时间,以供其连接其他客户端。
考虑到如果安卓客户端尝试连接时正好遇上蓝牙通道被占用,这时候就需要一种抢占机制,即安卓客户端每隔50ms连续尝试连接,直到连接成功或者尝试连接次数达到设定的溢出值为止。如果尝试连接次数溢出,可能的情况有设备已关闭,超出范围,蓝牙通讯信号差甚至蓝牙设备被阻塞,所以此时安卓客户端应该停止继续连接,即结束伪连接。
只有尽可能缩短数据长度,压缩指令的精简性,才能尽可能缩短单次连接数据传输的时间,才能增加同时保持通讯的移动设备数量。因此有必要自定义一种高效的数据格式。
该自定义的蓝牙通信格式至少实现以下功能:
安卓客户端能获取节点的传感器数据,需要对传感器进行地址编号。
安卓客户端能向节点发送控制命令,需要定义一系列控制命令。
为了实现该自定义蓝牙格式,就要求在安卓客户端和节点服务端,两端分别编写相应的数据包装与解析代码。
并且,为了实现数据的高效传输,避免直接使用字符串的低效传输方式,而是将指令精简到每一个二进位。
下面是控制命令的一个片段:
主控制字:
字节0的0~2位:
000:请求传感器数据:3~7位最高位为1:请求所有传感器数据,无下一字节
最高位为0:下一字节为传感器ID。
·字节1{0~5位:传感器ID}
011:传感器控制命令:3~7位传感器ID
·字节1{0~5位:传感器控制命令一个传
感器支持最多支持64种命令
6~7位:数据类型
00:int(4B)01:float(4B)
10:String(19B)11:char(1B)}
·字节2(通过字节1的数据类型决定长度)
100:断开连接
111:传送手机信息:3~7位0000:手机号,0001:设备号IMEI。数据String类型,长度16个字节。
数值传输可使用int或者float类型传输而不是直接传送字符串,减少数据的长度。但同时,数据格式集成度越高,对数据的包装与解包装就越复杂。
Android 4.3(API Level 18)开始引入Bluetooth Low Energy(BLE,低功耗蓝牙)的核心功能并提供了相应的API,应用程序通过这些API扫描蓝牙设备、查询services、读写设备的characteristics(属性特征)等操作。
在BLE开发当中,存在两个角色,一个是中心角色(CENTRAL),一个是外设角色(PERIPHERAL);蓝牙设备或手机都可以单独作为CENTRAL或PERIPHERAL角色(较旧的版本当中手机无法作为外设提供数据)。外设角色的作用是为中心角色提供各种数据,中心角色可以扫描并接收多个外设角色数据,在本实施方式中,游客主动发起蓝牙扫描和连接,所以安卓端应作为中心角色,传感器节点蓝牙应该作为外设角色。BLE数据以服务(SERVICE)和特征(CHARACTERISTIC)的形式呈现。一个服务可以包含多个特征,可以把服务当成一个包裹,特征当成包裹里面的物品,包裹有包裹的名字,物品有物品的名字,一个包裹可以包含多个物品,或为空。如此一来,服务和特征的特性关系应该更加清晰,如此只需将外设将数据放入一个特征中,用手机来获取外设服务,取得其中的特征来获得数据。
BLE库主要的类:
BluetoothManager:蓝牙管理器,主要用于获取蓝牙适配器和管理所有和蓝牙相关的东西。Context类方法getSystemService(Context.BLUETOOTH_SERVICE)获取BluetoothManager实例。主要方法如下:
·getAdapter():获取BluetoothAdapter实例。
BluetoothAdapter:蓝牙适配器,每一台支持蓝牙功能的手机都有一个蓝牙适配器,一般来说,只有一个。主要方法如下:
·startLeScan(leScanCallback):开始扫描BLE外设,扫描到一个外设将回BluetoothAdapter.LeScanCallback的onLeScan(bluetoothDevice,rssi,scanRecord)方法。
bluetoothDevice即扫描到的外设。
·stopLeScan(leScanCallBack):停止扫描BLE外设。扫描不会自动停止,需要开启定时停止扫描。
·getRemoteDevice(address):使用已知的MAC地址实例化一个BluetoothDevice对象。
BluetoothDeivce:蓝牙设备,代表一个具体的蓝牙外设。主要方法如下:
·getName():获取蓝牙设备名称。
·getAddress():获取蓝牙设备地址(MAC)。
·connectGatt(context,autoConnect,mGattCallback):连接该设备(通过MAC地址),并返回一个BluetoothGatt对象。autoConnect为true失去连接后会自动尝试重连。mGattCallback为处理GATT通信的回调,与该设备的通信结果会调用该回调。
BluetoothGatt:通用属性协议,定义了BLE通讯的基本规则,就是通过把数据包装成服务和特征的约定过程。主要方法如下:
·discoverServices():连接成功后(BluetoothGattCallback的onConnectionStateChange(bluetoothGatt,status,newState)回调方法中,newState=STATE_CONNECTED,表示连接成功建立),调用discoverServices寻找该连接的所有可用服务。
·getServices():发现服务后(BluetoothGattCallback的onConnectionStateChange(bluetoothGatt,status,newState)回调方法中,newState=ACTION_GATT_SERVICES_DISCOVERED,表示寻找到服务),调用getServices()返回List<BluetoothGattService>的服务列表。
·writeCharacteristic(bluetoothGattCharacteristic):发送数据,数据被封装在特征Characteristic中。
·readCharacteristic(bluetoothGattCharacteristic):请求特征中的数据。
·setCharacteristicNotification(bluetoothGattCharacteristic,enabled):enabled=true开启数据订阅。远程端的bluetoothGattCharacteristic特征改变时,自动发送该特征的新数据给安卓端。本项目使用订阅的方法获取传感器数据。
enabled=false:关闭数据订阅。使用readCharacteristic方法主动请求数据。
·disconnect():断开连接
·close():释放该设备连接的资源,在不再使用该连接时务必尽早调用该方法。
BluetoothGattCallback:一个回调类,非常重要而且会频繁使用,用于回调GATT通信的各种状态和结果。回调方法如下:
·onConnectionStateChange(bluetoothGatt,status,newState):连接状态改变,系统会自动回调该方法。newState=STATE_CONNECTED表示连接成功产生的回调。
newState=STATE_DISCONNECTED表示失去连接产生的回调。
·onServicesDiscovered(bluetoothGatt,status):发现服务。
·onCharacteristicRead(bluetoothGatt,bluetoothGattCharacteristic,status):
请求数据回调。status=GATT_SUCCESS成功请求到数据。
·onCharacteristicChanged(bluetoothGatt,bluetoothGattCharacteristic,status):
订阅模式通知回调。远程端bluetoothGattCharacteristic特征改变,新数据包装在bluetoothGattCharacteristic特征中。
·onCharacteriscticWrite(bluetoothGatt,bluetoothGattCharacteristic,status):
成功发送的回调。
BluetoothGattService:服务,描述了一个BLE设备的一项基本功能,由零或多个特征组构成。主要方法如下:
·getUuid():获取服务的UUID编号。
·getCharacteristic():获取服务下的所有特征List<BluetoothGattCharacteristic>
BluetoothGattCharacteristic:特征,里面包含了一组或多组数据,是GATT通信中的最小数据单元。主要方法如下:
·getUuid():获取特征的UUID编号。
·getValue():获取该特征中的数据。
·setValue(bytes):将数据封装成特征发送。
设计框架:
(1)创建一个BluetoothLeService服务类管理BLE的初始化、连接、发送、接收回调、释放等操作。使用绑定服务的方式运行服务,通过Binder机制传递BluetoothLeService实例。BluetoothGattCallback回调方法在BluetoothLeService中实现,根据不同的回调结果发送不同的广播,通知自定义的广播接收器在服务外对回调数据进行处理。
(2)创建一个BLEDeviceInfo类记录远程蓝牙设备的连接情况。属性如下:
·Name:BLE设备名称,通过连接过程中BluetoothDeivce.getName()获取。
·MACAddress:BLE设备MAC地址,通过BluetoothDeivce.getAddress()获取。
·TryingToConnect:布尔类型。true代表正在尝试连接。多设备抢占式连接机制要求设备对连接失败的结果进行重连尝试。
·TryingToConnectCount:int类型。尝试连接计数。当尝试连接次数超过设定的门限值,将放弃尝试。典型的情况是远程端蓝牙关闭或游客离开蓝牙连接距离。
·Status:布尔类型。true代表第一次连接成功,开始定时请求。在第一次连接成功后设置为true。其他时候为false。
·Switch:布尔类型。true代表开启与该设备的连接任务,该变量与界面的连接开关按钮的状态绑定,当用户按下开启时,被设为true,按下关闭时,设为false,即该状态代表用户的控制。如果Switch为true时,Connected或Status为false,此时TryingToConnect被设置为true,进行重新重连尝试。如果定时任务或重连任务检测到Switch为false,将关闭与该设备的连接任务或放弃重连任务。
·Connected:布尔类型。true代表当前处在连接状况。当回调方法onConnectionStateChange(bluetoothGatt,status,newState)中newState=STATE_CONNECTED时,设置Connected为true。newState=STATE_DISCONNECTED时,设置Connected为false。
在设计的短连接要求Connected为true后经过短暂时间,安卓端应主动断开当前连接。
(3)创建一个BLECommunication类实现2.1中所阐述的自定义BLE通信机制和自定义数据格式。对外的方法如下:
·BLELoopTask:由Switch=true开启定时连接任务。第一次连接成功后,每隔一个周期时间与蓝牙设备建立一次短暂连接,连接时间比如是100ms,100ms后无论通信是否完成立刻断开。第一次连接失败或定时连接失败,会尝试重连,重连次数超过设定的门限值则放弃重连,退出定时连接任务。任务过程中会循环判断Switch的值,如果Switch=false,则退出定时连接任务。
·requestSensorData:以自定义的数据格式,发送传感器数据请求。
·sendIMEI:发送本机的IMEI号,全球每一部正规的手机都有独一无二的16位IMEI编号。
·sendPhone:发送本机的手机号。
·sendDisconnect:通知节点用户已关闭定时连接任务,将不再请求数据。用于后面会提到的cookie机制。
·parseRawData:解析接收到的原数据。
4.节点与上位机通信数据格式
与上位机的通信使用ASCII字符组成的字符串,这样的显式指令好处如下:
(1)上位机使用者可以直接输入指令
(2)发送和接收的指令可以直接向日志输出,记录所有的上位机通信历史
(3)指令的可读性更高
(4)单片机stm32可以直接使用printf函数发送,非常方便
(5)上位机端高级语言更容易处理字符串
缺点是:
(1)单片机端用C语言解析字符串比较复杂
(2)由于串口丢包或自动分包而导致的指令字符丢失或指令不完整的问题
指令格式(借鉴XML):
<属性名称:属性值>
可以多层嵌套:<属性名称:<子属性名称1:子属性值1><子属性名称2:子属性值2>>嵌套可以实现多个数据之间的绑定。
比如<SensorRSD:<Address:<%d:%d>><Data:%f>>将数据和其对应的地址绑定在一起。
下面是本实施方式采用的上位机通信指令结构:
%d为数字(字符串形式);%c为一个字节编码;%s为字符串;%f为浮点数
【上位机->下位机】
<SinkNodeLS:>:请求所有Sink节点地址。返回n个<SinkNodeLS:Address>。
<SensorLS:%d>:请求地址为%d的Sink节点下所有的传感器地址及名称。返回<SensorLS:<Address:<%d:%d>><Name:%s>>。
<SensorRSD:<%d:%d>>:请求地址为%d(Sink节点地址):%d(传感器地址)的数据。返回<SensorRSD:<Address:<%d:%d>><Data:%f>>
<SensorRASD:%d>:请求地址为%d的Sink节点下所有传感器的值。返回n个<SensorRSD:<Address:<%d:%d>><Data:%f>>
<Cookie:%c>:通知单片机释放编号为%c的cookie。%c为值为0~255的单个字节;%c为':',通知单片机清除所有cookie。
【下位机->上位机】
<GUEST:<IMEI:%s{15}><Cookie:%d>>:通知上位机发生新连接。%s{15}为15个字节的IMEI号,%d为给该IMEI所分配的cookie字符串格式
<GUEST:<PHONE:%s><Cookie:%d>>:通知上位机来自APP发来的手机。
<Connected:%d>:通知上位机成功收到来自编号%d的APP的任何请求(代表与该APP的连接正常)%d为cookie的字符串格式
<Disconnected:%d>:通知上位机收到编号%d的APP发来的断开连接指令
<SinkNodeLS:%d>:应答上位机地址为%d的Sink节点可用。
<SensorLS:<Address:<%d1:%d2>><Name:%s>>:应答上位机地址为%d1的Sink节点下的地址为%d2的传感器节点可用,其英文名称为%s。
<SensorRSD:<Address:<%d1:%d2>><Data:%f>>:应答上位机地址为%d1:%d2的传感器节点的数据。
其他信息:
【下位机->上位机】
CookieCleared:All:成功清除所有cookie。
CookieCleared:%d:成功清除指定cookie。
Invalid Command!:来自上位机的指令不正确。
下面通过一个图1来进一步说明本发明。
如图1所示,(1)APP客户端(2)传感器节点(服务端)(3)超时未响应尝试重连(4)请求BLE连接(5)响应服务列表(6)成功建立连接(7)超出单次连接限定时长未响应尝试重连(8)发送手机IMEI号(9)记录IMEI号,分配会话编号(10)分配编号(11)客户端收到编号断开BLE连接(12)服务端蓝牙通道被占用(13)连接断开(14)客户端进入会话状态(15)蓝牙通道可供其他APP连接(16)休眠固定周期(客户端管理)(17)携带编号请求数据(18)获取传感器数据(19)响应数据(20)客户端收到数据断开BLE连接(21)超出最大尝试重连次数(22)用户关闭会话(23)通知服务端释放编号,并断开连接(24)断开连接(25)退出会话流程(26)客户端退出会话状态一次会话完毕(27)释放收到的编号(28)服务端蓝牙通道被占用。
以安卓端发起定时连接任务到关闭的时间顺序进行说明:
----------------------首次连接-------------------------
>安卓端尝试进行第一次连接,把它称为首次连接请求。首次连接请求包括手机的IMEI号,每一部正规的手机的IMEI号是出厂设置的独一无二的编号,所以在首次连接请求中嵌入IMEI号作为客户端的识别码。
>节点收到IMEI号,分配一个未被占用的编号,回复给安卓端。同时将IMEI和对应的编号绑定在一起发送给上位机。
>上位机收到IMEI和编号,创建一个和该编号绑定的新线程,在线程中存储IMEI号和用户接入的时间,同时开启倒计时看门狗任务。
>安卓端收到包含编号的应答信号,代表首次连接成功,进入会话状态
----------------------会话状态-------------------------
>安卓端定时向节点建立连接,并发送传感器数据请求,将被分配的编号嵌入到请求帧头。
>节点收到传感器数据请求,提取帧头到编号发送给上位机,另一方面向手机端发送传感器数据。
>上位机收到编号,检索与该编号绑定的线程,刷新其中的倒计时。
分叉1:
>安卓用户关闭会话,发送关闭指令给服务器节点。
>节点收到关闭指令,在Cookie表中释放该Cookie,通知上位机关闭该编号的线程。
分叉2:
>上位机该编号绑定的线程长时间没有被刷新,计数到0,通知节点释放该编号,最后关闭该线程。
不难发现,本发明可以支持多部手机与节点同时保持通信的BLE抢占式定时短连接机制,完成自定义BLE数据格式,实现安卓端BLE中间层代码,完成节点与上位机通信。

Claims (8)

1.一种基于BLE的多客户端与单一外设节点会话保持方法,其特征在于,包括多个安卓客户端和单一蓝牙节点服务端,多个蓝牙节点设备作为客户端,多个安卓客户端和单一蓝牙节点服务端之间建立一种伪连接,即安卓客户端和单一蓝牙节点服务端在第一次连接成功后,开启一个定时连接任务,每隔一个周期时间安卓客户端和单一蓝牙节点服务端建立一次短暂连接,连接时间到达后无论通信是否完成立刻断开。
2.根据权利要求1所述的基于BLE的多客户端与单一外设节点会话保持方法,其特征在于,所述短暂连接的连接时间为100ms。
3.根据权利要求1所述的基于BLE的多客户端与单一外设节点会话保持方法,其特征在于,所述安卓客户端尝试连接时正好遇上蓝牙通道被占用,即安卓客户端每隔固定时间连续尝试连接,直到连接成功或者尝试连接次数达到设定的溢出值为止,其中,固定时间小于所述短暂连接的连接时间。
4.根据权利要求1所述的基于BLE的多客户端与单一外设节点会话保持方法,其特征在于,所述安卓客户端和单一蓝牙节点服务端连接后传输的数据格式满足以下要求:安卓客户端能对蓝牙节点服务端进行地址编号;安卓客户端能向单一蓝牙节点服务端发送控制命令。
5.根据权利要求1所述的基于BLE的多客户端与单一外设节点会话保持方法,其特征在于,所述安卓客户端与单一蓝牙节点服务端在进行首次连接时,安卓客户端发出的首次连接请求包括安卓客户端的ID标识码;单一蓝牙节点服务端收到ID标识码后,分配一个未被占用的编号,回复给安卓客户端,同时将ID标识码和对应的编号绑定在一起发送给上位机;上位机收到ID标识码和对应的编号后,创建一个和该编号绑定的新线程,在线程中存储有该ID标识码和用户接入的时间,同时开启倒计时看门狗任务;安卓客户端收到包含编号的应答信号后,进入会话状态。
6.根据权利要求5所述的基于BLE的多客户端与单一外设节点会话保持方法,其特征在于,所述安卓客户端与单一蓝牙节点服务端在进行会话时,安卓客户端定时向单一蓝牙节点服务端建立连接,并发送传感器数据请求,并将被分配的编号嵌入到请求帧头;节点收到传感器数据请求后,提取帧头到编号发送给上位机,另一方面向安卓客户端发送传感器数据;上位机收到编号后,检索与该编号绑定的线程,刷新其中的倒计时。
7.根据权利要求5所述的基于BLE的多客户端与单一外设节点会话保持方法,其特征在于,所述安卓客户端与单一蓝牙节点服务端在进行会话时,安卓客户端关闭会话,则发送关闭指令给单一蓝牙节点服务端;单一蓝牙节点服务端收到关闭指令后,在Cookie表中释放该Cookie,通知上位机关闭该编号的线程。
8.根据权利要求5所述的基于BLE的多客户端与单一外设节点会话保持方法,其特征在于,所述安卓客户端与单一蓝牙节点服务端在进行会话时,上位机将该编号绑定的线程长时间没有被刷新,倒计时看门狗任务的计数到0,通知单一蓝牙节点服务端释放该编号,最后关闭该线程。
CN201810586760.3A 2018-06-08 2018-06-08 一种基于ble的多客户端与单一外设节点会话保持方法 Active CN108811185B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810586760.3A CN108811185B (zh) 2018-06-08 2018-06-08 一种基于ble的多客户端与单一外设节点会话保持方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810586760.3A CN108811185B (zh) 2018-06-08 2018-06-08 一种基于ble的多客户端与单一外设节点会话保持方法

Publications (2)

Publication Number Publication Date
CN108811185A true CN108811185A (zh) 2018-11-13
CN108811185B CN108811185B (zh) 2021-10-26

Family

ID=64088907

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810586760.3A Active CN108811185B (zh) 2018-06-08 2018-06-08 一种基于ble的多客户端与单一外设节点会话保持方法

Country Status (1)

Country Link
CN (1) CN108811185B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104811895A (zh) * 2015-04-01 2015-07-29 广东小天才科技有限公司 一种低功耗蓝牙的连接方法及装置
CN105071839A (zh) * 2015-08-17 2015-11-18 贵阳朗玛信息技术股份有限公司 蓝牙设备通信方法及装置
CN105813227A (zh) * 2016-04-29 2016-07-27 江苏惠通集团有限责任公司 Ble语音数据传输方法及蓝牙设备
CN106303907A (zh) * 2015-05-28 2017-01-04 腾讯科技(深圳)有限公司 蓝牙通信方法及蓝牙通信装置
CN107493563A (zh) * 2017-08-31 2017-12-19 大唐终端技术有限公司 一种蓝牙实现群组对讲的方法及系统
US20180035247A1 (en) * 2016-07-27 2018-02-01 Texas Instruments Incorporated Event clustering for ble-mesh devices

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104811895A (zh) * 2015-04-01 2015-07-29 广东小天才科技有限公司 一种低功耗蓝牙的连接方法及装置
CN106303907A (zh) * 2015-05-28 2017-01-04 腾讯科技(深圳)有限公司 蓝牙通信方法及蓝牙通信装置
CN105071839A (zh) * 2015-08-17 2015-11-18 贵阳朗玛信息技术股份有限公司 蓝牙设备通信方法及装置
CN105813227A (zh) * 2016-04-29 2016-07-27 江苏惠通集团有限责任公司 Ble语音数据传输方法及蓝牙设备
US20180035247A1 (en) * 2016-07-27 2018-02-01 Texas Instruments Incorporated Event clustering for ble-mesh devices
CN107493563A (zh) * 2017-08-31 2017-12-19 大唐终端技术有限公司 一种蓝牙实现群组对讲的方法及系统

Also Published As

Publication number Publication date
CN108811185B (zh) 2021-10-26

Similar Documents

Publication Publication Date Title
US10200474B2 (en) Cross-protocol distributed cloud storage system and data management method based on operation control unit
CN105915420B (zh) 智能家居设备的添加方法及装置
CN105573129B (zh) 基于Cordova的跨平台智能家居移动终端
US6728244B1 (en) Communication node for enabling interworking of network using request/response based data transfer and network using non-request/response based data transfer
EP0637151A1 (en) A method and system for maintaining processing continuity to mobile computers in a wireless network
CN103220285B (zh) 泛在业务环境下基于RESTful接口的接入系统
CN107566229A (zh) 智能家居系统的分组控制方法
CN104052759A (zh) 一种物联网即加即用技术的实现系统
CN101458637B (zh) 一种实现进程通信的方法、装置及系统
CN204231419U (zh) 一种基于云技术及物联网技术的智能家居门铃系统
CN101350813A (zh) 一种为数字家电提供WiFi接入互联网的方法和装置
CN110166378A (zh) 一种用于配网终端调试维护的通信系统及方法
CN108512940A (zh) 一种物联网云平台终端通知推送方法
CN103763325B (zh) 构建ip安防产品开发环境的方法
CN208001293U (zh) 基于ZigBee和Raspberry Pi的智能家居系统
WO2011160341A1 (zh) 基于llrp协议的阅读器驱动装置、系统及方法
CN106878927B (zh) 多功能蓝牙设备及其连接方法
CN108811185A (zh) 一种基于ble的多客户端与单一外设节点会话保持方法
CN111555969A (zh) 一种基于Sub-G星型网络和mesh网络的网关
CN101404656A (zh) 一种与第三方智能设备协议通讯的软件接口设计方法
WO2021244548A1 (zh) 即时消息处理方法和装置
CN104639530B (zh) 一种星云网络通信协议、通信方法以及通信协议包
US20200285781A1 (en) Terminal and communication method
CN113810473A (zh) 一种物联网WiFi透传模组
CN102740013A (zh) 物联网电视机及物联网系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant